成都工业学院学生成绩管理系统专周报告剖析_第1页
成都工业学院学生成绩管理系统专周报告剖析_第2页
成都工业学院学生成绩管理系统专周报告剖析_第3页
成都工业学院学生成绩管理系统专周报告剖析_第4页
成都工业学院学生成绩管理系统专周报告剖析_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

19成都工业学院,软件工程,C语言程序设计专周成都工业学院课 程 设 计 报 告课程名称 C语言课程设计 课题名称 成绩管理系统 专 业 软件工程(2)班 班 级 班 学 号 姓 名 陈 光 超 指导教师 杨 明 广 2016年2月26日一 题目要求 1. 问题描述:对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.2. 要求:(1)一个文件按以班为单位存储学生记录.(2)将允许的操作分为8种, 1, 录入学生成绩 2, 查看学生成绩3, 修改学生成绩4, 删除学生成绩 5, 学生成绩排序 6, 写入五个默认成绩 7, 查看本程序开发说明0, 退出管理系统3. 计算学生的总成绩.4. 按学号,各科成绩,总分排序输出学生成绩表.二 设计目的根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三 总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.4 程序总结满足专周程序设计要求,程序抗干扰性强。程序版本1-20添加功能,以及相应模块。程序版本21-29修复BUG,以及界面UI调节。五详细设计1. 主函数(以及其它界面UI函数):主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.其他界面UI函数和主函数类似。流程图:显示一系列功能模块 N输入n,判断n是否是0-7 Y根据n的值调用各功能模块函数2. 录入功能int entry();单独输入各项信息,有益于提示用户操作情况。将输入的信息存储在全局变量中,有益于对数据进行操作。3. 查询模块int check(int);传入查询参数,根据参数返回学生序号4. 删除模块int del(int);先调用查询模块返回学生序号,根据序号删除学生,并返回删除执行情况5. 修改模块(集成于void change_ui();)先调用查询模块返回学生序号,再根据序号执行删除功能,最后执行录入功能6. 排序功能void sort(float *,int,int);对某一科逐个排序,同时对学生信息排序,排序完成,重新写入文件。7. 输出功能int pscore(int);传入学生序号,根据序号输出学生信息。6 程序原代码注释:源代码下载地址/mywork/*/*成绩管理系统,软件版本 29 */* 班上学号 */* 此版本修复各种BUG */*/#include#include#includeint pscore(int);/成绩输出功能void menu();/主界面菜单void entry_ui();/录入界面int entry();/录入功能void check_ui();/查看界面int check(int);/查看功能void change_ui();/修改成绩界面void del_ui();/删除界面int del(int);/删除功能void sort_ui();/排序界面void sort(float *,int,int);/排序功能(仅数据)void defs();/写入程序自带成绩,五个成绩void dscreen();/清屏函数,清空缓存区,再输出当前学生数int dask();/是否执行操作判断void about();/关于本程序struct studentchar name20;int id;float chinese;float math; float english;float sum;float average;P101;float sa101;/临时储存浮点型数据(排序使用)void main()while(1)menu();void menu()/菜单界面dscreen();printf(*n);printf(* 学生成绩管理系统 *n);printf(* 1,录入学生成绩 *n);printf(* 2,查看学生成绩 *n);printf(* 3,修改学生成绩 *n);printf(* 4,删除学生成绩 *n);printf(* 5,学生成绩排序 *n);printf(* 6,写入五个默认成绩 *n); printf(*7,查看本程序开发说明*n);printf(* 0,退出管理系统 *n);printf(*n);int n;scanf(%d,&n);fflush(stdin);switch(n)case 0:exit(0);break;case 1:entry_ui();break;case 2:check_ui();break;case 3:change_ui();break;case 4:del_ui();break;case 5:sort_ui();break; case 6:defs();break;case 7:about();break;default:printf(提示(主界面):输入错误,按任意键继续。n);fflush(stdin);getchar();void entry_ui()/成绩录入界面while(1) FILE *fp;fp=fopen(score.dat,a+);dscreen();printf(当前功能:录入学生成绩*n);printf(请输入 姓名 学号 语文 数学 英语n);if(!entry()break;fwrite(&P0,sizeof(P0),1,fp);fclose(fp);printf(成绩录入成功!);printf(按任意键继续。n);fflush(stdin);getchar();void check_ui()/查看成绩界面while(1)int acheck=-1;/赋初值,防止循环时,读取上一个值dscreen();printf(当前功能:学生成绩查询*n);printf(1,按照姓名查询n);printf(2,按照学号查询n);printf(3,语文不及格查询n);printf(4,数学不及格查询n);printf(5,英语不及格查询n);printf(6,全部学生成绩查询n);printf(0,返回管理系统n);printf(提示(查询):请输入选择项:);scanf(%d,&acheck);fflush(stdin);if(acheck=0)/返回管理系统break;if(acheck6)printf(输入错误!);elseswitch(acheck)case 1:if(!pscore(check(1) printf(没有这个姓名!); elseprintf(查询成功!);break;case 2:if(!pscore(check(2) printf(没有这个学号!); elseprintf(查询成功!);break;case 3:check(3);printf(查询成功!);break;case 4:check(4);printf(查询成功!);break;case 5:check(5);printf(查询成功!);break;case 6:check(6);printf(查询成功!);break;printf(按任意键继续。n);fflush(stdin);getchar();void change_ui()/修改成绩界面while(1)int achange=-1,bchange=-1;FILE *fpch;fpch=fopen(score.dat,a+);dscreen();printf(当前功能:学生成绩修改*n);printf(1,输入学生序号修改n);printf(2,输入学生姓名修改n);printf(3,输入学生学号修改n); printf(0,返回管理系统n);printf(提示(修改):请输入选择项:);scanf(%d,&bchange);fflush(stdin);if(bchange=0)break;if(bchange3)printf(输入错误!);else/根据check()函数返回学生序号,赋值给bchangif(bchange=1)check(6);printf(请输入学生序号:);fflush(stdin);scanf(%d,&achange);fflush(stdin);if(0=achange|achangepscore(-3)achange=0;printf(没有这个序号!);if(bchange=2)if(!(achange=check(1)printf(没有这个姓名!);if(bchange=3)if(!(achange=check(2)printf(没有这个学号!);if(achange)printf(正在执行修改操作!n);if(!entry()break;if(dask()/删除check()函数返回的学生序号bchange,并重新写入成绩del(achange);fwrite(&P0,sizeof(P0),1,fpch);/重新写入成绩printf(成绩修改成功!);printf(按任意键继续。n);fclose(fpch);fflush(stdin);getchar();void del_ui()/删除界面while(1)int a=5,bdel=-1;FILE *fp;fp=fopen(score.dat,a+);dscreen();printf(当前功能:学生成绩删除*n);printf(1,删除全部学生成绩n);printf(2,输入学生序号删除n);printf(3,输入学生姓名删除n);printf(4,输入学生学号删除n);printf(0,返回管理系统n);printf(提示(删除):请输入选择项:);scanf(%d,&a);fflush(stdin);if(a=0)break;if(a4)printf(输入错误!);if(a=0&a0;i-)/pscore(-3)数据有变动,从后向前删除,del(i);printf(成绩删除成功!);elseif(a=2)/根据序号删除check(6);printf(请输入学生序号:);fflush(stdin);scanf(%d,&bdel);fflush(stdin);if(!(0bdel&bdelpscore(-3)bdel=0;printf(没有这个序号!);if(a=3)/根据姓名删除if(!(bdel=check(1)printf(没有这个姓名!);if(a=4)/根据学号删除if(!(bdel=check(2)printf(没有这个学号!);if(bdel)if(dask()/删除check()函数返回的学生序号bdel,并且bdel不能为O。del(bdel);printf(成绩删除成功!);elseprintf(操作取消,);printf(按任意键继续。n);fclose(fp);fflush(stdin);getchar();void sort_ui()/排序界面while(1)student ssort100;int asort=-1,i=1,j=pscore(-3);FILE *fp;fp=fopen(score.dat,r);while(!feof(fp)fread(&ssorti,sizeof(P0),1,fp);i+;fclose(fp);dscreen();printf(当前功能:学生成绩排序n);printf(1,学号排序n);printf(2,语文成绩排序n);printf(3,数学成绩排序n);printf(4,英语成绩排序n);printf(5,总成绩排序n);printf(0,返回管理系统n);printf(提示(排序):请输入选择项:);scanf(%d,&asort);fflush(stdin);if(asort=0)/返回管理系统break;if(asort5)printf(输入错误!);elsepscore(-1);if(asort=1)/学号成绩排序for(i=1;i=j;i+)sai=(float)(ssorti.id);sort(sa,j,0);if(asort=2)/语文成绩排序for(i=1;i=j;i+)sai=ssorti.chinese;sort(sa,j,1);if(asort=3)/数学成绩排序for(i=1;i=j;i+)sai=ssorti.math;sort(sa,j,1);if(asort=4)/英语成绩排序for(i=1;i=j;i+)sai=ssorti.english;sort(sa,j,1);if(asort=5)/总成绩排序for(i=1;i=j;i+)sai=ssorti.sum;sort(sa,j,1);fp=fopen(score.dat,w);fp=fopen(score.dat,a+);for(i=1;i=j;i+)/重新写入排序后的成绩fwrite(&Pi,sizeof(P0),1,fp);fclose(fp);pscore(-2);/输出所有成绩printf(排序成功!);printf(按任意键继续。n);fclose(fp);fflush(stdin);getchar();int check(int a)/成绩查询功能student Pcheck100;int i=1;FILE *fp;fp=fopen(score.dat,r);while(!feof(fp)fread(&Pchecki,sizeof(P0),1,fp);i+;if(a=1)/按照姓名查询char an20;printf(请输入姓名:);fflush(stdin);scanf(%s,an);for(i=1;i=pscore(-3);i+)if(strcmp(an,P)=0)return i;if(a=2)/按照学号查询int a=0;printf(请输入学号:);scanf(%d,&a);fflush(stdin);for(i=1;i=pscore(-3);i+)if(a=Pchecki.id)return i;if(a=3)/语文不及格学生printf(语文不及格学生信息n);pscore(-1);for(i=1;i=pscore(-3);i+)if(Pchecki.chinese60)pscore(i);if(a=4)/数学不及格学生printf(数学不及格学生信息n);pscore(-1);for(i=1;i=pscore(-3);i+)if(Pchecki.math60)pscore(i);if(a=5)/英语不及格学生printf(数学不及格学生信息n);pscore(-1);for(i=1;i=pscore(-3);i+)if(Pchecki.english60)pscore(i);if(a=6)/全部学生成绩printf( n);pscore(-1);pscore(-2);fclose(fp);return 0;int entry()/成绩录入功能while(1)printf(正在输入学生成绩.输入eof取消操作。n);printf(请输入 姓名:);scanf(%s,P0.name);fflush(stdin);if(!strcmp(P0.name,eof)/判断是否退出输入break;printf(请输入 学号:);scanf(%d,&P0.id);fflush(stdin);printf(请输入 语文:);scanf(%f,&P0.chinese);fflush(stdin);printf(请输入 数学:);scanf(%f,&P0.math);fflush(stdin);printf(请输入 英语:);scanf(%f,&P0.english);fflush(stdin);P0.sum=P0.chinese+P0.math+P0.english;P0.average=P0.sum/3;return 1;/成绩录入完成return 0;/取消成绩输入int pscore(int n)/成绩输出功能FILE *fpp;fpp=fopen(score.dat,a+);/以前版本出现文件读取错误(打开方式为r)。if(n0)/指定输出某人成绩printf(|%-6d| |%-6s| |%-6d| |%-6.1f| |%-6.1f| |%-6.1f| |%-6.1f| |%-6.2f|n,n,P,Pn.id,Pn.chinese,Pn.math,Pn.english,Pn.sum,Pn.average);return 1;if(n=-1)/输出界面printf(|序 号| |姓 名| |学 号| |语 文| |数 学| |英 语| |总成绩| |平均分|n);if(n=-2)/输出所有成绩for(int i=1;i0&n=pscore(-3)/25版本未写等号while(!feof(fp)if(!feof(fp)if(kn)if(!feof(fp)fread(&Pk-1,sizeof(P0),1,fp);k+;fclose(fp);fp=fopen(score.dat,w);fp=fopen(score.dat,a+);while(ik-2)fwrite(&Pi,sizeof(P0),1,fp);i+;fclose(fp);return 1;return 0;void defs()/写入程序自带成绩,五个成绩(版本25的代码) FILE *fp;fp=fopen(score.dat,a+);student defsocre6;strcpy(,陈光超);defsocre1.id=1001;defsocre1.chinese=89.5f;defsocre1.math=99.9f;defsocre1.english=100.0f;strcpy(,良辰);defsocre2.id=6002;defsocre2.chinese=95.6f;defsocre2.math=87.5f;defsocre2.english=49.5f;strcpy(,杨阳);defsocre3.id=1302;defsocre3.chinese=72.3f;defsocre3.math=34.4f;defsocre3.english=89.9f;strcpy(,杨小梅);defsocre4.id=1009;defsocre4.chinese=45.6f;defsocre4.math=84.7f;defsocre4.english=57.6f;strcpy(,张华);defsocre5.id=2209;defsocre5.chinese=24.6f;defsocre5.math=56.7f;defsocre5.english=93.6f;for(int i=1;i=5;i+)defsocrei.sum=defsocrei.chinese+defsocrei.math+defsocrei.english;defs

温馨提示

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

评论

0/150

提交评论