版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法与数据结构课程设计综合实验课程设计名称:学生成绩管理系统 专 业:计算机科学与技术 学生成绩管理系统一、 问题的描述和分析1.1问题的描述 随着社会的发展和经济时代的到来,管理信息系统在各行各业都越来越重要,特别是教育事业。在经济发达的国家,许多教育机构(如公办、私立、培训机构等),都投入了大量的资金开发MIS系统,以求在将来激烈的竞争中立于不败之地。在我国,民办教育是新兴的一个行业,是随着改革开放和市场经济的发展根据中国特有的国情发展起来的,特别是中国民办教育促进法的出台,从一定的程度上规范和促进了中国民办教育的发展,这是一个很有发展前途的新兴产业,但是同发达国家
2、相比,我国的民办教育行业的信息技术的应用程度还很低,只有在大城市中发展较早、规模较大的民办院校中才使用计算机进行大规模操作,从各方面提高工作效率,取得良好的社会和经济效益,而一些新兴的、规模较小的民办机构还没有全部具备这种功能。因此可见,随着我国民办教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。1.2现有系统存在问题的分析 有的学校根本就没有系统,还是手工操作计算机日新月异的发展,但是有的领导只见眼前利益,不关心,甚至不敢尝试新兴的事物。手工操作还十分落后,效率极低,成本很大,以后的社会是信息的社会,信息只有快,准,精才能发挥其价值。 所以机器代替人力是必然
3、的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。 有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。 还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统能有保障吗?所以制作一个完善的学生管理系统是必不可少的。二、数据结构的设计struct person char name20; long num; float math; float English; float chinese; float average; float sum;student;三、
4、模块:学生成绩管理系统模块四、算法的设计1.在此成绩管理系统中,要求用户输入的只是有字符型和数值型数据,所以我设计了下面函数来处理并对输出的数据进行检验。int N=0;Enter() FILE *fp; char ch; char ch2; char numstr20; struct person student2; clrscr(); fp=fopen("jie.txt","ab"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a
5、 second with patience.nthe system is exiting.n"); getch(); exit(0); else do printf("your name:"); gets(); printf("nyour num:"); gets(numstr); student.num=atol(numstr); printf("nyour math:"); gets(numstr); student.math=atof(numstr); printf("nyour En
6、glish:"); gets(numstr); student.English=atof(numstr); printf("nyour chinese:"); gets(numstr); student.chinese=atof(numstr); student.sum=student.chinese+student.math+student.English; student.average=student.sum/3; fwrite(&student,sizeof(struct person),1,fp); N+; printf("Do you
7、 continue adding other students(Y/N)?n"); ch=getchar(); getchar(); while(ch='y'|ch='Y'); printf("Show all(Y/N)?n"); ch2=getchar(); getchar(); if(ch2='y'|ch2='Y') Listall(); fclose(fp); return_confirm(); clrscr(); 2.查询学生记录当用户执行此查询任务时,系统会提示用户进行查询字段的选择,即按学
8、号或按姓名进行查询。若此学生记录存在,则会打印输出此学生记录的信息。Search() char choice; char ch1; char ch2; char ch3; char ch4; char name20; long num; char numstr20; clrscr(); printf("*WAYS OF SEARCHING*n"); printf("-n"); printf("* 1.name *n"); printf("* 2.num *n"); printf("-n"); p
9、rintf("give your choice:n"); choice=getchar(); getchar(); while(choice>'2'|choice<'1') printf("Sorry.your choice is wrong.nplease give a correct one:n"); choice=getchar(); getchar(); 3.根据姓名或学号进行查找 switch(choice) case '1':do Loop1: printf("input
10、the name of students you want to search:n"); gets(name); Search1(name); printf("GO ON SEARCHING BY NAEM(Y/N)?n"); ch2=getchar(); getchar(); while(ch2='y'|ch2='Y'); printf("Search by other ways(Y/N)?n"); ch3=getchar(); getchar(); if(ch3='y'|ch3='Y&
11、#39;) goto Loop2; break; case '2': do Loop2: printf("input the num of students you want to search:n"); gets(numstr); num=atol(numstr); Search2(num); printf("GO ON SEARCHING BY NUM(Y/N)?n"); ch1=getchar(); getchar(); while(ch1='y'|ch1='Y'); Search2(long num
12、) FILE *fp; char ch; int flag=0; int t; clrscr(); fp=fopen("jie.txt","rb"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); else flag=0; t=0; while(fread(&student,sizeo
13、f(struct person),1,fp) if(num=student.num) printf("namettnumtchinesetEnglishtmathsumtaveragen"); printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8.2f%-8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average); t=1; break; if(t=0) printf("
14、;Sorry.the student you are searching not existed.n"); rewind(fp); fclose(fp); Search1(char *name) FILE *fp; char ch; int flag=0; int t; clrscr(); fp=fopen("jie.txt","rb"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patienc
15、e.nthe system is exiting.n"); getch(); exit(0); else flag=0; t=0; while(fread(&student,sizeof(struct person),1,fp) if(strcmp(name,)=0) printf("namettnumtchinesetEnglishtmathsumtaveragen"); printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8.2f%-8.2fn",,studen
16、t.num,student.chinese,student.English,student.math,student.sum,student.average); t=1; break; if(t=0) printf("Sorry.the student you are searching not existed.n"); rewind(fp); fclose(fp); Delete() FILE *fp; struct person student130,student230; int i; int k; int j; int flag; char ch1; char na
17、me20; char ch; char ch2; clrscr(); fp=fopen("jie.txt","rb+"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); else do i=0; j=0; flag=0; printf("input the name of stude
18、nts you are going to delete.n"); scanf("%s",name); while(fread(&student,sizeof(struct person),1,fp)=1) if(strcmp(name,)!=0) student2j=student; j+; else flag=1; printf("nametttnumtchinesettEnglishttmathtsumtaveragen"); printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.
19、2f%8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average); printf("Delete(Y/N)?n"); ch1=getchar(); getchar(); toupper(ch); if(ch='N') goto Loop; printf("j=%dn",j); k=j; i=0; fclose(fp); if(flag=0) printf("Sorry.
20、the student you are searching not existed.n"); if(flag=1) printf("Congratulation!you succeed!n"); fp=fopen("jie.txt","wb+"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); ge
21、tch(); exit(0); else i=0; do fwrite(&student2i,sizeof(struct person),1,fp); i+; while(i<k); Loop: getchar(); printf("Go on(Y/N)?n"); ch=getchar(); getchar(); while(ch='y'|ch='Y'); printf("Show all(Y/N)?n"); ch2=getchar(); getchar(); if(ch2='y'|ch2=&
22、#39;Y') rewind(fp); printf("nametttnumtchinesettEnglishttmathtsumtaveragen"); while(fread(&student,sizeof(struct person),1,fp) printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average);
23、 fclose(fp); return_confirm();4.修改学生记录在修改学生记录操作中,系统会先按输入的学号或姓名查找该记录,然后提示用户修改学号或姓名之外的值,但学号或姓名不能修改。Revise() FILE *fp; char ch; char ch1; long offset=sizeof(struct person); int flag=0; char numstr20; char name20; clrscr(); fp=fopen("jie.txt","rb+"); if(fp=NULL) printf("can'
24、t open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); else again: printf("name of rivesing student:n"); gets(name); do flag=0; fread(&student,sizeof(struct person),1,fp); if(strcmp(name,)=0) flag=1; printf
25、("the following is information of student being deleted:n"); printf("namettnumtmathtchinesetEnglishtsumtaveragen"); printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average); do print
26、f("*informations for revising*n"); printf("=n"); printf("# 1.name 2.num #n"); printf("# 3.math 4.English #n"); printf("# 5.chinese 6.total #n"); printf("=n"); printf("give a choice:n"); ch=getchar(); getchar(); while(ch>'6&
27、#39;|ch<'1') printf("Sorry.you put is wrong.nplease input another choice:n"); ch=getchar(); getchar(); switch(ch) case '1':ass_revise("name"); gets(); break; case '2':ass_revise("num"); gets(numstr); student.num=atol(numstr); break
28、; case '3':ass_revise("math"); gets(numstr); student.math=atof(numstr); break; case '4':ass_revise("English"); gets(numstr); student.English=atof(numstr); break; case '5':ass_revise("chinese"); gets(numstr); student.chinese=atof(numstr); break; c
29、ase '6':ass_revise("total"); gets(); ass_revise("num"); gets(numstr); student.num=atol(numstr); ass_revise("math"); gets(numstr); student.math=atof(numstr); ass_revise("English"); gets(numstr); student.English=atof(numstr); ass_revise("
30、;chinese"); gets(numstr); student.chinese=atof(numstr); student.sum=student.chinese+student.math+student.English; student.average=student.sum/3; printf("Continue revising the same student(Y/N)?n"); ch1=getchar(); getchar(); while(ch='y'|ch='Y'); fseek(fp,-offset,1); fw
31、rite(&student,sizeof(struct person),1,fp); printf("the following is information of student had been revised:n"); printf("namettnumtmathtchinesetEnglishtsumtaveragen"); printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",,student.num,student.chinese,student.Eng
32、lish,student.math,student.sum,student.average); printf("Congratulation!you succeed!n"); break; while(fread(&student,sizeof(struct person),1,fp); rewind(fp); if(flag=0) printf("Sorry.the student of reving not existed.n"); printf("GO ON Revising(Y/N)?n"); ch1=getchar(
33、); getchar(); if(ch1='y'|ch1='Y') goto again; fclose(fp); return_confirm(); clrscr();5.对学生记录进行排序Order() FILE *fp; char ch; char ch2; int k; float a30,b30,c30,d30; struct person student130; int i; char ch1; fp=fopen("jie.txt","rb"); if(fp=NULL) printf("can'
34、;t open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); rewind(fp); i=0; while(fread(&student1i,sizeof(struct person),1,fp) i+; k=i; do for(i=0;i<k;i+) ai=student1i.math; bi=student1i.English; ci=student1i.chinese; di=student
35、1i.average; printf(" *WAYS OF ORDER* n"); printf("=n"); printf("*1.math 2.English*n"); printf("*3.chinese 4.average*n"); printf("=n"); printf("please give a choice:n"); ch=getchar(); getchar(); while(ch<'1'|ch>'4') pri
36、ntf("Sorry.the date you input is wrong.nplease give another choice:n"); ch=getchar(); getchar(); switch(ch) case '1':Order1(a); break; case '2':Order1(b); break; case '3':Order1(c); break; case '4':Order1(d); break; printf("Congratulation!you succeed!n&
37、quot;); printf("Go on ordering(Y/N)?n"); ch1=getchar(); getchar(); while(ch1='y'|ch='Y'); printf("Show all(Y/N)?n"); ch2=getchar(); getchar(); if(ch2='y'|ch2='Y') rewind(fp); printf("nametttnumtchinesettEnglishttmathtsumtaveragen"); while
38、(fread(&student,sizeof(struct person),1,fp) printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average); fclose(fp); return_confirm(); Order1(float *p) FILE *fp; int i=0; int k; int j; struct person st
39、udent2; struct person student130; clrscr(); fp=fopen("jie.txt","r+"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); else while(fread(&student1i,sizeof(struct person),1,fp) i+; k=i; i=0; while(i<k) for(j=i+1;j<k;j+) if(pi<pj) student2=student1i; student1i=student1j; student1j=student2; i+; rewind(fp); for(i=0;i<k;i+) fwrite(&student1i,sizeof(struct person),1,fp); fclose(fp);6.显示学生记录由于记录显示操作经常进行,所以我将这分由独立的函数来实现,减少代码的重复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2014年1月国开电大专科《办公室管理》期末纸质考试试题及答案
- 2026年中国铝合金立管行业市场前景预测及投资价值评估分析报告
- 2026年中国大推力电动振动台行业市场规模及投资前景预测分析报告
- 2025重庆沙坪坝区社会保险事务中心公益岗招聘笔试考试参考试题及答案解析
- 2025年云南交投集团服务发展有限公司人才引进招聘(3人)考试笔试备考题库及答案解析
- 2025年南平邵武市金塘工业园区专职消防队招聘专职消防队员18人考试笔试模拟试题及答案解析
- 山东省化工园区管理机构安全生产重点工作清单-2025年11月3日起施行
- 预防医学科传染病防控方案
- 麻醉科全麻术后呼吸护理规范
- 2026年江西省赣州市单招职业倾向性考试必刷测试卷附答案
- 基坑施工冬季施工技术及管理方案
- 2025中国铁塔集团广西分公司招聘22人易考易错模拟试题(共500题)试卷后附参考答案
- GB/T 16895.37-2025低压电气装置第8-82部分:功能方面产消式低压电气装置
- 青海省西宁市2024-2025学年七年级上学期期末调研测试道德与法治试卷(含答案)
- 瞳孔意识评估课件
- 基于Python的深度学习图像处理 课件 第六章 基于深度学习的图像增强
- 山东省青岛市李沧区片区2024-2025学年六年级上册期中考试科学试卷
- 产品卸货及现场安装服务流程方案
- 2025年司机安全培训考试题库及答案书
- 初中教育《拒绝浮躁静心学习》主题班会课件
- GB/T 46425-2025煤矸石山生态修复技术规范
评论
0/150
提交评论