C语言课程设计报告学生成绩管理系统设计_第1页
C语言课程设计报告学生成绩管理系统设计_第2页
C语言课程设计报告学生成绩管理系统设计_第3页
C语言课程设计报告学生成绩管理系统设计_第4页
C语言课程设计报告学生成绩管理系统设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生成绩管理系统设计第一章 本课程设计的题目及要求1.1课程设计题目要求1. 要求利用c语言面向过程的编程思想来完成系统的设计; 2. 突出c语言的函数特征,以多个函数实现每一个子功能; 3. 画出功能模块图; 4. 进行简单界面设计,能够实现友好的交互; 5. 具有清晰的程序流程图和数据结构的详细定义; 6. 熟练掌握c语言对文件的各种操作。1.2设计思想程序运用结构体数组和循环进行程序的编写.第二章 系统完成功能及功能框图2.1系统功能1每条记录包括一个学生学号、姓名、四科成绩。2输入功能:可以一次完成无数条记录的输入。3显示功能:完成全部学生记录的显示。4查找功能:完成按学号查找学生记录

2、,并显示。5修改功能:通过查找学生学号,修改学生记录。6保存功能:将学生记录保存到任何自定义的文件中。7读取功能:将保存到文件中的学生记录读取出来。8应提供一个界面来调用各个功能,调用界面和功能的操作界面应尽可能清晰美观。2.2系统框图主要功能 输出编辑删除查询录入第三章 系统使用介绍 3.1主菜单输入字符后以获得相应的功能,按照菜单提示即可。3.2输入信息和浏览信息3.3查询、修改和删除第四章 工作分工我的主要任务是完成对该程序的设计工作,运用所学的知识来对该程序进行整体的设计,在这几天的编程时间里我会去图书馆查阅资料,以便对整个小组的工作提供最大的便利,最后我还将对检测过程进行帮助,用最快

3、的速度帮助调试工作尽快的完成。我首先设计了整个系统的主函数,这个函数可以最有效的将所有函数运用起来,并且减小程序的大小void main()/主函数int fun; read_data(); menu(); while(1) system(color f0);/编辑菜单及字体颜色 printf(请输入功能号0-6:,&fun); scanf(%d,&fun); switch(fun) case 0:/ 退 出 break; case 1: /按班级输出学生成绩 view_data(); break; case 2: /输入学生记录 add(); break; case 3: /删除学生记录 d

4、elete_data(); break; case 4: /编辑学生记录 edit_data(); break; case 5: /查询学生记录 query_data_no(); break; case 6: /统计系统 query_data_tongji(); break; if(fun=0) break; to_menu(); 然后我将系统设计完整后运用了起泡法将浏览函数中加入了排序的函数,这样做可以使得输出的函数的结果更加的清晰,让使用者方便查找到要查找的对象strcpy(tmp.xueqi,dd.stui.xueqi); strcpy(tmp.no,dd.stui.no); strcp

5、y(,); tmp.clas=dd.stui.clas; tmp.chi=dd.stui.chi; tmp.math=dd.stui.math; tmp.eng=dd.stui.eng; =; tmp.sum=dd.stui.sum; tmp.aver=dd.stui.aver; strcpy(dd.stui.xueqi,dd.stuj.xueqi); strcpy(dd.stui.no,dd.stuj.no);strcpy(,); dd.stui.clas=dd.stuj.clas;

6、 dd.stui.chi=dd.stuj.chi; dd.stui.math=dd.stuj.math; dd.stui.eng=dd.stuj.eng; =; dd.stui.sum=dd.stuj.sum; dd.stui.aver=dd.stuj.aver; strcpy(dd.stuj.xueqi,tmp.xueqi); strcpy(dd.stuj.no,tmp.no); strcpy(,); dd.stuj.clas=tmp.clas; dd.stuj.chi=tmp.chi; dd.stuj.ma

