学生成绩管理实验报告.doc_第1页
学生成绩管理实验报告.doc_第2页
学生成绩管理实验报告.doc_第3页
学生成绩管理实验报告.doc_第4页
学生成绩管理实验报告.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

学生成绩管理一、系统概况设计目的:通过课程设计使学生综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,在所掌握的基本知识和技能的基础上,进一步提高自学能力和查找资料的能力,解决一定程度的复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生我们利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。二.总体设计总体功能要求:(1)链表的建立,每个节点包括:学号、姓名、性别、语文、数学、英语、平均分。(2)节点的插入,按学号的顺序插入。(3)删除链表中的节点,按学号或者姓名。 功能模块图、流程图(要求有总体的功能模块图、各部分流程图):开始主菜单选择操作选择1输入数据姓名学号性别输入成绩1输入成绩2输入成绩3选择2显示数据选择3排序按平时成绩选择4排序按成绩选择5添加按学生信息选择6删除按学号选择7修改按姓名选择8查询按姓名选择9读取数据选择10删除数据选择11保存数据选择12退出系统结束图1 进入系统图2.学生数据键盘输入图3 按成绩排序三.详细设计模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等): 1数据录入:数据录入的功能是将需要的数据进行录入,用于后面的各项操作。实现:用输入函数对数据进行录入,先确定学生的个数,再用一个循环进行输入,选修课程数量亦然。2. 数据插入: 数据插入的主要功能是在数据录入之后,为防止数据输入的遗漏,实现:分为两个部分,第一个是插入第一个位置,第二是插入第一个位置之后,把当前的位置赋给后面的加以实现。3数据查询: 数据查询的主要功能是在数据输入之后进行分类再现,实现:分为输出所有数据,按学号查询,按姓名查询,当输入的数据满足条件时即输出所要求的。 4. 数据删除:数据删除的主要功能是在数据录入、数据插入和数据修改完成之后对无用数据进行删除,实现:输入学号,满足条件时即把后一个数值赋给前一个数值,达到删除的目的。5平均值计算:平均值计算的主要功能是求平均值,再对其进行排序,实现:用公式进行计算求平均值,之后便是排序问题,求最大值,然后依次输出各最大值,即实现了排序功能。四.源程序清单和执行结果:#include #include /*清屏*/ #include /*显示目录*/ #include #define MAX 1000 void input(); /*输入数据函数*/ void sort();/*排序数据函数*/ void display();/*显示数据函数*/ void display1();/*显示各科成绩函数*/ void insert(); /*插入数据函数*/ void del(); /*删除数据函数*/ void average(); /*平均值函数*/ void find();/*查找数据函数*/ void save(); /*保存数据函数*/ void read(); /*读出数据函数*/ void del_file(); /*删除文件函数*/ void modify(); /*修改文件函数*/ int now_no=0; struct student unsigned long no; char name20; char sex4; float score1; float score2; float score3; float sort; float ave; float sum; ; struct student stuMAX,*p; void main()/*主函数*/ int as; char ch; do printf(nnnntt*&*&*&*&*&*&*&*&*&*); start: printf(nnnnttt 欢迎使用学生成绩管理系统n); printf(nnnntt*按任意键继续*); ch=getch(); while(!ch); system(cls); /*一下为功能选择模块*/ do printf(ntttt1.录入学生信息ntttt2.显示学生总成绩信息ntttt3.对总成绩排序ntttt4.显示学生单科成绩排序ntttt5.添加学生信息ntttt6.删除学生信息ntttt7.修改学生信息ntttt8.查询学生信息ntttt9.从文件读入学生信息ntttt10.删除文件中学生信息ntttt11.保存学生信息ntttt12.退出n); printf(tttt选择功能选项(输入所选功能前的数字):); fflush(stdin); /*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/ scanf(%d,&as); switch(as) case 1:system(cls); input(); break; case 2:system(cls); display(); break; case 3:system(cls); sort(); break; case 4:system(cls); display1(); break; case 5:system(cls); insert(); break; case 6:system(cls); del(); break; case 7:system(cls); modify(); break; case 8:system(cls); find(); break; case 9:system(cls); read(); break; case 10:system(cls); del_file(); break; case 11:system(cls); save(); break; case 12:system(exit); exit(0); default:system(cls); goto start; while(1);/*while(1),1表示真,所以while(1)表示永远循环下去, */ /*至此功能选择结束*/ void input()/*原始数据录入模块*/ int i=0; char ch; do printf(tttt1.录入学生信息n输入第%d个学生的信息n,i+1); printf(n输入学生学号:); scanf(%u,&stui.no); fflush(stdin); printf(n输入学生姓名:); fflush(stdin); gets(); printf(n输入学生性别:); fflush(stdin); gets(stui.sex); printf(n输入学生成绩1:); scanf(%f,&stui.score1); printf(n输入学生成绩2:); fflush(stdin); scanf(%f,&stui.score2); printf(n输入学生成绩3:); fflush(stdin); scanf(%f,&stui.score3); printf(nn); i+; now_no=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); system(cls); void sort()/*排序数据函数*/ struct student temp; int i,j; average(); for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.avestuj.ave) temp=stuj; stuj=stuj-1; stuj-1=temp; printf(排序以完成进入功能2可进行显示n); system(pause); system(cls); void sort1()/*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score1stuj.score1) temp=stuj; stuj=stuj-1; stuj-1=temp; void sort2()/*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score2stuj.score2) temp=stuj; stuj=stuj-1; stuj-1=temp; void sort3()/*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score3stuj.score3) temp=stuj; stuj=stuj-1; stuj-1=temp; void display()/*显示数据函数*/ int i; char as; average(); do printf(ttt班级学生信息列表n); printf(t学号tt姓名t性别t成绩1t成绩2t成绩3t平均值n); for(i=0;inow_no&0;i+) printf(t%ut%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls); void display1()/*显示数据函数*/ int i; char as; do printf(ttt班级学生score1成绩排序n); printf(t学号tt姓名t性别t成绩1n); sort1(); for(i=0;inow_no&0;i+) printf(t%ut%st%st%.2ftn,stui.no,,stui.sex,stui.score1); printf(ttt班级学生score2成绩排序n); printf(t学号tt姓名t性别t成绩2n); sort2(); for(i=0;inow_no&0;i+) printf(t%ut%st%st%.2ftn,stui.no,,stui.sex,stui.score2); printf(ttt班级学生score3成绩排序n); printf(t学号tt姓名t性别t成绩3n); sort3(); for(i=0;inow_no&0;i+) printf(t%ut%st%st%.2ftn,stui.no,,stui.sex,stui.score3); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls); void insert()/*插入数据函数*/ char ch; do printf(ntt输入新插入学生信息n); printf(n输入学生学号:); scanf(%u,&stunow_no.no); fflush(stdin); printf(n输入学生姓名:); fflush(stdin); gets(stunow_); printf(n输入学生性别:); fflush(stdin); gets(stunow_no.sex); printf(n输入学生成绩1:); fflush(stdin); scanf(%f,&stunow_no.score1); printf(n输入学生成绩2:); fflush(stdin); scanf(%f,&stunow_no.score2); printf(n输入学生成绩3:); fflush(stdin); scanf(%f,&stunow_no.score3); printf(nn); now_no=now_no+1; sort(); printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); void del()/*删除数据函数*/ unsigned long inum; int i; printf(输入要删除学生的学号:); fflush(stdin); scanf(%u,&inum); for(i=0;inow_no;i+) if(stui.no=inum) if(i=now_no)now_no-=1; else stui=stunow_no-1; now_no-=1; sort(); break; system(cls); void save()/*保存数据函数*/ FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,w)=NULL) printf(n保存失败!); exit(0); for(i=0;inow_no;i+) stui.sum=stui.score1+stui.score2+stui.score3; stui.ave=stui.sum/3; fprintf(fp,t%ut%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); fclose(fp); printf(学生信息已保存在%s中!n,filepath); system(pause); system(cls); void find()/*查询函数*/ int i; char str20,as; do printf(输入要查询的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(,str) printf(t学号tt姓名t性别t成绩1t成绩2t成绩3t平均值n); printf(t%ut%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls); void average()/*求平均数*/ int i; for(i=0;inow_no;i+) stui.sum=stui.score1+stui.score2+stui.score3; stui.ave=stui.sum/3; void modify()/*修改数据函数*/ int i; char str20; printf(输入要修改的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(,str) system(cls); printf(ntt输入新插入学生信息n); printf(n输入学生学号:); fflush(stdin); scanf(%u,&stui.no); printf(n输入学生性别:); fflush(stdin); gets(stui.sex); printf(n输入学生成绩1:); fflush(stdin); scanf(%f,&stui.score1); printf(n输入学生成绩2:); fflush(stdin); scanf(%f

温馨提示

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

评论

0/150

提交评论