




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除附件1:学 号: 0121014420214C语言综合实验题 目学生成绩管理系统学 院理学院专 业电子信息科学与技术班 级电信科1002姓 名李珍2011年06月30日 目录目录2一:需求分析3二:总体分析31:进入界面32:选择界面33:创建函数(creat)44:追加函数(add)55:查询函数66:修改函数77:删除函数88:统计函数99:排序函数1010:显示函数11。11三:详细设计111.进入界面112:选择界面123创建学生的资料124.追加学生的资料135.查询学生的资料146,.修改学生资料147.删除学生资料158. 统计学生资料169对学生资料进行排序1610.显示函数1711.退出18四:调试与测试184.1:调试184.2测试结果18五:结论与心得体会18六:附录186.1:程序源代码186.2:参考文献306.3:本科生C语言综合实验成绩评定表30学生成绩管理系统一:需求分析学生成绩管理系统是学生熟悉的教学系统之一,系统以学生成绩的输入、输出、插入、删除、排序、统计等基本功能模块为基础,将结构体、链表、文件等主要知识点结合在一起,运用菜单、排序等一些常用算法,解决学生成绩管理的实际问题。 设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,可以用数组或链表来设计这个程序,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。1):每一条记录包括一个学生的学号、姓名、性别、各门课成绩(上学期的科目)、平均成绩。2):创建功能:可以一次完成若干条记录的输入。3):显示输出功能:完成全部学生记录的显示。4):查找功能:完成按姓名或学号查找学生记录,并显示。5):排序功能:按学生平均成绩进行排序。6):修改功能:修改一条学生记录。7):删除功能:完成学生记录的删除。8):统计功能:按学生各门课成绩统计出平均成绩9):将学生记录存在文件student.txt中。10):应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!二:总体分析1:进入界面start();2:选择界面 intx;3:创建函数(creat)start();fread(&stui,sizeof(structstudent),1,fp);a=y|a=Yfclose(fp);i+ini=0printf(文件写入错误n);fclose(fp);printf(无法打开文件);i+ini=0printf(ninput information about the student:%n,i+1);(fp=fopen(student.txt,w)=NULLi+ini=0chara;4:追加函数(add)start();printf(n%s,%s,%s,%d,%d,%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);a=y|a=Yfclose(fp);i+ini=0printf(文件写入错误n);fclose(fp);printf(无法打开文件);i+ini=0printf(ninput information about the student:%n,i+1);(fp=fopen(student.txt,a)=NULLi+ini=0chara;5:查询函数x=i;continue;strcmp(name,)=0system(pause);i+i20i=0printf(无法打开文件!n);printf(要查询的学生姓名为:);fp=NULLinti,x;6:修改函数x=i;continue;system(pause);i+fwrite(&stui,sizeof(structstudent),1,fp)!=0i=0strcmp(name,)=0fclose(fp);i+i20i=0printf(无法打开文件!n);printf(要修改的学生姓名为:);fp=NULLinti,x;7:删除函数printf(学号t姓名t性别t语文t数学t英语n);strcpy(stuj.number,stuj+1.number);printf(*n);i+fread(&stui,sizeof(structstudent),1,fp)!=0i=0fclose(fp);printf(无法打开文件!n);flag=0;j+jn-1j=ii+ini=0fp=NULLprintf(n现在文件内容为:n);printf(没有找到!);strcmp(name,)=0!flagi+flag&inflag=1,i=0printf(学号t姓名t性别t语文t数学t英语n);printf(*n);i+fread(&stui,sizeof(structstudent),1,fp)!=0i=0printf(无法打开文件!n);printf(n原有数据:n);fp=NULLinti,j,n,flag;8:统计函数fread(&stui,sizeof(structstudent),1,fp);printf(%st%st%st%dt%dt%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);printf(文件写入错误n);printf(*n);i+ini=0printf(*n);i+(fread(&stui,sizeof(structstudent),1,fp)!=0i=0fclose(fp);printf(原文件数据:n);i+ini=0printf(无法打开文件!);fp=fopen(student.txt_all,w);fp=NULLinti,n;9:排序函数fwrite(&stui,sizeof(structstudent),1,fp);temp=stui;printf(*n);i+ini=0stui.avestuj.aveprintf(现在文件数据为:n);i+ini=0printf(%st%st%st%dt%dt%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);printf(*n);i+fread(&stui,sizeof(structstudent),1,fp)!=0i=0printf(无法打开文件!);printf(原文件数据:n);fp=NULLFILE*fp;10:显示函数system(pause);printf(n);i+fread(&stui,sizeof(structstudent),1,fp)!=0i=0fp=NULLinti;。三:详细设计1.进入界面 设置一个进入界面,显示程序作者的基本信息,包括学号,姓名,学院,班级,专业,界面一目了然,整齐可观。2:选择界面选择界面上显示有十项功能,分别为建立,追加,查询,修改,删除,统计,排序,显示,帮助和退出。在功能表下,有请选择的提示。通过choose()函数,实现选择的功能, 然后进入相应的功能界面,进入其他界面。在进入其他每个界面之前,会有一个清屏系统命令。从而保证了屏幕的干净与整洁。3创建学生的资料创建学生资料是通过creat()函数实现的,在这个界面最前面,有输入提示,在创建资料时,首先输入要创建学生资料的个数,然后再一一输入学生的各项数据,包括学号,姓名,性别,语文成绩,数学成绩,英语成绩。在数据输入完成后,也就是在数据写入文件后,再从文件中读出数据,简单的显示数据,以此来检验创建是否成功。完成学生资料的创建后,再回到选择界面。4.追加学生的资料 当你想要在增加一些其他学生的数据时,就可以通过add()函数来实现数据的追加,此功能的实现思路与创建资料功能大同小异,只不过将写入改为追加罢了。在完成追加学生资料后,又回到主界面。5.查询学生的资料查询学生资料是通过search()函数来实现的,查询函数的思路是这样的,首先:你输入你要查询的学生资料的姓名,之后通过“冒泡法”,将输入的学生姓名与文件中的学生资料的姓名一一比较,当有一个与输入的相等时,输出此学生的全部信息。查询结束后,按任意键继续,返回到选择界面。6,.修改学生资料修改学生资料是通过alter()函数来实现的,实现此功能的思路前一部分与查询相似,也就是输入你要修改的学生姓名,然后将此学生数据一一重新输入,重新存储。最后退回到选择界面。7.删除学生资料删除资料是通过del()函数来实现的,实现此功能的思路前一部分与查询相似,但是多了个将原有数据先输出来,为的就是与删除数据之后对比,以此来检验删除是否成功。如果删除成功,则输出删除成功,再按任意键,返回到主菜单。8. 统计学生资料统计学生资料的函数是statistic(),统计函数对学生的平均成绩和总成绩进行统计,然后在从文件中读出,显示出来,同时,原数据也显示出来,好让他们之间做一个对比,以此来验证统计结果是否正确。看完统计结果后,按任意键放回到主菜单。9对学生资料进行排序. 排序函数定义为sort(),排序函数和查询,修改函数一样,都运用到了冒泡法对学生数据之间的比较,排序界面如同统计局界面一样,将原结果与处理之后的结果进行比较,对比突出运行的结果是否正确,以便能够及时发现错误,及时修改。10.显示函数 显示函数是print()。显示学生资料界面上只输出学生的学号,姓名,性别,语文,数学和英语等数据,而不输出平均成绩和总成绩。看完学生资料后,按任意键退出当前界面,回到主菜单。11.退出选择功能10,通过exit(0)结束程序的运行,或者也可以关掉运行窗口来结束运行。四:调试与测试4.1:调试调试当中语法错误较少,但是逻辑和函数运用有很多问题,调试时用的数据如下:学号姓名性别语文数学英语1李珍男9998962何梁男9868873尹晓辉男8797694.2测试结果详见详细设计中的运行结果。五:结论与心得体会在一开始听到老师要我们编写这个学生成绩管理系统是,我既是苦恼又是兴奋,苦恼的是我们我对指针,结构体和函数的知识还不太熟悉,毕竟他将讲这些知识还没及天;兴奋的是能够有一次锻炼的机会,我相信这次作业一定能够大大提升我对c程序的认识。我是一个自信而且有耐心的人,所以,尽管这个程序很难编,但是我还是坚持了下来,直到弄出来!在编程的一开始,我毫无头绪,思绪很混乱,所以,我不得不花费了几天时间将结构体和文件方面的知识认认真真的看了一遍,并且尝试了很多小程序的编写和运行,效果很明显。之后,我开始这个大程序的编写工作,从慢慢吞吞到加快节奏,在编程的一周时间内,我几乎每天都很晚才睡,早上又不得不早些起来,真是累呀!现在,程序终于弄出来了,我感到欣喜无比,同时,内心中有一种油然而生的成就感,我终于凭借自己的努力把程序弄了出来。在这个程序中,一系列的函数中都普遍运用了fopen(),fclose(),fread(),fwrite(),system(“cls”),system(“pause”)等系统函数,同时,程序中用到的最多的知识是结构体数组和文件,当然,一些基础的知识都几乎用到了,他们是一个大程序中经常用到的,灵活的运用指针,熟练的掌握函数的调用对编程十分重要。这次所编写的程序基本上达到了老师的要求,但是还有很多不足之处,等待我以后慢慢的修改和完善,争取使程序达到最好。这一次的编写经历,让我对c程序有了更深刻的了解,同时对我以后的学习有莫大的指导意义,我对c语言更加有兴趣了,我相信我以后能更好!六:附录6.1:程序源代码#include#include#includevoid creat();void caidan();void choose(int);void add();void del();void search();void sort();void statistics();void print();void alter();void start()void main()/*主函数*/start();struct student/*定义学生信息结构体数组*/char number10;/*学号*/char name8;/*姓名*/char sex4;/*性别*/int yuwen;/*语文成绩*/int shuxue;/*数学成绩*/int yingyu;/*英语成绩*/int sum;/*个人总成绩*/float ave;/*平均成绩*/stu20,temp;void start()/*开始界面*/system(cls);printf(-欢迎进入学生成绩管理系统-n);printf( * n);printf(n & 姓名:李珍 & n);printf(n & 学号:0121014420214 & n);printf(n & 学院:理学院 & n);printf(n & 班级:电信科1002 & n);printf( * n);flushall();system(pause);caidan();void bangzhu()/*帮助菜单(以后可以在里面添加新功能)*/void alter()/*修改函数*/int i,x;char name8;FILE *fp;system(cls);/*清屏*/printf(-修改学生资料-n);fp=fopen(student.txt,r);if(fp=NULL)printf(无法打开文件!n);system(pause);caidan();printf(要修改的学生姓名为:);flushall();/*缓冲数据*/scanf(%s,name);fread(stu,sizeof(struct student),20,fp);for(i=0;i20;i+) if(strcmp(name,)=0)x=i;printf(修改学生资料:n);printf(学号:);scanf(%s,stux.number);flushall();printf(姓名:);scanf(%s,);flushall();printf(性别:);scanf(%s,stux.sex);flushall();printf(语文成绩:);scanf(%d,&stux.yuwen);printf(数学成绩:);scanf(%d,&stux.shuxue);printf(英语成绩:);scanf(%d,&stux.yingyu);elsecontinue;fclose(fp);fp=fopen(student.txt,w);for(i=0;fwrite(&stui,sizeof(struct student),1,fp)!=0;i+)fclose(fp);system(pause);caidan();void statistics()/*统计函数*/int i,n;int sum=0;FILE *fp;system(cls);printf(-统计学生资料-n);fp=fopen(student.txt,r);if(fp=NULL)printf(无法打开文件!);caidan();elseprintf(原文件数据:n);printf(*n);printf(学号t姓名t性别t语文t数学t英语n);for(i=0;(fread(&stui,sizeof(struct student),1,fp)!=0;i+)printf(%st%st%st%dt%dt%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);sum=stui.yuwen+stui.shuxue+stui.yingyu;stui.ave=(float)sum/3;stui.sum=(int)sum;printf(*n);n=i;printf(n);fclose(fp);fp=fopen(student.txt_all,w);for(i=0;in;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(文件写入错误n);caidan();fclose(fp);fp=fopen(student.txt_all,r);printf(统计之后的数据:n);printf(*n);printf(学号t姓名t性别t语文t数学t英语t平均成绩t总成绩n);for(i=0;in;i+)fread(&stui,sizeof(struct student),1,fp);printf(%st%st%st%dt%dt%dt%.2ftt%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu,stui.ave,stui.sum);printf(*n);fclose(fp);system(pause);caidan();void sort()/*排序函数*/FILE *fp;int i,j,n;system(cls);printf(-对学生资料进行排序-n);fp=fopen(student.txt_all,r);if(fp=NULL)printf(无法打开文件!);caidan();printf(原文件数据:n);printf(*n);printf(学号t姓名t性别t语文t数学t英语n);for(i=0;fread(&stui,sizeof(struct student),1,fp)!=0;i+)printf(%st%st%st%dt%dt%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);printf(*n);n=i;printf(n);fclose(fp);/*排序*/for(i=0;in;i+)for(j=i+1;jn;j+)if(stui.avestuj.ave)temp=stui;stui=stuj;stuj=temp;/*输出*/printf(现在文件数据为(按平均成绩排序):n);printf(*n);fp=fopen(student_sort.txt,w);printf(学号t姓名t性别t语文t数学t英语t平均成绩n);for(i=0;in;i+)fwrite(&stui,sizeof(struct student),1,fp);printf(%st%st%st%dt%dt%dt%fn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu,stui.ave );printf(*n);printf(n);fclose(fp);system(pause);caidan();void search()/*查询函数*/int i,x;char name8;FILE *fp;system(cls);printf(-查询学生资料-n);fp=fopen(student.txt,r);if(fp=NULL)printf(无法打开文件!n);system(pause);caidan();printf(要查询的学生姓名为:);flushall();scanf(%s,name);fread(stu,sizeof(struct student),20,fp);for(i=0;i20;i+) if(strcmp(name,)=0)x=i;printf(查得的学生资料为:n);printf(学号t姓名t性别t语文t数学t英语n);printf(%st%st%st%dt%dt%dn,stux.number,,stux.sex,stux.yuwen,stux.shuxue,stux.yingyu);elsecontinue;system(pause);caidan();void del()/*删除函数*/int i,j,n,flag;char name10;FILE *fp;system(cls);printf(-删除学生的资料-n);fp=fopen(student.txt,rb);if(fp=NULL)printf(无法打开文件!n);caidan();printf(n原有数据:n);printf(*n);printf(学号t姓名t性别t语文t数学t英语n);for(i=0;fread(&stui,sizeof(struct student),1,fp)!=0;i+)printf(%st%st%st%dt%dt%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);printf(*n);fclose(fp);n=i;printf(输入要删除的姓名:);scanf(%s,name);for(flag=1,i=0;flag∈i+)if(strcmp(name,)=0)for(j=i;jn-1;j+)strcpy(stuj.number,stuj+1.number);strcpy(,stuj+1.name);strcpy(stuj.sex,stuj+1.sex);stuj.yuwen=stuj+1.yuwen;stuj.shuxue=stuj+1.shuxue;stuj.yingyu=stuj+1.yingyu; flag=0;if(!flag)n=n-1;elseprintf(没有找到!);printf(n现在文件内容为:n);fp=fopen(student.txt,wb);if(fp=NULL)printf(无法打开文件!n);caidan();for(i=0;in;i+)fwrite(&stui,sizeof(struct student),1,fp);fclose(fp);fp=fopen(student.txt,r);printf(*n);printf(学号t姓名t性别t语文t数学t英语n);for(i=0;fread(&stui,sizeof(struct student),1,fp)!=0;i+)printf(%st%st%st%dt%dt%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);printf(*n);flushall();printf(n);fclose(fp);printf(删除成功!n);system(pause);caidan();void print()/*显示函数*/ int i;FILE *fp;system(cls);printf(-显示学生资料-n);printf( 学号t姓名t性别t语文t数学t英语n);fp=fopen(student.txt,r);if(fp=NULL)system(pause);printf(无法打开文件!或者文件不存在!n);caidan();for(i=0;fread(&stui,sizeof(struct student),1,fp)!=0;i+)printf(%st%st%st%dt%dt%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);printf(n);flushall();system(pause);caidan();void add()/*追加函数*/char a; int i,n;FILE *fp;system(cls);printf(-追加学生的资料-n);printf(*请输入数据:n);printf(请输入数据的个数:);scanf(%d,&n);for(i=0;in;i+)printf(ninput information about the student:%n,i+1);printf(学号:);scanf(%s,stui.number);printf(姓名:);scanf(%s,);printf(性别:);scanf(%s,stui.sex);printf(语文成绩:);scanf(%d,&stui.yuwen);printf(数学成绩:);scanf(%d,&stui.shuxue);printf(英语成绩:);scanf(%d,&stui.yingyu);/*将数据写入文件*/if(fp=fopen(student.txt,a)=NULL)printf(无法打开文件);caidan();for(i=0;in;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(文件写入错误n);fclose(fp);fp=fopen(student.txt,r);for(i=0;in;i+)printf(n%s,%s,%s,%d,%d,%dn,stui.number,,stui.sex,stui.yuwen,stui.shuxue,stui.yingyu);fclose(fp);printf(追加成功!n);printf(返回主菜单Y/N?n);flushall();scanf(%c,&a);if(a=y|a=Y)caidan();elsestart();void caidan()/*菜单界面*/int x;system(cls);printf( -菜单-n);printf( *n);printf(n *1:创建学生的资料 *6:统计学生的成绩 n);printf(n *2:追加学生的资料 *7:对学生资料进行排序 n);printf(n *3:查询学生的资料 *8:输出显示学生的资料 n);printf(n *4:修改学生的资料 *9:帮助 n);printf(n *5:删除学生的资料 *10:退出 n);printf( *n);printf( *请选择:);scanf(%d,&x);choose(x);void creat()/*创建函数*/ char a; int i,n;FILE *fp;system(cls);printf(-创建学生的资料-n);printf(*请输入数据:n);printf(请输入数据的个数:);scanf(%d,&n);for(i=0;in;i+)printf(ninput information about the
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 20 雾在哪里(教学设计)-2024-2025学年统编版语文二年级上册
- 上学校(教学设计)-2023-2024学年人音版(北京)(2024)一年级上册音乐
- 主题五:博物馆里做义工教学设计-2025-2026学年小学劳动广州版四年级上册-广州版
- 《“爱拼才会赢”》实践课说课稿
- 任务二 美化校园我能行教学设计-2025-2026学年小学劳动鲁科版五年级上册-鲁科版
- (2025春新版)青岛版科学一年级下册全册教案
- 2025-2026学年赣美版2024初中美术七年级上册(全册)教学设计(附目录P193)
- 2025-2026学年西师大版(2024)小学数学一年级上册(全册)教学设计(附目录P227)
- 2.6 《乘法运算律及简便运算》(教学设计)-2024-2025学年四年级下册数学西师大版
- 2025年中考化学试题分类汇编:工艺流程题(第2期)解析版
- 社区获得性肺炎的个案护理
- 一年级ABC英语字母读音教案
- 电气安全基础知识安全培训
- 宽带宣传活动方案
- 2025-2030商业航天市场发展分析及前景趋势与投融资发展机会研究报告
- 电缆生产工艺全解析
- 新生儿暖箱使用操作指南
- 2025至2030中国场发射显示器(fed)行业市场现状分析及竞争格局与投资发展报告
- 供应商退出管理规定
- 2025年湖南省中考历史试卷真题(含答案)
- 2025至2030年中国遥控式水下机器人(ROV)行业发展现状调查及前景战略分析报告
评论
0/150
提交评论