7、th=tmp.math; dd.stuj.eng=tmp.eng; =; dd.stuj.sum=tmp.sum; dd.stuj.aver=tmp.aver;在系统中我将添加的函数设计为下次使用可以记录内容的,里面主要运用到了结构体中的count变量,并且加入了保存项目中,这样做使得下次使用时添加数据更加便利,仅仅运用添加就可以满足使用者的需求。最后经过了接受建议后,我将我设计的系统的结构优化为两个,函数的名字也将次级菜单中的更改为tongji1、tongji2,这样使得在修改时更为简便快捷。第五章 总结经过了这几天对程序的设计,使我更加了解程序的设计过程,以及设计的思

8、路,我将会在以后的日子里,运用上本次设计的经验,为以后的学习工作打下基础,唯一够的工作创造更好的条件。参考文献c语言设计第三版 清华大学出版社出版附录程序源代码#include #include #include #include #include #define max 200/宏定义,修改数值可以改变程序所包含的最大文件个数struct student char xueqi20;/学期 char no20; /学号 int clas;/班级 char name50; /姓名 int chi;/语文成绩int math;/数学成绩int eng;/英语成绩int com;/计算机成绩int

9、sum;int aver;struct data int count; /* 当前学生数组中学生的个数 */ struct student stumax; /* 学生数组 */ dd;void menu() /输出主菜单函数 system(cls); /清空屏幕函数 printf(n); printf(ttt*n); printf(ttt* *n); printf(ttt* 学生成绩管理系统 *n); printf(ttt* *n); printf(ttt* 0 退出 *n); printf(ttt* 1 按学号输出学生成绩 *n); printf(ttt* 2 输入学生记录 *n); pri

10、ntf(ttt* 3 删除学生记录 *n); printf(ttt* 4 编辑学生记录 *n); printf(ttt* 5 查询学生记录 *n); printf(ttt* 6 统计学生记录 *n); printf(ttt* *n); printf(ttt*n);void menu2()/输出统计系统菜单system(cls);/清空屏幕函数printf(n); printf(ttt*n); printf(ttt* *n); printf(ttt* 统计系统 *n); printf(ttt* *n); printf(ttt* 0 退出 *n); printf(ttt* 1 输出班级学生成绩 *

11、n); printf(ttt* 2 班级各科成绩平均数 *n); printf(ttt* 3 班级各科成绩总分 *n); printf(ttt* 4 不及格名单 *n); printf(ttt* *n); printf(ttt*n);void to_menu()/to_menu函数 char c1,c2; printf(nnn按回车键返回主菜单.); scanf(%c%c,&c1,&c2); menu();/调用menu函数void to_menu2()/to_menu函数 char c1,c2; printf(nnn按回车键返回上一菜单.); scanf(%c%c,&c1,&c2); men

12、u2();/调用menu函数void save_data() /保存数据函数 file *fp; int i,k; k=dd.count; fp=fopen(c:/dada.txt,w);/打开函数,打开记录文件 fwrite(&k,sizeof(int),1,fp);/写入函数,写入文件数据 for(i=0;ik;i+) fwrite(&dd.stui,sizeof(struct student),1,fp); fclose(fp);/关闭函数,关闭记录文件void read_data()/读取数据信息 file *fp; int i,k; struct student st; struct

13、 data gf; k=0; if(access(c:/dada.txt,0)=-1) /如果文件不存在 fp=fopen(c:/dada.txt,w);/打开函数,打开记录文件 fwrite(&k,sizeof(int),1,fp);/写入函数,写入文件数据 fclose(fp); fp=fopen(c:/dada.txt,r); fread(&k,sizeof(int),1,fp); dd.count=k; for(i=0;ik;i+) fread(&st,sizeof(struct student),1,fp); strcpy(dd.stui.xueqi,st.xueqi); strcp

14、y(dd.stui.no,st.no); strcpy(,); dd.stui.clas=st.clas; dd.stui.chi=st.chi; dd.stui.math=st.math; dd.stui.eng=st.eng; =; dd.stui.sum=st.sum; dd.stui.aver=st.aver; fclose(fp);/关闭函数,关闭记录的文件void view_data()/查看所有学生信息 int i,j,k; struct student tmp;k=dd.count; for(i=0;ik;i+)/该部

