用c语言编写学生成绩管理系统方案.doc

上传人:scccc 文档编号:12764785 上传时间:2021-12-06 格式:DOC 页数:12 大小:122.50KB
返回 下载 相关 举报
用c语言编写学生成绩管理系统方案.doc_第1页
第1页 / 共12页
用c语言编写学生成绩管理系统方案.doc_第2页
第2页 / 共12页
用c语言编写学生成绩管理系统方案.doc_第3页
第3页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《用c语言编写学生成绩管理系统方案.doc》由会员分享,可在线阅读,更多相关《用c语言编写学生成绩管理系统方案.doc(12页珍藏版)》请在三一文库上搜索。

1、/ 编译预/ 定义处/ 宏指令/ 定义通/ 最多的/ 统计成/ 定义类型/ 保存所/ 保存学/ 保存性别/ 保存所有/ 保存每个/ 总计成绩/ 学生成绩/ 学生成绩/ 学生平均/ 学生成绩总/ 学生成绩/ 学生成绩/ 学生成绩#include<stdio.h>处理指令#include<string.h> 理字符串函数 #include<process.h> 的声明#include<conio.h> 过控制台进行数据输入以及输出 #define N 2000 人数人#define M 3绩typedef struct student char nu

2、mber10;有人的学号char name20;生姓名char sex10;float scoreM;课程成绩float aver;人的平均成绩float total;STU;STU stuN;int n;void inputscore(void);新建void savescore(void);保存void avergescore(void);成绩void total(void);计void modifyscore(void);修改void lookscore(void);查看void searchscore(void);查询void statistic(void);/ 学生成绩统计void

