C课程设计---学生成绩管理系统.doc_第1页
C课程设计---学生成绩管理系统.doc_第2页
C课程设计---学生成绩管理系统.doc_第3页
C课程设计---学生成绩管理系统.doc_第4页
C课程设计---学生成绩管理系统.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

二一二一一 学年第 一 学期信息科学与工程学院课程设计报告书课程名称: 班 级: 学 号: 姓 名: 指导教师: 二一 年 九 月学生成绩管理程序一、 需求分析:设计要求:u 能录入学生信息存储在文件中,每位学生录入的信息有:姓名、学号、性别、班级、和三门功课(数学,英语,计算机)的成绩。如: 学号 姓名 性别 班级 数学 英语 计算机 0701 王鹏 男 1班 70 58 980702 李燕 女 2班 68 88 950703 赵亚芳 女 3班 58 48 96 0704 刘飞 男 4班 67 78 58u 能够统计每个学生三门课程的总成绩;u 能按学生学号查询其三门功课成绩并显示;u 能浏览全部学生成绩;u 能按总成绩由高到低显示学生信息。系统功能分析: 该学生成绩管理系统有八大功能:1. 录入功能:能录入学生的学号,姓名,性别,英语,计算机等2. 排序功能:能按总分排序3. 查询功能:能按姓名查找该生的成绩并且显示其全部成绩4. 删除功能:能按学号删除某一个学生的成绩5. 修改功能:能按姓名修改某个学生的成绩6. 插入功能:能在已输入的成绩中插入一个新学生的成绩7. 显示功能:操作完以上的功能后每次返回主菜单选择该项便可将结果显示出来8. 保存与读取功能:能将数据自定义的txt格式保存在外部磁盘并且读取,二、 概要设计:(1) 主函数结构图: 主 函 数 录 入 模 块 排 序 模 块 删 除 模 块 修 改 模 块 插 入 模 块 显 示 模 块 查 询 模 块保 存 和 入 读 模 块(2)模块功能详细说明及思路:a、录入模块:此模块可以连续输入80个学生的资料,若学生数少于80,录入完后输入n就可退出此模块,输入y可以继续b、排序模块:在此模块可以将已经输入进来的学生按总分进行排序,此处排序使用的冒泡排序法c、查询模块:此模块中使用学生姓名对比查找,如对比存在就显示出来d、修改模块:此模块中先通过姓名对比找到要修改的学生成绩,然后覆盖原来已有的成绩从而达到修改某一个学生的任何一门功课的成绩e、删除模块:此模块中用到的删除原理为覆盖要删除的学生的资料。过程简述,先输入要删除的学生的学号,系统找到此学生的信息后会给一个提示,是否删除信息,如是系统会再次要求输入学号并给它复制下一个学生的信息,给下一个学生的纪录复制下下一个学生的信息,一直到最后一个学生的信息复制给倒数第二个学生的信息为止。然后文件中的学生总数减一。f、插入模块:此模块能是在定义num当前已有的学生个数后,通过循环在后面加入的,直到输入n或n为止,即可完成插入函数g、显示模块:此模块能是被其它函数调用执行一次操作,再回到主菜单调用显示出经过以上操作的最终结果h、保存和读入模块:此模块能将信息以txt形式保存在外部磁盘上,并且也能从外部磁盘读入给程序使用三、详细设计: (1)各个模块的程序流程图开始输入添加的学号i输入各门科的成绩结束输入添加的姓名i输入添加的性别和班级录入模块: 删 除 模 块:stui=stunum-1;multii=numstui.no=inumsystem(cls);i+inumi=0输入序号i求和函数:stui.sum=stui.math+stui.english+puter;int i;i+inumi=0排序模块:temp=stuj;j+j=num-ij=1i+inumi=1struct student temp;stuj-1.sumstuj.sum查询模块:multii+inumi=0system(cls);!asint i;printf(输入要查询的学生姓名:);printf(tt按任意键返回主菜单.);插入模块ch!=n&ch!=nchar ch;printf(ntt输入新插入学生信息n);修改模块:break;system(cls);system(cls);i+inumi=0inti;保存模块:stui.sum=stui.math+stui.english+puter;printf(n保存失败!);fclose(fp);i+inumi=0file*fp;(fp=fopen(filepath,w)=null打开模块:fscanf(fp,t学号t姓名t性别t班级t数学t英语t计算机t平均分t总分n);fclose(fp);i+imax&!feof(fp)i=0num=0;file*fp;(fp=fopen(filepath,r)=nullprintf(找不到%s文件!n,filepath);三、 主要程序代码清单及关键注释1,程序源代码:#include#include #include#define max 80void input();/*原始数据录入函数*/void output();/*显示操作结果函数*/void sortall();/*对总分分排序*/void find();/*根据姓名查找成绩*/void insert();/*插入一个成绩*/void del();/*删除成绩记录*/void change();/*修改记录*/void save();/*保存函数*/void read();/*读入函数*/void average();/*求平均分*/int num=0; struct student /学生信息 int no; char name20; char sex4; char ban8; float math; float english; float computer; float ave; float sum;struct student stumax,*p;void main()/*主函数*/ int as; int i;start: printf(%55sn, 3武汉科技大学学生成绩管理系统3n); printf(t444444444444444444444444444444444444444444444444444444444444n); printf( 制作者:武汉科技大学信息科学与工程学院自动化0901 肖小龙 n); do for (i = 0; i 80; i+) putchar(=); putchar(n); printf( 5 1 输入信息 5 2 输出信息n); printf( 5 3 按平均分排序 5 4 按姓名查找n); printf( 5 5 插入 5 6 按学号删除n); printf( 5 7 按姓名修改 5 8 保存到文件 n); printf( 5 9 读取文件 5 0 退出n);for (i = 0; i= 79; i+) putchar(=); putchar(n); printf(%sn, 6请输入各操作对应的序号:); fflush(stdin); scanf(%d,&as); switch(as) case 1:system(cls);input();break; case 2:system(cls);output();break; case 3:system(cls);sortall();break; case 4:system(cls);find();break; case 5:system(cls);insert();break; case 6:system(cls);del();break; case 7:system(cls);change();break; case 8:system(cls);save();break; case 9:system(cls);read();break; case 0:system(exit);exit(0); default:system(cls);goto start; while(1);void input()/*原始数据录入模块*/ int i=0; char ch; do printf(tttt1.录入学生信息n5请输入第%d个学生的信息5n,i+1); printf(111111111111111111n); printf(111111111111111111n); printf(n6输入学生学号:); scanf(%d,&stui.no); fflush(stdin); printf(n6输入学生姓名:); fflush(stdin); gets(); printf(n6输入学生性别:); fflush(stdin); gets(stui.sex); printf(n6输入学生班级:); fflush(stdin); gets(stui.ban); printf(n6输入学生数学成绩:); fflush(stdin); scanf(%f,&stui.math); printf(n6输入学生英语成绩:); fflush(stdin); scanf(%f,&stui.english); printf(n6输入学生计算机成绩:); fflush(stdin); scanf(%f,&puter); printf(nn); i+; num=i; printf(是否继续输入?(y/n); fflush(stdin); ch=getchar(); system(cls); while(ch!=n&ch!=n); system(cls);void output()/*显示数据函数*/ int i; char as; average(); do printf(ttt5班级学生信息表5n);for(i=0;i80;i+) putchar(-);printf(t|学号t|姓名t|性别t|班级t|数学t|英语t|计算机t|平均分t|总分);putchar(n); for(i=0;i80;i+) putchar(=); for(i=0;inum&0;i+) printf(t%dt%st%st%st%.2ft%.2ft%.2ft%.2ft%.2f,stui.no,,stui.sex,stui.ban,stui.math,stui.english,puter,stui.ave,stui.sum); putchar(n); for(i=0;i80;i+) putchar(=); putchar(n); printf(按回车键继续:); getchar(); getchar(); as=getchar(); while(!as);system(cls);void average()/*求平均数*/ int i; for(i=0;inum;i+) stui.sum=stui.math+stui.english+puter; stui.ave=stui.sum/3; void sortall()/*按总分排序数据函数*/ struct student temp; int i,j; average(); for(i=1;inum;i+) for(j=1;j=num-i;j+) if(stuj-1.sumstuj.sum) temp=stuj; stuj=stuj-1; stuj-1=temp; void find()/*查询函数*/ int i; char str20,as; do printf(tt3欢迎进入查询系统3n); printf(4请输入要查询的学生姓名:); fflush(stdin); gets(str); for(i=0;inum;i+) if(!strcmp(,str) printf(t|学号t|姓名t|性别t|班级t|数学t|英语t|计算机t|平均分t|总分|n); printf(t%dt%st%st%st%.2ft%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.ban,stui.math,stui.english,puter,stui.ave,stui.sum); for(i=0;i80;i+)putchar(=); putchar(n); printf(tt4按任意键返回主菜单.); fflush(stdin); as=getchar(); while(!as); system(cls);void insert()/*插入数据函数*/ char ch; do printf(tt3欢迎进入插入系统:3n); printf(ntt6请输入新插入学生信息n); printf(n6输入学生学号:); scanf(%d,&stunum.no); fflush(stdin); printf(n6请输入学生姓名:); fflush(stdin); gets(); printf(n6请输入学生性别:); fflush(stdin); gets(stunum.sex); printf(n6请输入学生班级:); fflush(stdin); gets(stunum.ban); printf(n6请输入学生数学成绩:); fflush(stdin); scanf(%f,&stunum.math); printf(n6请输入学生英语成绩:); fflush(stdin); scanf(%f,&stunum.english); printf(n6请输入学生计算机成绩:); fflush(stdin); scanf(%f,&puter); printf(nn); num=num+1; sortall(); printf(是否继续输入?(y/n); fflush(stdin); ch=getchar(); system(cls); while(ch!=n&ch!=n);void del()/*删除数据函数*/ int inum,i; char ch; printf(tt3欢迎进入删除系统:3n); printf(5输入要删除学员的编号:); scanf(%d,&inum); printf(6你真想删除该学生的信息吗?一但删除不能恢复6n); printf(是否继续?(y/n); fflush(stdin); ch=getchar(); system(cls); if(ch=y|ch=y) printf(6请再次输入要删除学员的编号:); scanf(%d,&inum); else goto a; for(i=0;inum;i+) if(stui.no=inum) if(i=num) num-=1; else stui=stunum-1; num-=1; sortall(); break; printf(删除成功!); a:; system(cls);void change()/*修改数据函数*/ int i; char str20; printf(tt欢迎进入成绩修改系统:); printf(6输入要修改的学生姓名:); fflush(stdin); gets(str); for(i=0;inum;i+) if(!strcmp(,str) system(cls); printf(ntt6请输入新插入学生信息n); printf(n输入学生学号:); scanf(%d,&stui.no); fflush(stdin); printf(n6输入学生姓名:); fflush(stdin); gets(); printf(n6输入学生性别:); fflush(stdin); gets(stui.sex); printf(n6输入学生班级:); fflush(stdin); gets(stui.ban); printf(n6输入学生数学成绩:); fflush(stdin); scanf(%f,&stui.math); printf(n6输入学生英语成绩:); fflush(stdin); scanf(%f,&stui.english); printf(n6输入学生计算机成绩:); fflush(stdin); scanf(%f,&puter); printf(nn); sortall(); 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); fprintf(fp,t|学号t|姓名t|性别t|班级t|数学t|英语t|计算机t|平均分t|总分n); for(i=0;inum;i+) stui.sum=stui.math+stui.english+puter; stui.ave=stui.sum/3; fprintf(fp,t%dt%st%st%st%.2ft%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.ban,stui.math,stui.english,puter,stui.ave,stui.sum); fclose(fp); printf(学生信息已保存在%s中!n,filepath); system(pause); system(cls);void read()/*读取功能*/ file *fp; int i; char filepath20; printf(输入要读入的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,r)=null) printf(找不到%s文件!n,filepath); system(pause); exit(0); num=0; for(i=0;imax&!feof(fp);i+) fscanf(fp,t学号t姓名t性别t班级t数学t英语t计算机t平均分t总分n); fscanf(fp,t%dt%st%st%st%.2ft%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.sex,stui.ban,stui.math,stui.english,puter,stui.ave,stui.sum); num+; fclose(fp); printf(保存的在文件%s中的所有信息已经读入!n,filepath); system(pause); system(cls); 五,调试分析过程描述:数据测试1、 菜单主页面2、 选择输入信息添加完毕后回到主菜单,选择2,显示添加成功可以看到总分一栏并未被排序,返回主菜单选择3,再选择2即可显示可以看到排序成功,证明排序功能存在3、

温馨提示

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

评论

0/150

提交评论