15、分实现为所有数据以学号进行排序,“起泡法” for(j=(i+1);j0) strcpy(tmp.xueqi,dd.stui.xueqi); strcpy(tmp.no,dd.stui.no); strcpy(,); tmp.clas=dd.stui.clas; tmp.chi=dd.stui.chi; tmp.math=dd.stui.math; tmp.eng=dd.stui.eng; =; tmp.sum=dd.stui.sum; tmp.aver=dd.stui.aver; strcpy(dd.stui.xueqi,dd.s

16、tuj.xueqi); strcpy(dd.stui.no,dd.stuj.no);strcpy(,); dd.stui.clas=dd.stuj.clas; dd.stui.chi=dd.stuj.chi; dd.stui.math=dd.stuj.math; dd.stui.eng=dd.stuj.eng; =; dd.stui.sum=dd.stuj.sum; dd.stui.aver=dd.stuj.aver; strcpy(dd.stuj.xueqi,tmp.xueqi); strcpy(dd

17、.stuj.no,tmp.no); strcpy(,); dd.stuj.clas=tmp.clas; dd.stuj.chi=tmp.chi; dd.stuj.math=tmp.math; dd.stuj.eng=tmp.eng; =; dd.stuj.sum=tmp.sum; dd.stuj.aver=tmp.aver; printf(学期t学号t班级t姓名tt语文t数学t英语t计算机t总分t平均分); printf(n-n); for(i=0;ik;i+) printf(%st%st%-8d%stt%-8d%-8d%-8d%-

18、12d%-8d%-8dn,dd.stui.xueqi,dd.stui.no,dd.stui.clas,,dd.stui.chi,dd.stui.math,dd.stui.eng,,dd.stui.sum,dd.stui.aver);void add()/添加学生信息 struct student st; int b,k; while(1) k=dd.count; printf(n请输入学生信息:); printf(n学期); printf(n-n); getchar(); gets(dd.stuk.xueqi); printf(n学号); prin

19、tf(n-n);gets(dd.stuk.no);printf(n班级); printf(n-n);scanf(%d,&dd.stuk.clas);printf(n姓名); printf(n-n); getchar();gets();printf(n语文); printf(n-n); scanf(%d,&dd.stuk.chi); printf(n数学); printf(n-n); scanf(%d,&dd.stuk.math); printf(n英语); printf(n-n); scanf(%d,&dd.stuk.eng); printf(n计算机); printf

20、(n-n); scanf(%d,&); dd.stuk.sum=dd.stuk.chi+dd.stuk.math+dd.stuk.eng+; dd.stuk.aver=dd.stuk.sum/4;dd.count+;printf(nn继续添加学生信息1-yes 0-no:); scanf(%d,&b); if(b=0) break; save_data();void delete_data()/删除学生记录 int i,j; char no20; j=dd.count-1; view_data(); printf(n请输入要删除学生的学号:); sc

21、anf(%s,&no); for(i=0;idd.count;i+) if(strcmp(dd.stui.no,no)=0) strcpy(dd.stui.xueqi,dd.stuj.xueqi); strcpy(dd.stui.no,dd.stuj.no); dd.stui.clas=dd.stuj.clas;strcpy(,); dd.stui.chi=dd.stuj.chi;dd.stui.math=dd.stuj.math;dd.stui.eng=dd.stuj.eng;=;dd.stui.su

