《学生学籍管理系统C课程设计报告-正文.pdf》由会员分享,可在线阅读,更多相关《学生学籍管理系统C课程设计报告-正文.pdf(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 目 录 1 前言.1 2 需求分析.1 2.1 课程设计目的.1 2.2 课程设计任务.1 2.3 设计环境.1 2.4 开发语言.2 3 分析和设计.2 3.1 模块设计.3 3.2 系统流程图.3 3.3 主要模块的流程图.4 4 具体代码实现.6 5 课程设计总结.21 5.1 程序运行结果.21 5.2 课程设计体会.27 参考文献.28 致 谢.28 1 1 前言 现代科学飞速发展,世界也不断的变化,人类的生活随着科技的发展也发生着惊天动地的变化。作为新时代的大学生,我们应该努力学习科学文化知识,以适应社会的发展要求。以现代化的科学知识为祖国做贡献。计算机 C 语言课程设计是一门实
2、践性很强的课程,因此,我们可以从这里出发,将实践教学与理论教学达到密切结合。根据实际题目,要求我小组编写一个程序来,用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。通过一个结构体数组来存放输入的每一位同学的信息(包括学号,姓名,性别,年龄,籍贯,系别,专业,班级),然后将其信息存入文件中。输入一个学号查询该同学的信息,并显示在屏幕上。2 需求分析 2.1 课程设计目的 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。2.2 课程设计任务(1)系统以菜单方式工作。(2)登记学生的学号,姓名,性别,年龄,籍
3、贯,系别,专业,班级;修改已知学号的学生信息;(3)删除已知学号的学生信息;(4)查找已知学号的学生信息;(5)显示同一系学生信息和统计人数;(6)显示所有学生信息和统计人数人数;2.3 设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C+或TC集成开发环境 2 2.4 开发语言 C语言 3 分析和设计 分析:用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。(1)以系统以菜单方式工作,所以要有一个选项菜单。printf(*n);printf(*请选择相应的功能 *n);printf(*1-注册 *n);
4、printf(*2-修改学生信息 *n);printf(*3-删除学生信息 *n);printf(*4-添加学生信息 *n);printf(*5-查找学生信息 *n);printf(*6-统计学生信息 *n);printf(*7-显示学生信息 *n);printf(*8-退出系统 *n);printf(*n);输出一个菜单。(2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级 定义函数 ZHUCE(),用来输入学生信息,将信息存入 123.txt 中,int i=1;struct student temp;FILE*fp;fp=fopen(F:/123.txt,w);/*指针指向文件
5、 123.txt*/void save(struct student student)FILE*fp=NULL;fp=fopen(F:/123.txt,ab+);fwrite(student,sizeof(struct student),1,fp);fclose(fp);/*将信息保存入 123.txt 中*/(3)按学号查找学生信息 printf(n 请输入要查找学生信息的学号:);gets(tempXUEHAO);while(feof(fp)=0)fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,&temp.XUEHAO,&temp.XINGMING,&
6、temp.XINGBIE,&temp.NIANLING,&temp.JIGUAN,&temp.ZHUANYE,&tem 3 p.BANJI,&temp.XIBIE);if(strcmp(tempXUEHAO,temp.XUEHAO)=0)/*根据输入的学号从文件中诸葛查找符合条件的*/.3.1 模块设计 定义结构体类型 struct student 表示学生信息(包括:学号,姓名,性别,年龄,籍贯,系别,专业,班级),定义一个结构体数组 stud,用来存放学生的信息,在 F盘建一 123.txt 用储存学生信息。定义函数 CAIDAN(),用来输出菜单。定义函数 ZHUCE(),用来输入学生信
7、息,将信息存入 123.txt 中。定义函数 XIUGAI(),用来修改学生信息,将信息存入 123.txt 中。定义函数 SHANCHU(),用来删除学生信息。定义函数 CHAZHO(),用来查找学生信息,可以通过学号查找、姓名超找。3.2 系统流程图 +菜单 注册 修改学生信息 删除学生信息 查找学生信息 添加学生信息 统计学生信息 统计学生信息 退出系统 4 系统流程图 3.3 主要模块的流程图 main 函数 charechoose,yes printf(“n%c?.CAIDAN();choose=8 break;Printf(“n 要继 yes_no=getch();p yes_no
8、!=Y yes_no!=Y Y N N N Y 5 Y N N Y N N Y 注册学生信息 printf(“n 打开?inti=1 fp=NULL return;printf(“n 请输?gets(temp.XUEHAO printf(“姓名(fprintf(fp.”%5.stremp(temp temp.XUE gets(temp.XHEH printf(“姓名(.strcmp(tremp student=temp 6 4 具体代码实现#include#include#include#include#include#define N 100 struct student char XUEH
9、AO20;char XINGMING10;char XINGBIE4;char NIANLING10;char JIGUAN10;char ZHUANYE10;char BANJI6;char XIBIE20;student;void CAIDAN();void ZHUCE();void XIUGAI();void SHANCHU();void del_XUEHAO(FILE*fp);void del_XINGMING(FILE*fp);void CHAZHAO();void sch_XUEHAO(FILE*fp);void sch_XINGMING(FILE*fp);void TONGJI(
10、);void XIANSHI();void TIANJIA();void save(struct student student);main()7 char choose,yes_no;do CAIDAN();printf(n 请输入序号:(18);choose=getch();system(cls);switch(choose)case1:printf(%c,choose);ZHUCE();break;case2:printf(%c,choose);XIUGAI();break;case3:printf(%c,choose);SHANCHU();break;case4:printf(%c,c
11、hoose);TIANJIA();break;case5:printf(%c,choose);CHAZHAO();break;case6:printf(%c,choose);TONGJI();break;case7:printf(%c,choose);XIANSHI();break;case8:break;default:printf(n%c 序号不对!n,choose);if(choose=8)break;printf(n 要继续选择吗?(Y/N)n);do yes_no=getch();printf(%c,yes_no);while(yes_no!=Y&yes_no!=y&yes_no!=
12、N&yes_no!=n);while(yes_no=Y|yes_no=y);void CAIDAN()system(cls);printf(*n);printf(*请选择相应的功能 8*n);printf(*1-注册 *n);printf(*2-修改学生信息 *n);printf(*3-删除学生信息 *n);printf(*4-添加学生信息 *n);printf(*5-查找学生信息 *n);printf(*6-统计学生信息 *n);printf(*7-显示学生信息 *n);printf(*8-退出系统 *n);printf(*n);/*定义学生信息注册的函数*/void ZHUCE()int
13、i=1;struct student temp;FILE*fp;fp=fopen(F:/123.txt,w);if(fp=NULL)printf(n 打开文件失败!n);return;printf(n 请输入第 1 个学生信息:n);printf(学号(用#结束输入):);do gets(temp.XUEHAO);9 while(strcmp(temp.XUEHAO,)=0);printf(姓名(用#结束输入):);gets(temp.XINGMING);printf(性别(用#结束输入):);gets(temp.XINGBIE);printf(年龄(用#结束输入):);gets(temp.N
14、IANLING);printf(籍贯(用#结束输入):);gets(temp.JIGUAN);printf(专业(用#结束输入):);gets(temp.ZHUANYE);printf(班级(用#结束输入):);gets(temp.BANJI);printf(系别(用#结束输入):);gets(temp.XIBIE);while(temp.XUEHAO0!=#&temp.XINGMING0!=#&temp.XINGBIE0!=#&temp.NIANLING0!=#&temp.JIGUAN0!=#&temp.ZHUANYE0!=#&temp.BANJI0!=#&temp.XIBIE0!=#&te
15、mp.XIBIE)fprintf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,temp.XUEHAO,temp.XINGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHUANYE,temp.BANJI,temp.XIBIE,temp);i+;printf(n 请输入第%d 个学生信息:n,i);printf(学号(用#结束输入):);do gets(temp.XUEHAO);while(strcmp(temp.XUEHAO,)=0);printf(姓名(用#结束输入):);gets(temp.XINGMING);
16、printf(性别(用#结束输入):);gets(temp.XINGBIE);printf(年龄(用#结束输入):);gets(temp.NIANLING);printf(籍贯(用#结束输入):);gets(temp.JIGUAN);printf(专业(用#结束输入):);gets(temp.ZHUANYE);printf(班级(用#结束输入):);gets(temp.BANJI);printf(系别(用#结束输入):);gets(temp.XIBIE);student=temp;10 save(&temp);fclose(fp);/*定义保存函数*/void save(struct stud
17、ent student)FILE*fp=NULL;fp=fopen(F:/123.txt,ab+);fwrite(student,sizeof(struct student),1,fp);fclose(fp);/*定义查找学生信息的函数*/void CHAZHAO()char c;FILE*fp;fp=fopen(F:/123.txt,r);if(fp=NULL)printf(n 打开文件失败!n);return;printf(n 按学号查找(1),还是按姓名查找(2)?);c=getch();putch(c);if(c=1)sch_XUEHAO(fp);else if(c=2)sch_XIN
18、GMING(fp);else printf(n 非法字符!n);fclose(fp);/*定义按学号查找学生信息的函数*/void sch_XUEHAO(FILE*fp)int flag=0,n=0;char tempXUEHAO20;11 struct student temp;printf(n 请输入要查找学生信息的学号:);gets(tempXUEHAO);while(feof(fp)=0)fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,&temp.XUEHAO,&temp.XINGMING,&temp.XINGBIE,&temp.NIANLING,
19、&temp.JIGUAN,&temp.ZHUANYE,&temp.BANJI,&temp.XIBIE);if(strcmp(tempXUEHAO,temp.XUEHAO)=0)if(flag=0)printf(学号 姓名 姓别 年龄 籍贯 专业 班级 系别n);printf(%5s%10s%10s%10s%10s%10s%10s%10sn,temp.XUEHAO,temp.XINGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHUANYE,temp.BANJI,temp.XIBIE);flag=1;n+;if(n=0)printf(n 文件
20、中无此信息!n);else if(flag=0)printf(n 文件中无此人!n);/*定义按姓名查找学生信息的函数*/void sch_XINGMING(FILE*fp)int flag=0,n=0;char tempXINGMING10;struct student temp;printf(n 请输入要查找学生信息的姓名:);gets(tempXINGMING);while(feof(fp)=0)12 fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,&temp.XUEHAO,&temp.XINGMING,&temp.XINGBIE,&temp.NIA
21、NLING,&temp.JIGUAN,&temp.ZHUANYE,&temp.BANJI,&temp.XIBIE);if(strcmp(tempXINGMING,temp.XINGMING)=0)if(flag=0)printf(学号 姓名 姓别 年龄 籍贯 专业 班级 系别n);printf(%5s%10s%10s%10s%10s%10s%10s%10sn,temp.XUEHAO,temp.XINGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHUANYE,temp.BANJI,temp.XIBIE);flag=1;n+;if(n=0)p
22、rintf(n 文件中无此信息!n);else if(flag=0)printf(n 文件中无此人!n);/*定义删除学生信息的函数*/void SHANCHU()char c;FILE*fp;fp=fopen(F:/123.txt,r);if(fp=NULL)printf(n 文件打开失败!n);return;printf(n 按学号删除(1),还是按姓名删除(2)?);c=getch();putch(c);if(c=1)del_XUEHAO(fp);else if(c=2)del_XINGMING(fp);else printf(n 非法字符!n);13 /*定义按学号删除学生信息的函数*
23、/void del_XUEHAO(FILE*fp)char tempXUEHAO20;int n=0,i=0,k;struct student stuN;while(feof(fp)=0)fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);i+;n+;fclose(fp);printf(n 请输入要删除的学生信息的学号:);scanf(%s,tempXUEHAO
24、);printf(删除成功!);for(i=0;in;i+)if(strcmp(tempXUEHAO,stui.XUEHAO)=0)break;if(in)for(k=i;kn;k+)stuk=stuk+1;else printf(n 无此人!n);fp=fopen(F:/123.txt,w);if(fp=NULL)printf(n 文件打开失败!n);return;for(i=0;in-1;i+)fprintf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,st
25、ui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);14 /*定义按姓名删除学生信息的函数*/void del_XINGMING(FILE*fp)char tempXINGMING10;int n=0,i=0,k;struct student stuN;while(feof(fp)=0)fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui
26、.XIBIE);i+;n+;fclose(fp);printf(n 请输入要删除的学生信息的姓名:);scanf(%s,tempXINGMING);printf(删除成功!);for(i=0;in;i+)if(strcmp(tempXINGMING,stui.XINGMING)=0)break;if(in)for(k=i;kn;k+)stuk=stuk+1;else printf(n 无此人!n);fp=fopen(G:/123.txt,w);if(fp=NULL)printf(n 文件打开失败!n);return;for(i=0;in-1;i+)fprintf(fp,%5s%10s%10s%
27、10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);15/*定义添加学生信息的函数*/void TIANJIA()char c;int n=0,i=0;struct student temp,stuN;FILE*fp;fp=fopen(F:/123.txt,r);if(fp=NULL)printf(n 打开文件失败!n);return;while(feof(fp)=0)fscanf(fp,%5s%10s%
28、10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);i+;n+;fclose(fp);for(i=0;in;i+)printf(n%s%s%s%s%s%s%s%sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);do printf(n 请输入新
29、学生信息的学号:);do scanf(%s,temp.XUEHAO);while(strcmp(temp.XUEHAO,)=0);printf(请输入新学生信息的姓名:);scanf(%s,temp.XINGMING);printf(请输入新学生信息的性别:);scanf(%s,temp.XINGBIE);printf(请输入新学生信息的年龄:);scanf(%s,temp.NIANLING);16 printf(请输入新学生信息的籍贯:);scanf(%s,temp.JIGUAN);printf(请输入新学生信息的专业:);scanf(%s,temp.ZHUANYE);printf(请输入新
30、学生信息的班级:);scanf(%s,temp.BANJI);printf(请输入新学生信息的系别:);scanf(%s,temp.XIBIE);for(i=0;in;i+)if(strcmp(temp.XUEHAO,stui.XUEHAO)=0)printf(n 学号重复,要重新输入吗(Y/N)?);do c=getch();putch(c);while(c!=Y&c!=y&c!=N&c!=n);putchar(n);break;if(i=n)stui=temp;break;while(c=Y|c=y);fp=fopen(G:/123.txt,w);if(fp=NULL)printf(n 文
31、件打开失败!n);return;for(i=0;i=n;i+)fprintf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);fclose(fp);/*定义修改学生信息的函数*/void XIUGAI()char c;int n=0,i=0;17 struct student*find,temp,stuN,*p;FILE*fp;fp=fopen(F:/123.txt,rb
32、);if(fp=NULL)printf(n 打开文件失败!n);return;while(feof(fp)=0)fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);i+;n+;fclose(fp);if(n=0)printf(n 文件中无此信息!n);return;printf(n 请 输 入 要 修 改 的 学 生 信 息 的 学 号:);scanf(%s,t
33、emp.XUEHAO);for(p=stu;pXUEHAO)=0)find=p;break;if(p=stu+n)printf(n 无此信息!n);return;do printf(n 请输入新学生信息的学号:);do scanf(%s,temp.XUEHAO);while(strcmp(temp.XUEHAO,)=0);printf(请输入新学生信息的姓名:);scanf(%s,temp.XINGMING);printf(请输入新学生信息的性别:);scanf(%s,temp.XINGBIE);printf(请输入新学生信息的年龄:);scanf(%s,temp.NIANLING);18 p
34、rintf(请输入新学生信息的籍贯:);scanf(%s,temp.JIGUAN);printf(请输入新学生信息的专业:);scanf(%s,temp.ZHUANYE);printf(请输入新学生信息的班级:);scanf(%s,temp.BANJI);printf(请输入新学生信息的系别:);scanf(%s,temp.XIBIE);for(p=stu;pXUEHAO)=0&p!=find)printf(n 学号重复,要重新输入吗(Y/N)?);do c=getch();putch(c);while(c!=Y&c!=y&c!=N&c!=n);putchar(n);break;if(p=st
35、u+n)*find=temp;break;while(c=Y|c=y);fp=fopen(123.dat,wb);if(fp=NULL)printf(n 打开文件失败!n);return;for(p=stu;pXUEHAO,p-XINGMING,p-XINGBIE,p-NIANLING,p-JIGUAN,p-ZHUANYE,p-XIBIE,p-BANJI);printf(修改成功!);fclose(fp);/*定义显示学生信息的函数*/void XIANSHI()int n=0,i=0;struct student stuN;19 FILE*fp;fp=fopen(F:/123.txt,r);
36、if(fp=NULL)printf(n 打开文件失败!n);return;printf(nn 学号 姓名 姓别 年龄 籍贯 专业 班级 系别n);while(feof(fp)=0)fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);+i;+n;fclose(fp);if(n=0)printf(n 文件中无此信息!n);else for(i=0;in;i+)pri
37、ntf(%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);printf(nn 文件中共有%d 个信息!n,n);/*定义在同一个系别的学生人数的函数*/void TONGJI()int i=0,n=0,k=0;char tempXIBIE10;struct student stuN;FILE*fp;fp=fopen(F:/123.txt,r);if(fp=NULL)printf(
38、n 打开文件失败!n);return;while(feof(fp)=0)20 fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,&stui.XUEHAO,&stui.XINGMING,&stui.XINGBIE,&stui.NIANLING,&stui.JIGUAN,&stui.ZHUANYE,&stui.XIBIE,&stui.BANJI);i+;n+;fclose(fp);printf(nn 请输入系别名称:);scanf(%s,tempXIBIE);printf(nn 学号 姓名 姓别 年龄 籍贯 专业 班级 系别n);for(i=0;in;i+)if
39、(strcmp(tempXIBIE,stui.XIBIE)=0)printf(n%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.XINGMING,stui.XINGBIE,stui.NIANLING,stui.JIGUAN,stui.ZHUANYE,stui.BANJI,stui.XIBIE);k+;printf(nn 共有%d 个学生在这个学院!n,k);21 5 课程设计总结 5.1 程序运行结果 菜单 22 注册学生信息 23 显示所有学生信息和统计人数 24 显示同一系学生信息和统计人数 25 修改学生信息 26 添加学生学信息 27
40、 查找学生信息 5.2 课程设计体会 通过这次的 C 语言课程设计,我获益匪浅。首先最深的是课本知识学的再好,也需要实际的检验。我从这次的课程中我认识到了自己的许多不足,满以为自己学的很好,可是到实际运用时,才发现自己这也不行,那里不足。让我深刻认识到自己所学知识必须运用于实际,让实际来检验自己的水平。同时这次课程设计也给了我们一个真正展示自我的机会,我通过自己的努力和老师、朋友的帮助顺利完成了这次课程设计 28 参考文献 1 张福祥.C 语言程序设计M.沈阳:辽宁大学出版社,2010.1 2 张福祥,王萌 C 语言程序设计习题解答与实验实训M 沈阳:辽宁大学出版社,2010.1 3 牛莉,刘远军等计算机等级考试辅导教程M北京:中国铁道出版社,2008 致 谢 感谢在此次课程设计中给我帮助的同学、朋友,感谢指导老师董老师的耐心指导!