用c语言编写学生成绩管理系统方案_第1页
用c语言编写学生成绩管理系统方案_第2页
用c语言编写学生成绩管理系统方案_第3页
免费预览已结束,剩余9页可下载查看

下载本文档

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

文档简介

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",);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.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.score0);printf("t 高数的最低分是 :n&qu

18、ot;);printf("tt 学 号 :%s姓名:%s数:%.2fn",stuk.number,,stuk.score0);printf("t 高数的平均分是 %5.2fn",average0);printf(" 平均分低于 60 分的学生成员名单 n");for(i=0;i<M;i+)if(stui.score0<60)printf("%sn",);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.score1);printf("t 英语的最低分是 :n");printf("tt 学 号 :%s姓名:%s数:%.2fn",stuk.number,

20、,stuk.score1);printf("t 英语的平均分是 %5.2fn",average1);printf(" 平均分低于 60 分的学生成员名单 n");for(i=0;i<M;i+)if(stui.score1<60)printf("%sn",);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.score2);printf("tC 语言的最低分是 :n"); /* 最低分 */printf("tt 学 号 :%s 姓 名 数:%.2fn",stuk.number,,stuk.

22、score2);printf("tC 语言的平均分是 %5.2fn",average2);printf(" 平均分低于 60 分的学生成员名单 n");for(i=0;i<M;i+)if(stui.score2<60)printf("%sn",);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.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",); 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",); 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;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.nam

温馨提示

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

评论

0/150

提交评论