22、m=dd.stuj.sum;dd.stui.aver=dd.stuj.aver;dd.count-;save_data();printf(nn删除(学号-%s)成功!,no); break; if(i=(dd.count-1) printf(nn没有找到该学生(学号-%s)!,no);save_data();void edit_data()/编辑学生记录 int i,k; char no10,name50; printf(n请输入要编辑学生的学号:); scanf(%s,no); k=-1; for(i=0;idd.count;i+) if(strcmp(dd.stui.no,no)=0) k

23、=i; break; if(k=-1) printf(nn没有找到该学生(学号-%s)!,no); else printf(n请输入学生信息:); printf(n学期); printf(n-n); getchar(); gets(dd.stuk.xueqi); printf(n学号); printf(n-n); gets(dd.stuk.no);printf(n班级); printf(n-n);scanf(%d,&dd.stuk.clas);printf(n姓名); printf(n-n); getchar();gets();printf(n语文); printf(n

24、-n); scanf(%d,&dd.stuk.chi); printf(n数学); printf(n-n); scanf(%d,&dd.stuk.math); printf(n英语); printf(n-n); scanf(%d,&dd.stuk.eng); printf(n计算机); printf(n-n); scanf(%d,&); dd.stuk.sum=dd.stuk.chi+dd.stuk.math+dd.stuk.eng+; dd.stuk.aver=dd.stuk.sum/4; save_data();void query_data_n

25、o()/查询学生记录 int i; char no20; printf(n请输入要查询学生学号:); scanf(%s,&no); printf(nn学期t学号t班级t姓名t语文t数学t英语t计算机t总分t平均分); printf(n-n); for(i=0;(idd.count);i+) if(strcmp(dd.stui.no,no)=0) printf(%st%st%-8d%st%-8d%-8d%-8d%-12d%-8d%-8dn,dd.stui.xueqi,dd.stui.no,dd.stui.clas,,dd.stui.chi,dd.stui.math,dd.

26、stui.eng,,dd.stui.sum,dd.stui.aver); break; if(i=dd.count) printf(nnnn没有找到该学生(姓名-%s)!); void tongji1()/输出某班所有学生的成绩int i;int clas;printf(请输入要查询的班级:);scanf(%d,&clas);printf(nn学期t学号t班级t姓名tt语文t数学t英语t计算机t总分t平均分); printf(n-n); for(i=0;idd.count;i+)if(dd.stui.clas)=clas) printf(%st%st%-8d%stt%-8

27、d%-8d%-8d%-12d%-8d%-8dn,dd.stui.xueqi,dd.stui.no,dd.stui.clas,,dd.stui.chi,dd.stui.math,dd.stui.eng,,dd.stui.sum,dd.stui.aver);void tongji2()/输出某班各科成绩平均值的函数int i,j;int k=0;float chi=0,math=0,eng=0,com=0;printf(nnn请输入要查询的班级:);scanf(%d,&k);for(i=0,j=0;idd.count;i+)if(k=dd.stui.c

28、las)chi=dd.stui.chi+chi;math=dd.stui.math+math;eng=dd.stui.eng+eng;com=+com;j+;if(j!=0)printf(n%d班n语文成绩平均分为%fn数学成绩平均分为%fn英语成绩平均分为%fn计算机成绩平均分为%fnn,k,(chi/j),(math/j),(eng/j),(com/j);elseprintf(没有该班信息);void tongji3()/输出各科总成绩的函数int i;int k,j;float chi=0,math=0,eng=0,com=0;printf(nnn请输入要查询的班级

29、:);scanf(%d,&k);for(i=0,j=0;idd.count;i+)if(k=dd.stui.clas)chi+=dd.stui.chi;math+=dd.stui.math;eng+=dd.stui.eng;com+=;if(k!=0)printf(n%d班n语文成绩总分为%fn数学成绩总分为%fn英语成绩总分为%fn计算机成绩总分为%fnn,k,chi,math,eng,com);elseprintf(没有该班信息);void tongji4()/输出不及格名单的函数int i; read_data();/调用read_data()函数 printf(不

30、及格名单:n); printf(班级t学期t学号t姓名t不及格科目); printf(n-n);for(i=0;idd.count;i+) if(dd.stui.chi)60) system(color fc);/变换菜单颜色 printf( %dt%st%st%st%d(语文)n,dd.stui.clas,dd.stui.xueqi,dd.stui.no,,dd.stui.chi); if(dd.stui.math)60) printf( %dt%st%st%st%d(数学)n,dd.stui.clas,dd.stui.xueqi,dd.stui.no,dd.stui

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论