[C语言]学生成绩管理系统.doc
《[C语言]学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《[C语言]学生成绩管理系统.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一 设计内容1. 需求分析1.1项目需求概述 通过此系统可以实现如下功能:1) 数据信息的录入2) 学生、课程及成绩全部显示3) 查询功能4) 成绩修改及删除5) 成绩统计6) 退出系统功能要求及说明 1、数据信息的录入1)学生基本信息录入:学号不允许重复 录入信息保存在student文件中 2)课程信息的录入:录入信息保存在course文件中3)学生成绩录入:成绩信息保存在score文件中录入学生成绩信息时,综合成绩根据条件自动运算。运算方法:如果录入课程为公共课,则 综合成绩=平时成绩*30%+卷面成绩*70%如果录入课程为专业课,则 综合成绩=平时成绩*40%+卷面成绩*70%.说明:课
2、号S开头表示专业课,P开头表示公共基础课。2、学生、课程及成绩显示:输出所有的学生信息及成绩信息3、查询功能1)学生信息查询输入一个学号或姓名(可实现选择),查出此学生的基本信息并显示输出。输入性别、所在系名,可查询所有男生(女生)、本系所有的学生的基本信息并显示输出。 2)成绩查询:输入一个学号时,查询出此学生的所有课程成绩信息并以列表显示,显示内容包括:学号、课程名、平时成绩、卷面成绩、综合成绩输入一个学生的姓名时,查询出此学生的所有课程成绩信息并以列表显示,显示内容包括:学号、姓名、性别、所在系、课程名、综合成绩输入一门课程名称,可查询出所有选修这门课程的学生成绩。 4、成绩修改(要求先
3、输入密码)在修改成绩之前必须输入正确的用户密码才能进入成绩修改菜单进行操作。5、删除功能当在student.txt中删除一个学生时,自动地在score.txt中删除此人所有信息。6、成绩统计显示每门课程成绩最高的学生的基本信息显示每门课程的平均成绩显示每门课程不及格(综合成绩小于60分)的学生信息,并统计出人数。7、退出系统2. 概要设计功能模块图: 3. 详细设计 2.1 系统流程描述 2.2 主要数据变量结构定义 本系统主要定义了三个结构体,分别用于存储学生基本信息(struct student),课程信息(struct course),学生成绩(struct score) 其中,学生基本
4、信息和学生成绩分别定义了两个结构体变量(struct student inf,struct student inf230和struct score infs,struct score infs230) 具体的结构体定义如下: struct student/定义结构体名为student的结构变量inf char num10;/学生学号 char name10;/学生姓名 char sex10;/学生性别 char age10;/学生年龄 char dep10;/department,所在系;struct student inf;struct student inf230;struct cours
5、e/定义结构体名为course的结构变量infc char snum10;/课程编号 char sname10;/课程名称 char teacher10;/教课教师;struct course infc;struct score/定义结构体名为score的结构变量infs char num10;/学生学号 char snum10;/课程编号 float pscore;/平时成绩 float lscore;/卷面成绩 float sscore;/综合成绩;struct score infs;struct score infs230; 2.3 系统所有主要功能的主要函数的设计流程图和代码 1)主菜
6、单 int a;printf(-欢迎进入学生成绩管理系统-n);printf( n);printf( 1.教学信息登入(请输入1) n);printf( 2.查询学生信息(请输入2) n);printf( 3.修改学生信息(请输入3) n); printf( 4.学生信息统计(请输入4) n);printf( 5.显示全部学生信息(请输入5) n);printf( 6.删除学生信息(请输入6) n);printf( n);printf(-退出本系统(请输入7)-n);scanf(%d,&a);switch(a)/选择函数进行调用case 1:EI(); break; case 2:SF();b
7、reak;case 3: SR();break; case 4:SC();break; case 5:SS();break;case 6:SD();break;case 7:exit();break; default:printf(您输入有误,请重新输入n);MM();break; 2)信息登入函数(以登入学生基本信息为例) char x;FILE *fp; fp=fopen(student.txt,a); x=y;/fprintf(fp,学号 姓名 性别 年龄 所在系)while(x=y|x=Y)/判断是否继续循环输入printf(请输入学生学号n);scanf(%s,&inf.num);p
8、rintf(请输入学生姓名n);scanf(%s,&inf.name);printf(请输入学生性别n);scanf(%s,&inf.sex);printf(请输入学生年龄n);scanf(%s,&inf.age);printf(请输入学生所在系n);scanf(%s,&inf.dep);fprintf(fp,%-6s%-7s%-6s%-6s%-6sn,inf.num,inf.name,inf.sex,inf.age,inf.dep);printf(继续输入吗?是(y/Y)否(n/N)n);scanf(%S,&x);fclose(fp);printf(返回上一级菜单吗?是(y/Y),不(n/N
9、)n); char y;scanf(%s,&y); if(y=y|y=Y)EI();elseexit(); 3)信息查询函数(以根据学号或姓名进行查询的函数为例)printf(选择根据学号查询请输入1,选择根据姓名查询请输入2n); int a;int flag=0;FILE *op;FILE *o; scanf(%d,&a);int i=0; int j=0;switch(a)case 1:char n10;n2=0;op=fopen(student.txt,r);printf(请输入学号n); scanf(%s,&n);while (!feof(op)fscanf(op,%s,&inf.n
10、um);fscanf(op,%s,&inf.name);fscanf(op,%s,&inf.sex);fscanf(op,%s,&inf.age);fscanf(op,%s,&inf.dep);if (strcmp(n,inf.num)=0) if (flag=0)printf(学号 姓名 性别 年龄 所在系n);printf(%-6s%-7s%-6s%-6s%-6sn,inf.num,inf.name,inf.sex,inf.age,inf.dep);flag=1;i+; fclose(op);if (i=0)printf(n 文件中无记录!n);elseif (flag=0)printf(
11、 文件中无此人,请重新输入n);SFIa();printf(返回上一级菜单吗?是(y/Y),不(n/N)n);char y;scanf(%s,&y);if(y=y|y=Y)SFI();elseexit();break;case 2:char m10;printf(请输入姓名n); scanf(%s,&m);o=fopen(student.txt,r);while (!feof(o)fscanf(o,%s,&inf.num);fscanf(o,%s,&inf.name);fscanf(o,%s,&inf.sex);fscanf(o,%s,&inf.age);fscanf(o,%s,&inf.de
12、p);if (strcmp(m,inf.name)=0) if (flag=0)printf(学号 姓名 性别 年龄 所在系n);printf(%-6s%-7s%-6s%-6s%-6sn,inf.num,inf.name,inf.sex,inf.age,inf.dep);flag=1; j+; fclose(o);if (j=0)printf(n 文件中无记录!n);elseif (flag=0)printf( 文件中无此人,请重新输入n);SFIa();printf(返回上一级菜单吗?是(y/Y),不(n/N)n);char x;scanf(%s,&x);if(x=y|x=Y)SFI();e
13、lseexit();break;default:printf(您输入错误,请重新输入n);SFIa();break; 4)登陆界面函数(输入用户名和密码,修改成绩前需使用)printf(-学生成绩修改界面-n);printf( n);printf( 输入用户名及密码(请输入1) n);printf( n);printf(-返回主菜单(请输入2)-n);int a;char username10;char password10;char b10=admin; char c10=730;scanf(%d,&a);switch(a)case 1:printf(请输入用户名n);scanf(%s,us
14、ername);printf(请输入密码n);scanf(%s,password);if (strcmp(b,username)=0&strcmp(c,password)=0)/printf(输入正确n);sr();/else if(strcmp(b,username)!=0)printf(用户名错误,请重新输入n);SR();else if(strcmp(c,password)!=0)printf(密码错误,请重新输入n);SR();break;case 2:MM();break;default:printf(输入错误,请您重新输入n);SR();break; 5)信息修改函数char nu
15、m10;num2=0;char snum10;int flag1=0;int flag2=0;float ps;float ls;float ss;printf(请输入您所要修改学生的学号n);scanf(%s,num);FILE *op;FILE *fp;op=fopen(score.txt,r);fp=fopen(score.txt,r+);for(;) fscanf(op,%s,&infs.num); fscanf(op,%s,&infs.snum); fscanf(op,%s,&infs.pscore); fscanf(op,%s,&infs.lscore); fscanf(op,%s
16、,&infs.sscore); if (feof(op) break; if (strcmp(num,infs.num)=0) flag1=1; printf(请输入您所要修改的课程编号n); scanf(%s,snum); if(strcmp(snum,infs.snum)=0) flag2=1; printf(请输入修改后的平时成绩n); scanf(%f,&ps); printf(请输入修改后的卷面成绩n); scanf(%f,&ls); infs.pscore=ps; infs.lscore=ls; if(snum0=P) ss=0.7*ls+0.3*ps;/infs.sscore=0
17、.7*infs.lscore+0.3*infs.pscore; infs.sscore=ss;fp=fopen(score.txt,r+); fprintf(fp,%-6s%-7s%-10.2f%-10.2f%-10.2fn,infs.num,infs.snum,infs.pscore,infs.lscore,infs.sscore); else if(snum0=S) ss=0.6*ls+0.4*ps;/infs.sscore=0.6*infs.lscore+0.4*infs.pscore; infs.sscore=ss;fp=fopen(score.txt,r+); fprintf(fp,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言 语言 学生 成绩管理系统
限制150内