欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOCX文档下载
 

学生成绩管理系统+++数据结构课程设计

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

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

学生成绩管理系统+++数据结构课程设计

算法与数据结构课程设计综合实验课程设计名称:学生成绩管理系统业:计算机科学与技术学生成绩管理系统一、 问题的描述和分析1.1问题的描述随着社会的发展和经济时代的到来,管理信息系统在各行各业都越来越重要,特别是教育 事业。在经济发达的国家,许多教育机构(如公办、私立、培训机构等),都投入了大量的资 金开发MIS系统,以求在将来激烈的竞争中立于不败之地。在我国,民办教育是新兴的一个行业, 是随着改革开放和市场经济的发展根据中国特有的国情发展起来的,特别是中国民办教育促进 法的出台,从一定的程度上规范和促进了中国民办教育的发展,这是一个很有发展前途的新兴 产业,但是同发达国家相比,我国的民办教育行业的信息技术的应用程度还很低,只有在大城 市中发展较早、规模较大的民办院校中才使用计算机进行大规模操作,从各方面提高工作效率, 取得良好的社会和经济效益,而一些新兴的、规模较小的民办机构还没有全部具备这种功能。 因此可见,随着我国民办教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。1.2现有系统存在问题的分析有的学校根本就没有系统,还是手工操作计算机日新月异的发展,但是有的领导只见眼前利 益,不关心,甚至不敢尝试新兴的事物。手工操作还十分落后,效率极低,成本很大,以后的 社会是信息的社会,信息只有快,准,精才能发挥其价值。所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算 机的自动化系统。人工操作必将被计算机代替。有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率 就一日提不上去。还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统能有保障吗? 所以制作一个完善的学生管理系统是必不可少的。二、数据结构的设计struct personchar name20;long num;float math;float English;float chinese;float average;float sum;student;三、模块:学生成绩管理系统模块四、算法的设计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 thisfile.n");printf("wait for a second withpatience.nthe system is exiting.n");getch();exit(0);elsedoprintf("your name:"); gets(student.name); printf("nyour num:"); gets(numstr);student.num=atol(numstr); printf("nyour math:"); gets(numstr);student.math=atof(numstr);printf("nyourEnglish:");2. 查询学生记录gets(numstr);student.English=atof(numstr);printf("nyourchinese:");gets(numstr);student.chinese=atof(numstr);student.sum=student.chinese+student.math+student.English;student.average=student.sum/3;fwrite(&student,sizeof(structperson),1,fp);N+;printf("Do you continueadding 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();当用户执行此查询任务时,系统会提示用户进行查询字段的选择,即按学号或按姓名进行查询。若此学生记录存在,则会打印输出此学生记录的信息。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");printf("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':doLoop1:printf("input 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')goto Loop2; break;case '2':doLoop2: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)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);elseflag=0; t=0;while(fread(&student,sizeof(struct person),1,fp)if(num=student.num)printf("namettnumtchinesetEnglisht mathsumtaveragen");printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8 .2f%-8.2fn",student.name,student.num,s tudent.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);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 patience.nthe system is exiting.n");getch();exit(0);elseflag=0;t=0;while(fread(&student,sizeof(struct person),1,fp)if(strcmp(name,student.name)=0)printf("namettnumtchinesetEnglisht mathsumtaveragen");printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8 .2f%-8.2fn",student.name,student.num,s tudent.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 name20;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 students you are going to delete.n"); scanf("%s",name);while(fread(&student,sizeof(struct person),1,fp)=1)if(strcmp(name,student.name)!=0)student2j=student;j+;else flag=1;printf("nametttnumtchinesettEngli shttmathtsumtaveragen");printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",student.name,student.num,studen t.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.the student you are searching not existed.n");if(flag=1)printf("Congratulation!you succeedn");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");getch();exit(0);elsei=0; dofwrite(&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='Y')rewind(fp);printf("nametttnumtchinesettEngli shttmathtsumtaveragen");while(fread(&student,sizeof(struct person),1,fp)printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f% 8.2fn",student.name,student.num,studen t.chinese,student.English,student.math, student.sum,student.average);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't open thisfile.n");printf("wait for a second with patience.nthe system is exiting.n");getch();exit(0);elseagain:printf("name of rivesing student:n");gets(name);doflag=0;fread(&student,sizeof(struct person),1,fp);if(strcmp(name,student.name)=0)flag=1; printf("the following is information of student being deleted:n");printf("namettnumtmathtchinesetEng lishtsumtaveragen");printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f% 8.2fn",student.name,student.num,studen t.chinese,student.English,student.math, student.sum,student.average);doprintf("*informations for revising*n");printf("=n");printf("# 1.name2.num#n");printf("#3.math4.English#n");printf("#5.chinese6.total#n");printf("= =n");printf("give achoice:n");ch=getchar();getchar();while(ch>'6'|ch<'1')printf("Sorry.you put is wrong.nplease input another choice:n");ch=getchar();getchar(); switch(ch) case,1, / 、'1':ass_revise("name");gets(student.name);break;case,C,/、'2':ass_revise("num");gets(numstr);student.num=atol(numstr);break;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;case '6':ass_revise("total");gets(student.name);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("chinese");gets(numstr); student.chinese=atof(numstr);student.sum=student.chinese+student.mat h+student.English;student.average=student.sum/3; printf("Continue revising the same student(Y/N)?n");ch1=getchar();getchar();while(ch='y'|c h='Y');fseek(fp,-offset,1); fwrite(&student,sizeof(struct person),1,fp);printf("thefollowing is information of student had been revised:n");printf("namettnumtmathtchinesetEng lishtsumtaveragen");printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",student.name,student.num,studen t.chinese,student.English,student.math, student.sum,student.average);printf("Congratulation!you succeedn");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 ONRevising(Y/N)?n");ch1=getchar();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't open thisfile.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;dofor(i=0;i<k;i+)ai=student1i.math;bi=student1i.English;ci=student1i.chinese;di=student1i.average; printf(" *WAYS OF ORDER* n");printf("=n"); printf("*1.math2.English*n");printf("*3.chinese4.average*n");printf("=n"); printf("please give a choice:n"); ch=getchar();getchar(); while(ch<'1'|ch>'4')printf("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!yousucceedn");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("nametttnumtchinesettEngli shttmathtsumtaveragen");while(fread(&student,sizeof(structperson),1,fp)printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f% 8.2fn",student.name,student.num,studen t.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 student2;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);struct person studentl30;clrscr();6. 显示学生记录由于记录显示操作经常进行,所以我将这分由独立的函数来实现,减少代码的重复。Listall()FILE *fp;char ch; struct person studentl30; int i;int k; fp=fopen("jie.txt","r");if(fp=NULL)printf("can't open thisfile.n");printf("wait for a second with patience.nthe system is exiting.n");getch();exit(0);elsedorewind(fp);printf("nametttnumtchinesettEngli shttmathtsumtaveragen");while(fread(&student,sizeof(struct person),1,fp) 四、具体程序的实现 #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h"printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",student.name,student.num,studen t.chinese,student.English,student.math, student.sum,student.average);printf("GOON(Y/N)?n");ch=getchar();getchar();while(ch='y'|ch='Y');fclose(fp);return_confirm();struct personchar name20;long num;float math;float English;float chinese;float average;float sum;student;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 second with patience.nthe system is exiting.n"); getch();exit(0);elsedo printf("your name:"); gets(student.name); printf("nyour num:"); gets(numstr);student.num=atol(numstr); printf("nyour math:"); gets(numstr);student.math=atof(numstr); printf("nyour English:"); 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 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();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");printf("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(); switch(choice) case '1':doLoop1: printf("input 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') goto Loop2;break;case '2':doLoop2: 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)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);elseflag=0;t=0; while(fread(&student,sizeof(struct person),1,fp) if(num=student.num)printf("namettnumtchinesetEnglishtmathsumtaveragen");printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8.2f%-8.2fn",student.name,student.num,stude nt.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);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 patience.nthe system is exiting.n"); getch();exit(0);elseflag=0;t=0;while(fread(&student,sizeof(struct person),1,fp) if(strcmp(name,student.name)=0)printf("namettnumtchinesetEnglishtmathsumtaveragen");printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8.2f%-8.2fn",student.name,student.num,stude nt.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 name20;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);elsedoi=0;j=0;flag=0;printf("input the name of students you are going to delete.n"); scanf("%s",name);while(fread(&student,sizeof(struct person),1,fp)=1) if(strcmp(name,student.name)!=0) student2j=student; j+;else flag=1;printf("nametttnumtchinesettEnglishttmathtsumtaveragen");printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",student.name,student.num,student.ch inese,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.the student you are searching not existed.n");if(flag=1) printf("Congratulation!you succeedn");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"); getch();exit(0);elsei=0;dofwrite(&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='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.name,student.num,student.ch inese,student.English,student.math,student.sum,student.average);fclose(fp); return_confirm();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't open this file.n");printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0);elseagain:printf("name of rivesing student:n"); gets(name);doflag=0; fread(&student,sizeof(struct person),1,fp); if(strcmp(name,student.name)=0)flag=1;printf("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.name,student.num,student.ch inese,student.English,student.math,student.sum,student.average);doprintf("*informations for revising*n");printf("=n"); printf("# 1.name2.num#n");printf("# 3.math4.English#n");printf("# 5.chinese6.total#n");printf("=n"); printf("give a choice:n");ch=getchar();getchar();while(ch>'6'|ch<'1')printf("Sorry.you put is wrong.nplease input anotherchoice:n");ch=getchar();getchar();switch(ch),1, / 、case '1':ass_revise("name");gets(student.name);break;,C,/、case '2':ass_revise("num");gets(numstr);student.num=atol(numstr);break;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;case '6':ass_revise("total");gets(student.name);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("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);fwrite(&student,sizeof(struct person),1,fp);printf("the following is information of student had been revised:n"

注意事项

本文(学生成绩管理系统+++数据结构课程设计)为本站会员(s****a)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

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




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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