学生成绩管理系统_第1页
学生成绩管理系统_第2页
学生成绩管理系统_第3页
学生成绩管理系统_第4页
学生成绩管理系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、#include <>#include <>#include <> /*#include <>*/#include <>#include <>#include <>#include <>int Add(struct student stu,int *size);声明 */int Del(struct student stu,int *stusize);函数声明 */int Modify(struct student stu,int *stusize);函数声明*/int DispOne(struct

2、 student stu,int *stusize);函数声明*/int DispAll(struct student stu,int size);声明 */void AsceSort(struct student stu,int stusize);打开文件子菜单保存文件函数声增加学生记录函数删除学生记录修改学生记录查看一个记录显示全部记录函数按升序排序函#define VIDEO_INT 0x10#define STUSIZE 40/*struct studentint stunum;/*char stuname10; /*float stuscore5; /* 3stuSTUSIZE;/*

3、int stunum=0;/*void StuCover();/*void MainMenu();/*void EditMenu();/*void DispMenu();/*void CompMenu();/*void SortMenu();/*void Open(struct student stu,int *size);函数声明 */void Save(struct student stu,int *size);明 */假定处理的学生不超过40 人 */学号*/学生姓名 */门成绩、平均成绩、总成绩*/定义学生数组 */用来记录当前学生记录数*/项目封面函数声明 */主菜单函数声明 */编

4、辑子菜单函数声明*/显示子菜单函数声明*/计算子菜单函数声明*/排序子菜单函数声明*/*/*/*/*/*/*/*/*void DropSort(struct student stu,int stusize);/*数声明 */void NotElig(struct student stu,int stusize);/*录函数声明 */void CompSum(struct student stu,int stusize);/*平均成绩函数声明 */void SearchMax(struct student stu,int stusize);/*函数声明*/void SearchMin(struc

5、t student stu,int stusize);/*函数声明*/void Explain();/*程序说明函数声明*/void Quit(int);/*退出函数声明*/void gotoxy(int x,int y);/* 光标定位函数声明*/数声明 */按降序排序函查找不及格记计算总成绩和查找最高成绩查找最低成绩外循环开始*/调用主菜单函数*/主菜单的switch 开始 */内循环 1 开始 */调用编辑子菜单函数*/编辑子菜单switch 开始 */int main()int choose,editnum,dispnum,compnum,sortnum; /*定义 5 个输入变量*/

