C语言课程设计报告---学生成绩管理系统.docx

上传人:飞****2 文档编号:15212027 上传时间:2022-05-11 格式:DOCX 页数:13 大小:18.68KB
返回 下载 相关 举报
C语言课程设计报告---学生成绩管理系统.docx_第1页
第1页 / 共13页
C语言课程设计报告---学生成绩管理系统.docx_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《C语言课程设计报告---学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告---学生成绩管理系统.docx(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上C语言课程设计报告:学生成绩管理系统系统需求一、 当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息. 二、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。三、新生插入 :通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。 四、输出全部学生信息和全部学生成绩。五、退出系统.六、附加说

2、明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。总体设计一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。 2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。 3、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。4、输出学生的信息以及成绩:通过学生的姓名

3、来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。 5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。二、系统主模块结构图: 详细设计一、 界面设计此系统界面采用图形和数字化菜单设计。主界面设计如下: 学生成绩管理系统 请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状

4、况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、 数据结构设计: 程序设计中用到的结构体类型: 学生信息结构体类型:typedef struct student char nameMAX; int numMAX; char sexMAX; int chinese; int mathematic; int english; int computer; struct student *next; 程序代码:/原始密码是#includestdio.h#includestddef.h#includestddef.h#includestring.h#define MAX

5、 10typedef struct student /*定义结构体*/ char nameMAX; /*姓名*/ int numMAX; /* 学号*/ char sexMAX; /*性别*/ int chinese; /*语文*/ int mathematic; /* 数学*/ int english; /*英语*/ int computer; /*计算机*/ struct student *next; /*结构体指针*/ stu;stu *head; /*头指针*/void print() /*显示或打印函数*/ system(cls); printf(tttScore Manage Sy

6、stemn); /*成绩管理系统*/ printf(Enter Recordt); /*输入数据*/ printf(Displayt); /*显示*/ printf(Insertt); /*插入数据*/ printf(Questt); /*访问数据*/ printf(Updatet); /*以前数据*/ printf(Savet); /*保留数据*/ printf(Fresht); /*更新数据*/ printf(Chinese Averaget); /*语文平均成绩*/ printf(Math Averaget); /*数学平均成绩*/ printf(English Averaget); /

7、*英语平均成绩*/ printf(Computer Averaget); /*计算机平均成绩*/ printf(Quittn); /*退出*/ void cin(stu *p1) /*输入相关数据的函数*/ printf(Enter name:n); scanf(%s,&p1-name); printf(Enter num:n); scanf(%d,&p1-num); printf(Enter sex:n); scanf(%s,&p1-sex); printf(Enter score:n); printf(Enter chinese:n); scanf(%d,&p1-chinese); pri

8、ntf(Enter math:n); scanf(%d,&p1-mathematic); printf(Enter English:n); scanf(%d,&p1-english); printf(Enter Computer:n); scanf(%d,&p1-computer); stu *cindata() /*其他数据是否继续输入的函数*/ stu *p1,*p2; int i=1; char ch; p1=(stu *)malloc(sizeof(stu); head=p1; while(i) cin(p1); printf(Do you Want to Continue?yes o

9、r no); /*是否继续输入数据*/ ch=getchar(); ch=getchar(); if(ch=n|ch=N) i=0; p1-next=NULL; else p2=p1; p1=(stu *)malloc(sizeof(stu); p2-next=p1; return(p1-next);stu *lookdata(stu *p1) /*查看数据的函数*/ while(p1!=NULL) printf(Num:%dt,p1-num); printf(Name:%st,p1-name); printf(Sex:%st,p1-sex); printf(n); printf(Chines

10、e:%dt,p1-chinese); printf(Math:%dt,p1-mathematic); printf(English:%dt,p1-english); printf(Computer:%dt,p1-computer); printf(n); p1=p1-next; return p1; void insert() /*通过比较学号来插入数据的函数*/ stu *p1,*p3,*p2; char ch; p1=head; p3=(stu *)malloc(sizeof(stu); p3-next=NULL; if(head=NULL) head=p3; return; cin(p3

11、); while(p1!=NULL&(p1-numnum) /*通过学号的比较来插入*/ p2=p1;p1=p1-next; if(p2=head) p3-next=head; head=p3; return; p3-next=p1; p2-next=p3; find(stu *p2) /*通过姓名查找查看数据的函数*/ char name20; int b=0; printf(Enter the name of the student you want to find:); /*通过姓名查看*/ scanf(%s,name); while(p2!=NULL) if(strcmp(name,p

12、2-name)=0) printf(The data you want has be foundn); printf( Name:%st,p2-name); printf(Num:%dt,p2-num); printf(sex%st,p2-sex); printf(n); printf(Chinese:%dt,p2-chinese); printf(Math:%dt,p2-mathematic); printf(English:%dt,p2-english); printf(Computer:%dt,p2-computer); printf(n); b=1; else if(b=0) prin

13、tf(sorry not find data!); p2=p2-next; if(b=1) print(); printf(Find onen); else print(); printf(Not findn); void caverage() /*求各学生语文平均分、最高和最低分成绩的函数*/ stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1=NULL) printf(not data!); else for(i=0;p1!=NULL;i+,p1=p1-next) sum+=p1-chi

14、nese; aver=sum/i; p1=head; for(i=0;p1!=NULL;i+,p1=p1-next) if(maxchinese) max=p1-chinese; p1=head; for(i=0;p1!=NULL;i+,p1=p1-next) if(minp1-chinese) min=p1-chinese; printf(Chinese Average:%f,aver); printf(Chinese Max:%f,max); printf(Chinese Min:%f,min); void maverage() /*求各学生数学平均分、最高和最低分成绩的函数*/ stu

15、*p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1=NULL) printf(not data!); else for(i=0;p1!=NULL;i+,p1=p1-next) sum+=p1-mathematic; aver=sum/i; p1=head; for(i=0;p1!=NULL;i+,p1=p1-next) if(maxmathematic) max=p1-mathematic; p1=head; for(i=0;p1!=NULL;i+,p1=p1-next) if(minp1-math

16、ematic) min=p1-mathematic; printf(Mathe Average:%f,aver); printf(Mathe Max:%f,max); printf(Mathe Min:%f,min); void eaverage() /*求各学生英语平均分、最高和最低分成绩的函数*/ stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1=NULL) printf(not data!); else for(i=0;p1!=NULL;i+,p1=p1-next) sum+=p1-

17、english; aver=sum/i; p1=head; for(i=0;p1!=NULL;i+,p1=p1-next) if(maxenglish) max=p1-english; p1=head; for(i=0;p1!=NULL;i+,p1=p1-next) if(minp1-english) min=p1-english; printf(English Average:%f,aver); printf(English Max:%f,max); printf(English Min:%f,min); void comaverage() /*求各学生计算机平均分、最高和最低分成绩的函数*

18、/ stu *p1; int i; float max=0.0,min=200.0; float sum=0.0,aver=0; p1=head; if(p1=NULL) printf(not data!); else for(i=0;p1!=NULL;i+,p1=p1-next) sum+=p1-computer; aver=sum/i; p1=head; for(i=0;p1!=NULL;i+,p1=p1-next) if(maxcomputer) max=p1-computer; p1=head; for(i=0;p1!=NULL;i+,p1=p1-next) if(minp1-comp

19、uter) min=p1-computer; printf(Computer Average:%f,aver); printf(Computer Max:%f,max); printf(Computer Min:%f,min); update(stu *p2) /*通过姓名查找来更新数据*/ char name10; /*p2为指向结构体struct student的指针*/ int b=0; printf(Enter The Name); /*输入姓名*/ scanf(%s,name); while(p2!=NULL) if(strcmp(name,p2-name)=0) printf(Fi

20、nd you datan); scanf(Name:%s,p2-name); scanf(Num:%s,p2-num); scanf(Sex:%s,p2-sex); scanf(Chinese:%d,p2-chinese); scanf(Math:%d,p2-mathematic); scanf(english:%d,p2-english); scanf(Computer:%d,p2-computer); printf(Success!); b=1; else if(b=0) printf(Sorry not Find data!); p2=p2-next; if(b=0) print();

21、printf(Sorry not Find data!); else print(); printf(Finish!); save(stu *p2) /*保留数据函数*/ FILE *fp; char file10; printf(Enter file name); /*输入文件名*/ scanf(%s,file); fp=fopen(file,w); while(p2!=NULL) fprintf(fp,%s,p2-name); fprintf(fp,%s,p2-num); fprintf(fp,%s,p2-sex); fprintf(fp,%d,p2-chinese); fprintf(f

22、p,%d,p2-mathematic); fprintf(fp,%d,p2-english); fprintf(fp,%d,p2-computer); p2=p2-next; fclose(fp); char password7=; /*定义初始密码*/void main() /*主函数*/ int choice; stu *p2; char s8; int flag=0,i; /*标志项*/ int n=3; do printf(Enter password:n); scanf(%s,s); if(!strcmp(s,password) /*进行密码匹配验证*/ printf(PASSnnn

23、); flag=1; break; else printf(Error Enter again:n); n-; while(n0); if(!flag) printf(you have Enter 3 times!); /*输入密码超过了3次!*/ exit(0); /*自动退出*/ /*密码验证成功后进入的界面*/ printf(tttn); /*操作界面*/ printf(ttWelcom to the Misn); printf(Author:-tClass:-tNum:-n); /*作者,班级和号码*/ printf(Adress:HGn); /*地址*/ printf(%n); pr

24、intf(ttEnter OP:n); printf(nnnn); printf(=tt=n); printf(=tt=n); printf(ttEnter the MIS yes or non); /*问进入系统与否*/ scanf(%d,&choice); if(choice=n|choice=N) exit(1); print(); while(1) printf(Enter choice:); scanf(%d,&i); if(i13) printf(Enter num from 1 to 13:n); /*再从1-13中进行选择*/ exit(1); switch(i) case 1

25、: p2=cindata(); /*其他数据是否继续输入的函数*/ break; case 2: p2=lookdata(head); /*查看数据的函数*/ break; case 3: insert(); /*通过比较学号来插入数据的函数*/ break; case 4: find(head); /*通过姓名查找查看数据的函数*/ break; case 5: update(head); /*通过姓名查找来更新数据*/ break; case 6: save(head); /*保留数据函数*/ break; case 7: print(); /*显示或打印函数*/ break; case

26、8: caverage(); /*求各学生语文平均分、最高和最低分成绩的函数*/ break; case 9: maverage(); /*求各学生数学平均分、最高和最低分成绩的函数*/ break; case 10: eaverage(); /*求各学生英语平均分、最高和最低分成绩的函数*/ break; case 11: comaverage(); /*求各学生计算机平均分、最高和最低分成绩的函数*/ break; case 12: ; /*空操作*/ case 13: exit(1); /*退出*/ break; scanf(%d,&i); 程序中出现的问题及解决方法问题一、学生初始信息

27、模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。 解决办法及步骤:1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。 2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错 3、输出用于循环检查语句中的学生信息,发现乱码 4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。 问题二、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生

28、的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。 解决办法及步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。 2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。问题三、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。当我们输入插入信息时,系统却提示插入不进数据。解决办法及步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。 2、检查当我们在输入插入信息时,看是否我们输入的插入信息有专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com