3、add(void);/ 学生成绩添加void modify(void);/ 学生成绩修改void delscore(void);/ 学生成绩删除void menu(void);/ 学生成绩菜单 void main() short int flag=0;menu(); do flag=1;switch(getch() case '1' : inputscore();break; / 在菜单界面输入 1 ,调用 i 函数 nputscore() 实现输入学生成绩信息功能case '2' : lookscore();break;/ 在菜单界面输入 2 ,调用函数 lo

4、okscore()实现学生成绩按平均分高低排序输出,同时 lookscore() 函数调用 avregescore() 函数实现各个学生的平均分计算case '3' : searchscore();break;searchscore() 函数实现通过学号查找学生成绩信息功能 case '4' : statistic();break;输出每一门课程的最高分,平均分以及不及格人员case '5' : modify();break; 现通过学号修改学生成绩的功能case '6' : add();break; 实现添加学生成绩case &

5、#39;7' : delscore();break; 实现删除指定学生的成绩case '8' : savescore();break; 将学生成绩信息保存case '9' :exit(0); default : printf(" printf(" 按任意键继续 getch();break; 输入有误 n");/ 在 菜 单 界 面 输在菜单界面输入 4 ,调用在菜单界面输入 5 ,调用/ 在菜单界面输入 6 ,在菜单界面输入 7 ,调用入 3 ,调用statistic() 函数/modify() 函数实/调用 add()/d

6、elscore()在菜单界面输入在菜单界面输入函数函数8 ,调用 savescore()函数9 ,退出成绩管理系统n");/ 按任意键继续,起到暂停的作用,函数头文件conio.h 已经定义menu(); / 菜单 while (flag=1);void menu(void)system("cls"); / 清屏 printf("n");printf(" 欢迎进入学生成绩管理系统n");printf(" 菜单 n");printf(" 输入成绩 1n");printf(" 查

7、看成绩及成绩排序 2n");printf(" 查询学生成绩 3n");printf("成绩统计 4n");printf("修改成绩 5n");printf("添加成绩 6n");printf("删除成绩 7n");printf("保存成绩 8n");printf("退出系统 9n");printf(" n");printf(" 请输入您的选择( 19 ) n");输入各个同学的学生信息/ 输入成绩void

8、inputscore(void)int i,j;system("cls"); / 清屏专用,以下出现位置作用相同 printf(" 已经转到输入成绩菜单 n");printf(" 请输入学生总数: n");scanf("%d",&n);printf(" 提示:输入学号时请输入 9 位学生编号:图书借阅证上的学号 n"); / 因 二维表上下需对正故有此要求for(i=0;i<n;i+) printf("n");printf(" 请输入第 %d 位学生的

9、学号 :n",i+1); scanf("%s",stui.number);printf(" 姓名 :n");scanf("%s",stui.name);printf(" 请输入该学生性别 n"); scanf("%s",stui.sex);printf(" 请输入学生成绩 :n");printf(" 高数分 t 英语分 tC 语言分 n"); for(j=0;j<M;j+)scanf("%f",&stui.sco

10、rej);/ 输入学生学号/ 输入学生名字/ 输入性别/ 输入高数、英语、 C 语言的成绩计算各个同学的总分printf(" 成功输入(按任意键继续后请输入 8 进行保存) n"); / 定义变量 i,j;i 用来表示学生个数,j 则用来表示学生每void total(void) int i,j; 门课的分数for(i=0;i<n;i+) stui.total=0;for(j=0;j<M;j+) /M 表示科目在头文件出已经定义 stui.total+=stui.scorej;计算各个同学的平均分void avergescore(void) int i,j;的分

11、数/ 定义变量 i ,j;i 用来表示学生个数, j 则用来表示学生每门课for(i=0;i<n;i+) stui.aver=0;for(j=0;j<M;j+) /M 表示科目在头文件出已经定义 stui.aver+=stui.scorej;stui.aver=stui.aver/M; / 计算平均分/* 查看学生成绩及根据平均分对学生进行排序 */ void lookscore(void) int i,j,k;/i , j, k 都表示学生成绩比较用来调换顺序STU t;total(); / 此处用来对调用函数的声明 avergescore();system("cls&

12、quot;); / 清屏专用printf(" 已经转到查看成绩及成绩排序菜单 n"); for(i=0;i<n-1;i+) for(k=i,j=i+1;j<n;j+)if(stuj.aver>stuk.aver)k=j;if(k!=j) t=stuk;stuk=stui;stui=t;printf(" 名次t 学号tt 姓名t 性别t 高数分 t 英语分 tC 语言分t 总分t 平均分 n"); for(i=0;i<n;i+) printf("%dt%st%st%st",i+1,stui.number,stui

13、.name,stui.sex);for(j=0;j<M;j+) printf("%4.2ft",stui.scorej);printf("%4.2ft",stui.total);printf("%4.2f",stui.aver);printf("n");通过输入学号查找学生成绩void searchscore(void) char a10;/ 定义数组 a 的类型可输入数字,字母或字符int i,j;system("cls"); / 清屏printf(" 已经转到查询学生成绩菜单

14、 n");printf(" 请输入需查询的学生学号 n"); scanf("%s",a);/ 如果输入的学号为真则输出相关信息for(i=0;i<n;i+) if(strcmp(a,stui.number)=0) printf(" 名次 t 学号 tt 姓名 t 性别 t 高数分 t 英语分 tC 语言分 t 总分 t 平 均分 n");printf("%dt%st%st%st",i+1,stui.number,stui.name,stui.sex); for(j=0;j<M;j+)print

15、f("%4.2ft",stui.scorej); printf("%4.2ft",stui.total);printf("%4.2f",stui.aver); printf("n");break; / 找到该学生成绩信息后跳出 for 循环else printf(" 未找到该学生信息 n");/* 统计学生成绩信息,计算出每一门课的最高分 */ void statistic()int i,j=0,k=0,c1; char str2;float averageM,sum=0; printf(&qu

16、ot; 没有可被查找的记录 n"); / system("cls");if(M=0) / 如果没有输入成绩则输出没有可查找的记录 printf(" 没有可被查找的记录 n");else while(1) printf(" 下面将统计考试成绩 n");printf(" 请选择你要统计哪科的成绩 1.高数 t2. 英语 t3.C 语言 n"); scanf("%d",&c1);printf("t 一共有 %d 个记录 n",M); /* 总共记录数 */ swi

17、tch(c1)case 1: / 用来判断高数的最高分,平均分,输出不及格人员名单 for(i=0;i<M;i+)sum+=stui.score0; if(stuk.score0>stui.score0) k=i;if(stuj.score0<stui.score0) j=i;average0=sum/M;printf("t 高数的最高分 :n");printf("tt 学 号 :%s姓名:%s数:%.2fn",stuj.number,stuj.name,stuj.score0);printf("t 高数的最低分是 :n&qu

18、ot;);printf("tt 学 号 :%s姓名:%s数:%.2fn",stuk.number,stuk.name,stuk.score0);printf("t 高数的平均分是 %5.2fn",average0);printf(" 平均分低于 60 分的学生成员名单 n");for(i=0;i<M;i+)if(stui.score0<60)printf("%sn",stui.name);break;case 2: / 用来判断英语的最高分,平均分,输出不及格人员名单 for(i=0;i<M;i+

19、)sum+=stui.score1;if(stuk.score1>stui.score1) k=i; if(stuj.score1<stui.score1) j=i;average1=sum/M;printf("t 英语的最高分 :n");printf("tt 学 号 :%s姓名:%s数:%.2fn",stuj.number,stuj.name,stuj.score1);printf("t 英语的最低分是 :n");printf("tt 学 号 :%s姓名:%s数:%.2fn",stuk.number,

20、stuk.name,stuk.score1);printf("t 英语的平均分是 %5.2fn",average1);printf(" 平均分低于 60 分的学生成员名单 n");for(i=0;i<M;i+)if(stui.score1<60)printf("%sn",stui.name);break;case 3: / 用来判断 C 语言的最高分,平均分,输出不及格人员名单 for(i=0;i<M;i+) /* 循环输入判断 */sum+=stui.score2;if(stuk.score2>stui.sc

21、ore2) k=i; if(stuj.score2<stui.score2) j=i;average2=sum/M;printf("tC 语言的最高分 :n"); /* 最高分 */:%s:%sprintf("tt 学 号 :%s 姓 名 数:%.2fn",stuj.number,stuj.name,stuj.score2);printf("tC 语言的最低分是 :n"); /* 最低分 */printf("tt 学 号 :%s 姓 名 数:%.2fn",stuk.number,stuk.name,stuk.

22、score2);printf("tC 语言的平均分是 %5.2fn",average2);printf(" 平均分低于 60 分的学生成员名单 n");for(i=0;i<M;i+)if(stui.score2<60)printf("%sn",stui.name);break;default: / 如果输入的数字不符合要求则显示错误信息 printf(" 输入错误!请输入 13 之间的数 n");sum=0;getchar();printf(" 是否继续进行统计 ?(y/n)");

23、gets(str);if(str0='y'|str0='Y') statistic(); else break;修改学生成绩 */void modify(void)char a10; int i,j;system("cls");printf("已经转到修改成绩菜单 n");printf(" 请输入需要修改成绩的学生学号 n");scanf("%s",a);for(i=0;i<n;i+) if(strcmp(a,stui.number)=0) printf(" 名次 t

24、 学号 tt 姓名 t 性别 t 高数分 t 英语分 tC 语言分 t 总分 t 平 均分 n");printf("%dt%st%st%st",i+1,stui.number,stui.name,stui.sex); for(j=0;j<M;j+)printf("%4.2ft",stui.scorej); printf("%4.2f",stui.total);printf("%4.2f",stui.aver); printf("n");printf(" 请重新输入该学生

25、的姓名 :n"); scanf("%s",stui.number);printf("n");scanf("%s",stui.name); printf(" 请输入该学生性别 n");scanf("%s",stui.sex);printf(" 请重新输入该学生成绩 :n"); printf(" 高数分 t 英语分 tC 语言分 n");for(j=0;j<M;j+) scanf("%f",&stui.scorej)

26、;printf(" 修改成功 n");break; / 找到该学生成绩后进行修改,跳出 for 循环 elseprintf(" 请确认该学生是否为该校学生! n");添加学生成绩 *void add(void)int a,i,j; /i 定义为学生, j 为学生分数, a 代表加入学生的数量 system("cls");printf(" 已经转到添加成绩菜单 n"); printf(" 请输入新增加的学生人数: n");scanf("%d",&a);n=n+a;for

27、(i=n-a;i<n;i+) printf("n");printf(" 请输入第 %d 位学生的学号 :n",i+1); scanf("%s",stui.number); printf(" 姓名 :n"); scanf("%s",stui.name); printf(" 输入该学生性别 n"); scanf("%s",stui.sex); printf(" 请输入学生成绩 :n");printf(" 高数分 t 英语分

28、tC 语言分 n"); for(j=0;j<M;j+) scanf("%f",&stui.scorej);printf(" 添加成功 n");/*删除学生成绩 */void delscore(void)int i,j,c;char m,a10; /m 用来存放后面输入删除的字母 y 或 n system("cls");printf(" 已经转到删除成绩菜单 n"); printf(" 请输入学生学号 n");scanf("%s",a);for(i=0;

29、i<n;i+) if(strcmp(a,stui.number)=0) printf(" 名次 t 学号 tt 姓名 t 性别 t 高数分 t 英语分 tC 语言分 t 总分 t 平 均分 n");printf("%dt%st%st%st",i+1,stui.number,stui.name,stui.sex); for(j=0;j<M;j+)printf("%4.2ft",stui.scorej); printf("%4.2ft",stui.total);printf("%4.2f"

30、;,stui.aver); printf("n");c=i; break;elseprintf(" 未找到该学生信息 n");printf(" 是否删除该学生成绩 (y/n)n");scanf("%s",&m);if(m='y')for(i=c;i<n-1;i+)stui=stui+1;/ 结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置n=n-1;printf(" 删除成绩成功 n"); else/ 删除该学生信息后学生总数减一/*保存学生成绩

31、*/printf(" 删除成绩失败 n");void savescore(void)FILE *fp; int i,flag=1;/ 定义指针char m;system("cls");printf(" 已经转到保存成绩菜单 n"); puts(" 是否保存学生成绩 (y/n)");scanf("%s",&m);if(m='y') if(fp=fopen("score.dat","wb")=NULL) 中打开 printf(" 文件打开失败 n"); return;/ 从文件 scoreelse for(i=0;i<n;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(" 保存失败 n");flag=0;if(flag=1) printf(" 保存成功 !n");fclose(fp);/ 学生成绩写入/ 界面关闭return;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1