欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    C语言课程设计 学生信息管理系统.doc

    • 资源ID:2384705       资源大小:72.50KB        全文页数:13页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计 学生信息管理系统.doc

    C语言课程设计 实验题目 学生信息管理系统一、   引言 1熟练掌握C语言编程的应用的相关操作。 2综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。 3. 培养学生独立完成C语言程序课程设计的能力4运用结构体和链表编辑一个简单的学生基本信息管理系统,使之能够完成学生基本信息的创建、修改、添加、查询、删除、排序、输出、退出操作。5执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功为止。6执行运行操作,逐一对每个模块进行调试。直到全部程序运行成功为止。 二、 需求分析1该学生信息管理系统,完成学生基本信息的录入、修改、添加、查询、删除、排序、输出、退出操作。 每个模块的功能如下: A、录入模块能够完成学生姓名、性别、学号、年龄、出生年月、入学年月的输入。 B、更新模块中可以对学生信息进行添加、删除、修改。 C、打印模块可以输出以保存的所有学生信息。 D、查询模块能按学号或姓名查询一个学生的全部信息,并能显示该学生的全部信息,可以查询所有已经录入的学生信息。 E、排序模块将按照学生学号的顺序进行所有学生基本信息的排序并显示。 F、退出模块可直接退出此程序,结束操作。2创建该学生信息管理系统目的就是能够对学生基本信息进行创建、修改、添加、查询、删除、排序等功能,这样可以简化许多人工做起来很复杂的问题,它还可以重复使用,方便、快捷。三、概要设计1. 设计方案主 函 数 录入模块 查询模块 输出(打印)模块 添加模块 排序模块 修改模块 删除模块2、模块功能说明(1)录入模块:对定义的学生信息结构体变量,利用循环,将键入的学生 保存至指定文件,其中,学号、姓名、性别定义为字符型,年龄、出生年月,入学年月都定义为整型。 (2)添加模块:选择添加信息选项,按系统提示依次输入基本信息,完毕后,将询问是否继续。 (3)修改模块:选择修改选项,输入要修改学生的姓名,利用循环、判断语句,找到对应的信息,可对任意一项进行修改,完毕后,询问是够继续。 (4)删除模块:选择删除选项,可继续选择按学号或按姓名删除。选择后,将打印出其基本信息,询问是否确认删除。利用覆盖删除法,删除所选的项目。 (5)输出模块:利用读函数,读取键入的信息,出入编辑好的表格及所有学生信息。(6)查询模块:此模块有2种查询方式:按姓名查询、按学号查询。它也是通过循环判断查找,如果找到则显示该学生的全部信息,否则,将输出没有查到该学生信息,,给以提示。(7)排序模块:对学生的学号进行排序。利用选择排序法排序,最后保存结果。四、详细设计及运行结果流程图录入模块输入学生基本信息输入完毕返回主菜单否是主函数录入模块函数查询模块函数输出模块函数添加模块函数排序模块函数修改模块函数删除模块函数按姓名查询按学号查询按学号删除按所选项修改添加模块输入要添加人的学号输入添加学生的全部信息返回主菜单继续?是否删除模块按姓名删除按学号删除返回上一级菜单显 示删除人 的信 息返回菜单确认删除修改模块输入修改学生学号显示学生基本信息查询信息存在不存在学号姓名性别年龄入学年月选择修改项显示修改后信息返回主菜单是否继续是否排序模块排序方式按学号排序显示排序结果返回主界面查 询 模 块按 姓 名 查 询按 学 号 查 询输出所查询的学生信息返回主界面六调试情况,设计技巧及体会1.调试: 输入学生信息的情况,按照编写的程序进行进行调试,输出学生信息情况、添加、删除、查询(1按学号or2按姓名)、排序、修改等学生信息的管理的情况,退出程序。2.设计技巧: 通过运用C语言的语法规则,结构体和链表编写简单的学生信息管理系统。运用模块,编写各个小程序是指连接成一个完整的学生信息管理系统,使程序更加严谨,简洁,清晰,实用。3.体会: 我对自己这次的实验设计完成的还比较满意,这个学生管数组知识运用C+编写完成。此程序的不足之处是学生基本信息方面还不够完善,譬如没有家庭住址,电话号码等相关的学生基本信息。课程设计看似简单,实则不然。 它花费了近一周的时间写程序,以后的大多数时间就在调程序,从构思到结构大体框架再到细节。这让我明白“宏观主宰全局,细节决定成败”的道理,即使是小到一个分号也有可能使你的程序无法运行。写程序的时候必须很认真,欲速则不达。在实习中,我深刻体会到老师发挥的重要作用:C语言程序对我们来说比较难,在匆忙的学习中更是难上加难,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的。七、源程序(略,详见电子版实验报告)#include"stdio.h"#include"stdlib.h"#include"string.h"#define MAX 100#define N 3struct day_type /*日期结构体类型*/ int year; int month; ;struct student_type char num8; /*学号*/ char name20; /*姓名*/ char sex1; /*性别*/ int age; /*年龄*/ struct day_type birthday; /*出生年月*/ struct day_type comingday; /*入学年月*/ ;int number;int read_file(struct student_type students) FILE *fp; int i=0; if(fp=fopen("student.txt","rt")=NULL) printf("n 库存文件不存在,请创建!n"); return 0; while(!feof(fp) fread(&studentsi,sizeof(struct student_type),1,fp); if(studentsi.num=0) break; else i+; fclose(fp); return i;void save_file(struct student_type students,int sum) FILE *fp; int i; if(fp=fopen("student.txt","wt")=NULL) printf("读文件错误n"); return; for(i=0;i<sum;i+) if(fwrite(&studentsi,sizeof(struct student_type),1,fp)!=1) printf("写文件错误n"); fclose(fp); /*输入模块*/int input(struct student_type students) int i=0; system("cls"); printf("n请输入要录入的学生的个数(最多%d个):n",MAX); scanf("%d",&number); printf("nn 录入学生信息 (最多录入%d个)n",number); printf(" -n"); while(i<number) printf("n 第%d个学生",i+1); printf("n 学生学号:");scanf("%s",studentsi.num);if( studentsi.num=0) break; printf("n 学生姓名:"); scanf("%s",studentsi.name); printf("n 学生性别(男为m,女为w):"); scanf("%s",studentsi.sex); printf("n 学生年龄:"); scanf("%d",&studentsi.age); printf("n 学生出生年月(yyyy-mm):");scanf("%d-%d",&studentsi.birthday.year,&studentsi.birthday.month); printf("n 学生入学年月(yyyy-mm):"); scanf("%d-%d",&studentsi.comingday.year,&studentsi.comingday.month); i+; printf("n %d个学生信息录入完毕!n",i); getchar(); printf("n 按回车键返回主菜单!"); getchar(); return i; /*输出模块*/void output(struct student_type students,int sum) FILE *fp; int i=0; system("cls"); fp=fopen("student.txt","rt"); printf("n -学生信息表- nn"); printf("学生学号-学生姓名-学生性别-学生年龄-出生年月(yyyy-mm)-入学年月(yyyy-mm)n"); printf("-n");do fread(&studentsi,sizeof(struct student_type),1,fp);if(studentsi.num!=0) printf("%6s %8s %3s %4d %10d-%2d %10d-%2dn",studentsi.num,studentsi.name,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.birthday.month,studentsi.comingday.year,studentsi.comingday.month); printf("-n"); i+; while(i<sum); getchar(); printf("按回车键返回主菜单"); getchar(); fclose(fp);void modify(struct student_type students,int sum) /*修改模块*/ int i=0,choice,flag; char modify_num8; do system("cls"); printf("n 输入要修改的学生的学号:");scanf("%s",modify_num);for(i=0;i<sum;i+)if(!strcmp(studentsi.num,modify_num) printf("n -学生信息- n "); printf("学生学号-学生姓名-学生性别-学生年龄-出生年月(yyyy-mm)-入学年月(yyyy-mm)n"); printf("-n"); printf("%6s %8s %3s %4d %10d-%2d %10d-%2dn",studentsi.num,studentsi.name,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.birthday.month,studentsi.comingday.year,studentsi.comingday.month); printf("1.学生学号 2.学生姓名 3.学生性别 4.学生年龄 5.出生年月(yyyy-mm) 6.入学年月(yyyy-mm)n"); printf("请输入要修改项的编号(选择1-6):"); scanf("%d",&choice); switch(choice) case 1: printf("n 输入修改后的学生学号:"); scanf("%s",studentsi.num); break; case 2: printf("n 输入修改后的学生姓名:"); scanf("%s",studentsi.name); break; case 3: printf("n 输入修改后的学生性别:"); scanf("%s",studentsi.sex); break; case 4: printf("n 输入修改后的学生年龄:"); scanf("%d",&studentsi.age); break; case 5: printf("n 输入修改后的学生出生年月(yyyy-mm):"); scanf("%d-%d",&studentsi.birthday.year,&studentsi.birthday.month); break; case 6: printf("n 输入修改后的学生入学年月(yyyy-mm):"); scanf("%d-%d",&studentsi.comingday.year,&studentsi.comingday.month); break; printf("n -学生信息-(修改后) n "); printf("学生学号-学生姓名-学生性别-学生年龄-出生年月(yyyy-mm)-入学年月(yyyy-mm)n"); printf("-n"); printf("%6s %8s %3s %4d %10d-%2d %10d-%2dn",studentsi.num,studentsi.name,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.birthday.month,studentsi.comingday.year,studentsi.comingday.month); getchar(); break; if(i=sum) printf("n 该学生不存在"); getchar(); save_file(students,sum); printf("nn 继续修改吗?( Y/N(选择N则返回主菜单) )"); choice=getchar();if(choice='Y'|choice='y') flag=1; printf("n 继续修改!n"); else flag=0;while(flag=1); printf("n");void reserch(struct student_type students,int sum) /*查询模块*/ int i=0,choice,flag; char reserch8; do system("cls"); printf("n 请选择查询方式(1或2): 1.按学号 2.按姓名n");scanf("%d",&choice);switch(choice) case 1: printf("n 请输入要查询的学生的学号:"); scanf("%s",reserch); for(i=0;i<sum;i+) if(!strcmp(studentsi.num,reserch) printf("n -学生信息- n "); printf("学生学号-学生姓名-学生性别-学生年龄-出生年月(yyyy-mm)-入学年月(yyyy-mm)n"); printf("-n"); printf("%6s %8s %3s %4d %10d-%2d %10d-%2dn",studentsi.num,studentsi.name,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.birthday.month,studentsi.comingday.year,studentsi.comingday.month); getchar(); break;break; case 2: printf("n 请输入要查询的学生的姓名:"); scanf("%s",reserch); for(i=0;i<sum;i+) if(!strcmp(studentsi.name,reserch) printf("n -学生信息- n "); printf("学生学号-学生姓名-学生性别-学生年龄-出生年月(yyyy-mm)-入学年月(yyyy-mm)n"); printf("-n"); printf("%6s %8s %3s %4d %10d-%2d %10d-%2dn",studentsi.num,studentsi.name,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.birthday.month,studentsi.comingday.year,studentsi.comingday.month); getchar(); break;break;if(i=sum) printf("n 该学生不存在"); getchar();printf("nn 继续查询吗?( Y/N(选择N则返回主菜单) )");choice=getchar();if(choice='Y'|choice='y') flag=1; printf("n 继续修改!n"); else flag=0;while(flag=1); printf("n");void sort(struct student_type students,int sum) /*排序模块*/ int i,j; struct student_type t; system("cls"); for(i=0;i<sum-1;i+) for(j=i+1;j<sum;j+) if(strcmp(studentsi.num,studentsj.num)>0) t=studentsi; studentsi=studentsj; studentsj=t; printf("n按学号排序:nn"); printf("n -学生信息表- nn"); printf("学生学号-学生姓名-学生性别-学生年龄-出生年月(yyyy-mm)-入学年月(yyyy-mm)n"); printf("-n"); for(i=0;i<sum;i+) printf("%6s %8s %3s %4d %10d-%2d %10d-%2dn",studentsi.num,studentsi.name,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.birthday.month,studentsi.comingday.year,studentsi.comingday.month); printf("-n"); getchar(); printf("n 按回车键返回主菜单!"); getchar();int del(struct student_type students,int sum) /*删除模块*/ int i,j,k=0; char del_num8; system("cls"); printf("请输入需要删除的学生信息的学号nn"); scanf("%s",del_num); for(i=0;i<sum;i+) if(!strcmp(studentsi.num,del_num) for(j=i;j<sum-1;j+) studentsj=studentsj+1;else k+; if(k=sum) printf("该学生不存在n"); getchar(); printf("按回车键返回主菜单"); getchar();return(sum); else save_file(students,sum);printf("删除成功:n"); getchar(); printf("n 按回车键返回主菜单!"); getchar(); return(sum-1); /*添加模块*/void add(struct student_type students,int *sum) int i,flag; char choice; system("cls"); i=(*sum); do if(i<MAX) printf(" 请输入要添加的学生的信息:n"); printf("n 学生学号:");scanf("%s",studentsi.num);if(studentsi.num=0) break; printf("n 学生姓名:"); scanf("%s",studentsi.name); printf("n 学生性别(男为m,女为w):"); scanf("%s",studentsi.sex); printf("n 学生年龄:"); scanf("%d",&studentsi.age); printf("n 学生出生年月(yyyy-mm):"); scanf("%d-%d",&studentsi.birthday.year,&studentsi.birthday.month); printf("n 学生入学年月(yyyy-mm):"); scanf("%d-%d",&studentsi.comingday.year,&studentsi.comingday.month); (*sum)+; i=(*sum); getchar(); printf("n 成功添加一个学生的信息!n"); getchar(); printf("n 是否继续添加?( Y/N(选择N则返回主菜单) )n"); choice=getchar(); if(choice='Y'|choice='y') flag=1; printf("n 继续添加!n"); else flag=0; else printf("n 返回主菜单n"); break; while(flag=1);void main() int choice,sum; /system("color ") struct student_type studentsMAX; sum=read_file(students)-1; if(sum=0) printf("按回车键开始录入基本库存信息!"); getchar();sum=input(students); save_file(students,sum); do system("cls"); printf("n *学生信息管理系统*nn");printf(" 1.重新录入学生信息 nn");printf(" 2.查询学生信息 nn");printf(" 3.输出学生信息 nn");printf(" 4.添加学生信息 nn");printf(" 5.排序学生信息 nn");printf(" 6.修改学生信息 nn");printf(" 7.删除学生信息 nn");printf(" 0.退出系统 nn");printf(" 请选择您要执行的操作(0-7)n");scanf("%d",&choice);switch(choice) case 1: sum=input(students); save_file(students,sum); break; case 2: reserch(students,sum); break; case 3: save_file(students,sum); output(students,sum); break; case 4: add(students,&sum); save_file(students,sum); break; case 5: sort(students,sum); break; case 6: modify(students,sum); save_file(students,sum); break; case 7: sum=del(students,sum); save_file(students,sum); break; case 0: break; while(choice!=0); save_file(students,sum); 八、参考文献 王曙燕.C语言程序设计.北京:科技出版社.2008

    注意事项

    本文(C语言课程设计 学生信息管理系统.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开