6、system("cls");StuCover();getch();while(1)/*MainMenu();/*printf("tt请输入序号:");scanf("%d",&choose);switch(choose)/*case 1:Open(stu,&stunum);break;case 2:Save(stu,&stunum);break;case 3:do/*EditMenu(); /*printf("tt请输入序号:");scanf("%d",&editn

7、um);switch(editnum) /* case 1:Add(stu,&stunum);break;case 2:Del(stu,&stunum);break;case 3:Modify(stu,&stunum);break;case 0:Quit(0);break;/*while(editnum!=0); /* break;case 4:do/* DispMenu();/*printf("tt请输入序号:");scanf("%d",&dispnum);switch(dispnum) /* case 1:DispOn

8、e(stu,&stunum);break;case 2:DispAll(stu,stunum);break;编辑子菜单switch 结束 */内循环 1 结束 */内循环 2 开始 */调用查看子菜单函数*/显示子菜单switch 开始 */case 3:do/*3 开始 */请输入序号: ");SortMenu(); printf("tt scanf("%d",&sortnum);switch(sortnum) /*case 1:AsceSort(stu,stunum);break;case 2:DropSort(stu,stunum)

9、;break;case 0:Quit(0);break;/*while(sortnum!=0); /*break;case 4:NotElig(stu,stunum);break;case 0:Quit(0);break;/*while(dispnum!=0); /*break;case 5:do/*CompMenu(); /*排序子菜单switch 开始 */排序子菜单switch 结束 */内循环 3 结束 */显示子菜单switch 结束 */内循环2 结束*/内循环4 开始*/调用计算子菜单函数*/printf("tt请输入序号:");scanf("%d&

10、quot;,&compnum);计算子菜单switch 开始 */switch(compnum) /*case 1:CompSum(stu,stunum);break;case 2:SearchMax(stu,stunum);break;计算子菜单switch 结束 */内循环 4 结束 */程序说明 */主菜单的switch 结束 */外循环结束*/OUTPUT_HANDLE),c);case 3:SearchMin(stu,stunum);break;case 0:Quit(0);break;/*while(compnum!=0); /* break;case 6:Explain(

11、);break; /* case 0:Quit(1);break;/*return 0;/*void gotoxy(int x,int y)COORD c;=x-1;=y-1;SetConsoleCursorPosition(GetStdHandle(STD */void Quit(int flag)/*if(flag=1)system("cls");printf("nnnnnntttgetch();system("cls");exit(0);/*elseif(flag=0)/*system("cls");printf(&q

12、uot;nnnnnntttgetch();system("cls");退出函数*/操作结束,退出系统!");退出程序,返回到操作系统库函数返回上级菜单*/操作结束,返回上级菜单!");/*程序说明 */void Explain() system("cls");gotoxy(10,3);/* 光标定位函数 */printf(" 这是一个教学程序。它以开发班级学生成绩管理系统为主要项目, ");gotoxy(10,5);printf("旨在通过简单学生成绩管理系统软件的开发,使读者了解并掌握用C语)gotox

13、y(10,7); printf(" 言开发程序的方法与技巧。 "); gotoxy(10,9);printf(" 该项目由15个任务来完成,将C语言基本知识与理论溶入到任务中!");gotoxy(10,11);printf(" 完成 15个任务后就完成整个项目的设计。通过任务驱动和项目导向教学,");gotoxy(10,13); printf(" 最终实现教学目的,达到培养目标 !");gotoxy(10,15);printf(" 该项目实施贯穿在整个教学过程中,它将重点与难点分散在各个任务")

14、;gotoxy(10,17);printf(" 中,达到循序渐进,逐个突破的目的,教学最后将安排一定的时间归纳汇");gotoxy(10,19); printf(" 总。 ");getch();项目封面函数*/执行DOS青屏命令函数*/void StuCover()/*system("cls");/*printf("nnn");printf("tt 班级学生成绩管理系统nn");printf("tt版本号: nn");printf("nnn");print

15、f("tt 2011年 9 月 n'n");printf("tt章国华 软件工作室 n");void MainMenu()/*项目主菜单函数 */int n;system("cls");printf("nnn");printf(" |* * * * *学生成绩管理系统* * * * *|n");printf("|n");printf("|请选择菜单序号(06)|n");printf("|.|n");printf("|1

16、打开文件|n");printf("|2保存文件|n");printf("|3编辑数据|n");printf("|4显示数据|n");printf("|5数据计算|n");printf("|6程序说明 |n");printf("|0退出系统|n");printf("|n");printf("tt请选择序号:");scanf("%d",&n);printf("您选择了第 项!n",n

17、);void DispMenu()/*项目主菜单函数*/int n;system("cls");printf("nnn");printf("* * * * * *显示子菜单* * * * *|n");printf("|.|n");printf("|请选择菜单序号(04)|n");printf("|.|n");printf("|1查看选定记录|n");printf("|2显示全部记录|n");printf("|3显示排序记录|n

18、");printf("|4显示不及格记录|n");printf("|0返回上级菜单|n");printf("|.|n");printf("tt请选择序号:");scanf("%d",&n);printf("您选择了第 项!n",n);*/void EditMenu()/*项目编辑子菜单函数int n;system("cls");printf("nnn");printf(" |* * * * * * *编辑子菜

19、单* * * * * *|n");printf("|n");printf("|请选择菜单序号(03)|n");增加记录|n");删除记录|n");修改记录|n");返回上级菜单 |n");printf("|n");printf("|1printf("|2printf("|3printf("|0printf("|n");printf("tt 请选择序号:");scanf("%d",&

20、;n);printf(" 您选择了第 项!n",n);void CompMenu()/*项目计算子菜单函数*/int n;system("cls");printf("nnn");printf(" |* * * * * * *计算子菜单* * * * * *|n");printf("|n");printf(" |请选择菜单序号(03)|n");printf("|n");printf("|1计算总成绩和平均成绩|n");printf(&qu

21、ot;|2计算最高分(平均分)|n");printf("|3计算最低分(平均分)|n");printf("|0返回上级菜单|n");printf("|n");printf("tt 请选择序号:");scanf("%d",&n);printf("您选择了第 项!n",n);void SortMenu()/*项目排序子菜单函数 */int n;system("cls");printf("nnn");printf("

22、; |* * * * * * *排序子菜单* * * * * *|n");printf("|n");printf("|请选择菜单序号(02)|n");printf("|n");printf("|1按升序排序|n");printf("|2按降序排序|n");printf(" |0返回上级菜单|n");printf(" |n");printf("tt 请选择序号:");scanf("%d",&n);pr

23、intf(" 您选择了第 项!n",n);void SearchMax(struct student stu,int stusize) float max=stu0.stuscore4;int i;system("cls");for(i=1;i<stusize;i+)if(max<stui.stuscore4)max=stui.stuscore4;gotoxy(20,5);printf("成绩最高的是:%.1fn",max);gotoxy(20,10);printf("查找最高分成功,按任意键返回上级菜单getc

24、h();/*!");查找最高分指针访问函数*/*/void SearchMin(struct student stu,int stusize) /* 查找最低分指针访问函数 float min=stu0.stuscore4;int i;system("cls");for(i=1;i<stusize;i+)if(min>stui.stuscore4)min=stui.stuscore4;gotoxy(20,5);printf(" 成绩最高的是: %.1fn",min);gotoxy(20,10);printf(" 查找最低分

25、成功,按任意键返回上级菜单 !");getch();void NotElig(struct student stu,int stusize) /*查找不合格学生成绩指针访问函数 */int i,flag=0;system("cls");gotoxy(20,5);printf(" 不合格成绩: ");for(i=0;i<stusize;i+)if(stui.stuscore4<60)printf("%",stui.stuscore4);flag=1;if(!flag)gotoxy(35,5);printf(&quo

26、t; 没有不合格成绩! ");gotoxy(20,10);printf(" 查找不及格成绩成功,按任意键返回上级菜单! ");getch();void CompSum(struct student stu,int stusize) /*计算总成绩和平均成绩函数声明*/int i,j;float sumscore;system("cls");if(stusize<=0)gotoxy(22,5);printf(" 数组中没有学生记录或文件没有打开,不能计算总成绩和平均成绩! ");getch();elsefor(i=0;i

27、<stusize;i+)sumscore=0;for(j=0;j<3;j+)sumscore+=stui.stuscorej;stui.stuscore3=sumscore;stui.stuscore4=sumscore/;gotoxy(20,5);printf(" 计算总成绩和平均成绩成功,按任意键返回上级菜单! ");getch();void AsceSort(struct student stu,int stusize) /*按升序排列指针访问函数*/int i,j;float temp;float temp_scoreSTUSIZE,*pf;/*定义一个

28、新数组*/system("cls");给新数组赋值*/双重循环实现学生成绩按pf=temp_score;for(i=0;i<stusize;i+)/*temp_scorei=stui.stuscore4;for(i=0;i<stusize-1;i+)/*升序排列 */for(j=0;j<stusize-i-1;j+)if(*(pf+j+1)<*(pf+j)temp=*(pf+j);*(pf+j)=*(pf+j+1);*(pf+j+1)=temp;gotoxy(5,5);printf(" 升序排列结果: ");for(i=0;i&l

29、t;stusize;i+)printf("%",*(pf+i);gotoxy(20,10);printf(" 升序排列成功,按任意键返回上级菜单!");getch();void DropSort(struct student stu,int stusize) /*/int i,j;float temp;float temp_scoreSTUSIZE,*pf;/*system("cls");pf=temp_score;for(i=0;i<stusize;i+)/*temp_scorei=stui.stuscore4;for(i=0

30、;i<stusize-1;i+)/*序排列 */for(j=0;j<stusize-i-1;j+)if(*(pf+j+1)>*(pf+j)temp=*(pf+j);*(pf+j)=*(pf+j+1);*(pf+j+1)=temp;按降序排列指针访问函数定义一个新数组*/给新数组赋值*/双重循环实现学生成绩按降gotoxy(5,5);printf(" 降序排列结果: ");for(i=0;i<stusize;i+)printf("%",*(pf+i);gotoxy(20,10);printf(" 降序排列成功,按任意键返回

31、上级菜单!");getch();int Add(struct student stu,int *size) /* int i,j;int stunum;int number;system("cls");增加学生记录函数*/if(*size>=40)/*gotoxy(30,2);printf(" 数组已满,不能再增加记录! ");return 0;elsedo/*/gotoxy(30,2);printf("请输入增加的记录个数: ");scanf("%d",&number);if(number

32、<0|number+*size>=40)判断数组是否装满*/判断输入的增加记录数是否合适gotoxy(30,4);printf("输入增加记录个数错,请重新输入! ");while(number<0|number+*size>=40);stunum=*size+number;system("cls");gotoxy(33,2);增加学生记录*/printf(" 学生信息输入! ");for(i=*size;i<stunum;i+) /*gotoxy(15,5);printf("请输入第d个学生学

33、号:"尸1);gotoxy(15,7);printf("请输入第%d个学生姓名:"尸1);gotoxy(15,9);printf("请输入第 1 门成绩: ");gotoxy(15,11);printf("请输入第2 门成绩:");gotoxy(15,13);printf("请输入第3 门成绩:");gotoxy(37,5);scanf("%d",&stui.stunum);gotoxy(37,7);scanf("%s",&stui.stuname)

34、;for(j=0;j<3;j+)gotoxy(32,9+j*2);scanf("%f",&stui.stuscorej); if(i=*size)gotoxy(33,4);printf("没有记录输入! ");*size=stunum;/*有指针变量带回学生记录数 */ gotoxy(33,15);printf(" 按任意键返回上级菜单! ");getch();return 0;删除学生记录函数*/int Del(struct student stu,int *stusize) /* int i,k;int loop=0

35、;int number;system("cls");gotoxy(33,2);printf(" 删除学生记录!n");if(*stusize<=0)/* 判断数组是否空*/gotoxy(20,4);printf(" 数组中没有学生记录或文件没有打开,不能删除记录! ");getch();return 0;elsedosystem("cls");gotoxy(25,2);printf("删除学生记录(不能删除记录请输入-1 ) ! n");gotoxy(28,4);printf("

36、请输入被删除学生的学号: n");scanf("%d",&number);if(number=-1)return 0;for(i=0,k=0;i<*stusize;i+)if(number=stui.stunum)loop=1;k=i;/*被删除记录的下标*/break;if(loop!=1)gotoxy(25,6);printf("输入学生学号出错,按任意键重新输入! ");getch();while(loop!=1);for(i=k;i<*stusize;i+)stui=stui+1;/*删除操作 */gotoxy(25

37、,6);printf(" 删除成功,按任意键返回上级菜单! ");*stusize=*stusize-1;getch();return 0;int Modify(struct student stu,int *stusize) /*修改学生记录函数*/int i,k;int loop=0;/*学号输入正确标志*/int number;system("cls");gotoxy(33,2);printf(" 修改学生记录!n");if(*stusize<=0)gotoxy(20,4);printf(" 数组中没有学生记录或

38、文件没有打开,不能修改记录! ");getch();return 0;elsedo/*找出修改学生记录的下标*/system("cls");gotoxy(25,2);printf("修改学生记录!(不修改记录请输入-1 )n");gotoxy(28,4);printf("请输入被修改学生的学号: ");scanf("%d",&number);if(number=-1)return 0;for(i=0,k=0;i<*stusize;i+)if(number=stui.stunum)loop=1

39、;k=i;/*被修改记录的下标*/break;if(loop!=1)gotoxy(25,6);printf("输入学生学号出错,按任意键重新输入! ");getch();while(loop!=1);system("cls");gotoxy(33,2);printf(" 修改学生记录! n");gotoxy(28,4);printf("学号:%d",stuk.stunum);gotoxy(28,6);printf("姓名:%d",stuk.stuname);gotoxy(28,8);printf

40、(" 成绩 1 : %.1f",stuk.stuscore0);gotoxy(28,10);printf("成绩 2 : %.1f",stuk.stuscore1);gotoxy(28,12);printf("成绩 3 : %.1f",stuk.stuscore2);gotoxy(34,4);scanf("%d",&stuk.stunum);gotoxy(34,6);scanf("%s",&stuk.stuname);gotoxy(35,8);scanf("%f&quo

41、t;,&stuk.stuscore0);gotoxy(35,10);scanf("%f",&stuk.stuscore1);gotoxy(35,12);scanf("%f",&stuk.stuscore2);gotoxy(25,14);printf(" 修改成功,按任意键返回上级菜单! ");getch();return 0;int DispAll(struct student stu,int size) /* 显示全部记录函数*/int i,j;system("cls");if(size&

42、lt;=0) gotoxy(20,4);printf(" 数组中没有学生记录或文件没有打开,不能显示记录! ");getch();return 0; elsegotoxy(5,4);printf("学号 姓名 成绩1 成绩2 成绩3 总成绩 平均成绩 "); for(i=0;i<size;i+) gotoxy(5,6+i);printf("%-5d",stui.stunum);printf("%8s",stui.stuname);for(j=0;j<5;j+) printf("%",

43、stui.stuscorej);printf("n");gotoxy(28,7+size);printf(" 按任意键返回上级菜单! ");getch();return 0;int DispOne(struct student stu,int *stusize) /* 显示选定记录函数*/int i,j,k,loop,number;dosystem("cls");gotoxy(25,2);printf("查看学生记录!(不查看记录请输入-1 )n");gotoxy(28,4);printf("请输入被查看学生的学号: ");scanf("%d",&number);if(number=-1)return 0;for(i=0,k=0;i<*stusize;i+)if(number=stui.stunum)loop=1;k=i;break;if(loop!=1)

温馨提示

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

评论

0/150

提交评论