当前位置:文档之家› 成都工业学院 学生成绩管理系统 专周报告

成都工业学院 学生成绩管理系统 专周报告

成都工业学院课程设计报告课程名称 C语言课程设计课题名称成绩管理系统专业软件工程(2)班班级 1506032班学号 150603236 姓名陈光超指导教师杨明广2016年2月26日一.题目要求1.问题描述:对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.2.要求:(1)一个文件按以班为单位存储学生记录.(2)将允许的操作分为8种,1, 录入学生成绩2, 查看学生成绩3, 修改学生成绩4, 删除学生成绩5, 学生成绩排序6, 写入五个默认成绩7, 查看本程序开发说明0, 退出管理系统3.计算学生的总成绩.4.按学号,各科成绩,总分排序输出学生成绩表.二.设计目的根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三.总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.四.程序总结满足专周程序设计要求,程序抗干扰性强。

程序版本1-20添加功能,以及相应模块。

程序版本21-29修复BUG,以及界面UI调节。

五.详细设计1.主函数(以及其它界面UI函数):主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.其他界面UI函数和主函数类似。

流程图:显示一系列功能模块N输入n,判断n是否是0-7Y根据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);传入学生序号,根据序号输出学生信息。

六.程序原代码注释:源代码下载地址/mywork//********************************//***成绩管理系统,软件版本29 ***//******* 班上学号150603236 *****//*** 此版本修复各种BUG ***//********************************/#include<stdio.h>#include<stdlib.h>#include<string.h>int 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(fl oat *,int,int);//排序功能(仅数据)void defs();//写入程序自带成绩,五个成绩void dscreen();//清屏函数,清空缓存区,再输出当前学生数int dask();//是否执行操作判断void about();//关于本程序struct student{char name[20];int id;fl oat chinese;fl oat math;fl oat english;fl oat sum;fl oat average;}P[101];fl oat sa[101];//临时储存浮点型数据(排序使用)void main(){whil e(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()//成绩录入界面{whil e(1){FILE *fp;fp=fopen("score.dat","a+");dscreen();printf("当前功能:录入学生成绩**\n");printf("请输入姓名学号语文数学英语\n");if(!entry())break;fwrite(&P[0],sizeof(P[0]),1,fp);fcl ose(fp);printf("成绩录入成功!");printf("按任意键继续。

\n");fflush(stdin);getchar();}}void check_ui()//查看成绩界面{whil e(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(acheck<0||acheck>6)printf("输入错误!");else{switch(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()//修改成绩界面{whil e(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(bchange<0||bchange>3)printf("输入错误!");else//根据check()函数返回学生序号,赋值给bchang{if(bchange==1){check(6);printf("请输入学生序号:");fflush(stdin);scanf("%d",&achange);fflush(stdin);if(0>=achange||achange>pscore(-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(&P[0],sizeof(P[0]),1,fpch);//重新写入成绩printf("成绩修改成功!");}}}printf("按任意键继续。

相关主题