前言
关于这个系统是我们专业要求做的一个课程设计,本来是上个学期交的,我也是上个学期弄好的,打算发出来,但是一直没交上去(怕交上去之前发出来老师说我作弊。。。),今天就把我做的这个系统分享给大家,不足之处一起改进。下面的大量文字来源于我的实验报告,这报告写了我差不多一个星期,足足写了一万三千字,可能会有人觉得没有必要弄这么多,但是我觉得既然是一次设计,那就认真一点吧,认真对待每一次设计也是每个软件开发者必备的思想吧,哈哈哈,进入正题吧。
运行环境
开发工具:Dev C+
需求分析
此课程设计的题目为学生成绩管理系统,该系统模拟学校在考完试之后对学生成绩的处理。为了方便管理者对学生成绩的处理,本系统设有录入、显示、查找、修改、排序、删除、保存、读取、退出等九大功能。为了可以永久性保存学生信息,该系统才用以文件存储数据的形式进行设计,系统功能尚算齐全。学生信息暂时设有姓名、学号、性别、年龄、数学、英语、计算机以及总分。
系统功能
该系统功能有:录入、显示、查找、修改、排序、删除、保存、读取、退出共9个主要功能(有些功能里还有次要功能)。下面将一一介绍这些功能:
1、录入功能
该功能是模拟对学生成绩的录入。
2、显示功能
将当前所有学生的成绩显示出来,方便预览。此外会统计当前信息库中的学生总人数。
3、查找功能
该功能是对某个学生进行查找,考虑到可能存在同名同姓的学生,故该功能可设两个辅助查找功能——即按姓名查找以及按学号查找。因为姓名可能不唯一,但是学号肯定是唯一的。学生成绩管理者还可通过该功能查找本校同名同姓的学生,并且统计同名同姓者人数。
4、修改功能
为了模拟老师可能因为失误以至于输入错误的学生信息,系统增设修改功能。主要目的是对信息有误的学生信息进行修改。该功能在修改时会把学生的信息都重新输入一遍,当然了,也可以修改指定的信息,但是为了简洁本系统中并不设此功能。
5、排序功能
为了便于查看每科或者总分的最高分以及成绩优异的那一批人,本系统设计了排序功能。排序时会用到冒泡排序算法,在对学生成绩进行排序算法设计的过程中,联想到老师既然想看最高分,也有可能想看最低分,所以此功能还会对学生成绩进行升序排序。
6、删除功能
此功能主要是删除某个学生的信息。例如如果学生毕业之后,那他的成绩信息就可以去除了,铁打的学校流水般的学生,说的好像就是这个道理吧。
7、保存功能
为了便于将学生信息进行永久性的保存,系统开设了保存信息的功能。在保存的时候还应该考虑信息追加和信息更新。
8、读取功能
意如其名,字面意思就是从文本文件中读取学生的信息。方便于老师可以在不同的时间段工作。
9、退出功能
即直接推出该系统。
系统结构图
算法概要设计
就放一张主函数的图的,因为图片有点多,比较占位置。。。
心得体会(瞎写的吧)
做了这个课程设计之后,我的收获还是蛮大的。先来说说自己的感受吧,我觉得做这个课程设计,非常有必要,也很有意义。从一开始的选题,到设计系统结构,再到制定所用到的功能,接着开始写代码,每完成一个功能就测试一下,这过程并不是很顺利。比如说对于指针那一块有点忘记了,然后又在图书馆里复习了指针和结构体以及结构体指针。然后老师要求用文本的形式进行存储数据,我又新学了FILE文件指针。
在一开始制作之前,在CSDN上参考了很多大神的课程设计,主要是看一下他们的思路,和他们都设计了哪些功能,CSDN真的是一个好东西,在那上面可以学到很多东西,也正因如此,我就在参考的过程中学会system语句。不得不说这个语句真的挺实用的,把它用到我的代码里去,可以使系统在运行之后更有序。
写这个系统前后用了6天的时间吧,初步完成后是557行代码,然后加上注释以及更新了一部分功能就变成了700多行代码,每天都在图书馆里,基本上每天完成1-2个功能。这其中也有很多苦。比如在bug出现的时候,有时会盯着自己写的代码看很久,绞尽脑汁去解决这个bug,甚至有些bug是我在去食堂的路上,突然就想到了解决的方法。说真的,一开始写代码的时候,我感觉完成这个课程设计有点困难,因为之前从来没有试过去做这样一个项目,但是在把最后一个bug解决好的那一刻,真的就是特别快乐,特别的激动,从0到1,这个过程虽然艰辛,但是特别过瘾。
其实做这个学生成绩管理系统,就相当于做了一个小软件吧,因为它同做软件的流程是一样的,先是需求分析,然后概要设计,详细设计,之后开始编程,编程完成后还要开始测试,还有之后的更新维护。所以我觉得做这样一个课程设计特别有意义。
在做这个管理系统的过程中,我也有意外的发现,如果说代码是习武之人常说的招式,那么支撑招式的内力就是理论和概念。之前我不怎么喜欢理论和概念的东西,因为比较枯燥,所以我更喜欢实际一点的东西,但是现在我觉得,一个卓越的软件工程师,其理论知识也会特别扎实。所以在接下来的学习里,我会好好的复习和学习理论知识,比如现在所学的OS和计算机组成原理。此外,每天的算法题也要坚持去做。
“哪怕只有痛苦作伴也要勇往直前…”一句歌词送给自己吧,去追求那充满鲜花的世界,励志成为一名卓越的软件工程师。
部分效果图演示
详细代码(干货来咯~我很菜,心灵脆弱,大佬们别喷)
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
// 定义学生信息结构体
typedef struct Students{
char name[20]; //姓名
int number; //学号,学号定义为整型,8位数,例如:18241024
char sex[3]; //性别
int age; //年龄
int math; //数学成绩
int english; //英语成绩
int computer; //计算机成绩
int TatolScore; //总分
struct Students *next; //指向下一个节点
}Students;
Students *head=NULL; //把head作为全局变量
// 定义一个菜单
void Menu(){
printf("*****************************************\n");
printf("*\t欢迎使用学生成绩管理系统\t*\n");
printf("*****************************************\n");
printf("*\t系统功能如下所示\t\t*\n");
printf("*****************************************\n");
printf("*\t1、录入学生成绩\t\t\t*\n");
printf("*\t2、显示学生成绩\t\t\t*\n");
printf("*\t3、查找学生信息\t\t\t*\n");
printf("*\t4、修改学生信息\t\t\t*\n");
printf("*\t5、学生成绩排序\t\t\t*\n");
printf("*\t6、删除学生信息\t\t\t*\n");
printf("*\t7、保存学生信息\t\t\t*\n");
printf("*\t8、读取学生信息\t\t\t*\n");
printf("*\t9、退出管理系统\t\t\t*\n");
printf("*****************************************\n");
}
//定义一个函数,在排序时用于交换数据,减少代码冗余
void Swap(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
//定义一个函数,用于交换两节点之间的信息
void SwapStudent(Students *p){
char TmpName[20],TmpSex[3];
Swap(&p->math,&p->next->math);
Swap(&p->age,&p->next->age);
Swap(&p->english,&p->next->english);
Swap(&p->computer,&p->next->computer);
Swap(&p->TatolScore,&p->next->TatolScore);
Swap(&p->number,&p->next->number);
strcpy(TmpName,p->name);
strcpy(p->name,p->next->name);
strcpy(p->next->name,TmpName);
strcpy(TmpSex,p->sex);
strcpy(p->sex,p->next->sex);
strcpy(p->next->sex,TmpSex);
}
//冒泡排序法对学生成绩进行排序
//len表示当前链表节点个数,p为当前的链表,choose表示选择
void BubbleSort(int len,Students *p,int choose){
int i,j;
for(i=0;i<len-1;i++){
p=head;
for(j=0;j<len-i-1;j++){
if(choose==1){ //按计算机成绩降序排序
if(p->computer<p->next->computer)
SwapStudent(p); //调用学生信息交换函数,交换两节点之间的信息
p=p->next;
}
else if(choose==2){ //按数学成绩降序排序
if(p->math<p->next->math)
SwapStudent(p);
p=p->next;
}
else if(choose==3){ //按英语成绩降序排序
if(p->english<p->next->english)
SwapStudent(p);
p=p->next;
}
else if(choose==4){ //按总成绩降序排序
if(p->TatolScore<p->next->TatolScore)
SwapStudent(p);
p=p->next;
}
else if(choose==5){ //按计算机成绩升序排序
if(p->computer>p->next->computer)
SwapStudent(p);
p=p->next;
}
else if(choose==6){ //按数学成绩升序排序
if(p->math>p->next->math)
SwapStudent(p);
p=p->next;
}
else if(choose==7){ //按英语成绩升序排序
if(p->english>p->next->english)
SwapStudent(p);
p=p->next;
}
else if(choose==8){ //按总成绩升序排序
if(p->TatolScore>p->next->TatolScore)
SwapStudent(p);
p=p->next;
}
}
}
}
//定义一个函数,被主查找函数进行调用
//该函数以学生姓名查找学生信息,该查找不排除同名同姓的情况
void FindStuName(){
char StuName[10];
Students *p;
p=head; //指向头节点
int flag=1; //flag用于标记
int people=0;
if(head==NULL){ //如果头节点为空,表示查找失败
printf("查找失败:目前尚无任何信息可查\n");
system("pause"); //system函数,用于停顿
system("cls"); //system函数,用于清屏
return; //结束该函数
}
//如果头节点不为空
printf("请输入你所需要查找的姓名:");
scanf("%s",StuName);
printf("_____________________________________________________________________________________________________________\n");
while(p!=NULL){
if(strcmp(StuName,p->name)==0){
printf("%d-----姓名:%s 学号:%d 性别:%s 年龄:%d 数学:%d 英语:%d 计算机:%d 总分:%d\n",people+1,p->name,p->number,p->sex,
p->age,p->math,p->english,p->computer,p->TatolScore);
flag=0;
people++;
}
p=p->next;
}
//当flag置零时表示信息库中没有此人
if(flag){
printf("查找失败:学生信息库中暂无此人\n");
system("pause"); //任意键继续
system("cls"); //清屏
return; //结束函数
}
//查到信息后会显示出来
printf("查找完毕,共有%d条结果\n",people);
system("pause"); //任意键继续
system("cls"); //清屏
}
//定义一个函数,被主查找函数调用
//该函数目的在于以学号的方式对学生进行查找,查找结果唯一,因为学号唯一
void FindStuNum(){
Students *p;
p=head;
//如果头节点为空,则表示查找失败
if(head==NULL){
printf("查找失败:目前尚无任何信息可查\n");
system("pause");
system("cls");
return;
}
int StuNum;
printf("请输入你所需要查找的学号:");
scanf("%d",&StuNum);
printf("_____________________________________________________________________________________________________________\n");
while(p!=NULL&&p->number!=StuNum)
p=p->next;
//p为NULL时,表示并未查到该学号
if(p==NULL){
printf("查找失败:学生信息库中并未查到该学号\n");
system("pause");
system("cls");
return;
}
printf("姓名:%s 学号:%d 性别:%s 年龄:%d 数学:%d 英语:%d 计算机:%d 总分:%d\n",p->name,p->number,p->sex,p->age,p->math,
p->english,p->computer,p->TatolScore);
printf("查找完毕\n");
system("pause");
system("cls");
}
//该系统功能之一,录入功能
void InputStudent(){
system("cls"); //清屏
Students *NewStudent; //表示一个新同学的节点
Students *tail; //链表的尾节点
tail=head;
NewStudent=(Students*)malloc(sizeof(Students)); //为新同学节点分配
NewStudent->next=NULL; //下一个节点置NULL
//查找尾节点
while(head!=NULL&&tail->next!=NULL)
tail=tail->next;
//如果头节点为空,则表示当前录入的是第一个同学
if(head==NULL)
head=NewStudent;
else
tail->next=NewStudent; //不为空则令尾节点指向该同学
//录入开始
printf("***开始录入信息,请确保信息正确***\n");
printf("请输入姓名:");
scanf("%s",NewStudent->name);
printf("请输入学号:");
scanf("%d",&NewStudent->number);
printf("请输入性别:");
scanf("%s",NewStudent->sex);
printf("请输入年龄:");
scanf("%d",&NewStudent->age);
printf("请输入数学成绩:");
scanf("%d",&NewStudent->math);
printf("请输入英语成绩:");
scanf("%d",&NewStudent->english);
printf("请输入计算机成绩:");
scanf("%d",&NewStudent->computer);
NewStudent->TatolScore=NewStudent->math+NewStudent->english+NewStudent->computer;
printf("你本次录入的同学是%s,总分为:%d\n",NewStudent->name,NewStudent->TatolScore);
printf("录入完毕\n");
system("pause");
system("cls");
}
//该系统主要功能之一,浏览(显示)功能,将全部学生成绩打印出来
void PrintStuInfo(){
system("cls");
Students *StuInfo;
int people=0; //people用于统计人数
StuInfo=head;
//相当于头节点为空
if(StuInfo==NULL){
printf("暂无学生信息,请输入后再试。\n");
system("pause");
system("cls");
return;
}
//头节点不为空就打印信息
else{
printf("*************************************************************************\n");
printf("|姓名\t|学号\t\t|性别\t|年龄\t|数学\t|英语\t|计算机\t|总分\t|\n");
while(StuInfo){
people++;
printf("*************************************************************************\n");
printf("|%s\t|%d\t|%s\t|%d\t|%d\t|%d\t|%d\t|%d\t|\n",StuInfo->name,StuInfo->number,StuInfo->sex,StuInfo->age,StuInfo->math,StuInfo->english,
StuInfo->computer,StuInfo->TatolScore);
StuInfo=StuInfo->next;
}
}
printf("*************************************************************************\n");
printf("以显示全部,合计%d人\n",people); //报告学生人数
system("pause");
system("cls");
}
//该系统主要功能之一,用于查找学生信息
void FindStudent(){
system("cls");
//考虑到姓名可能不唯一但是学号一定唯一的情况,定义了两种查询方式
//即按学号查询以及按姓名查询
printf("*****************************************\n");
printf("*\t学生成绩查询\t\t\t*\n");
printf("*****************************************\n");
printf("*\t请选择您所需要的查找方式:\t*\n");
printf("*\t1、按学号查找\t\t\t*\n");
printf("*\t2、按姓名查找\t\t\t*\n");
printf("*****************************************\n");
int choose;
printf("请选择:");
scanf("%d",&choose);
switch(choose){
case 1:
FindStuNum(); //调用按学号查询函数
break;
case 2:
FindStuName(); //调用按学生姓名查询函数
break;
default: //不小心按错,则退出该功能
printf("选择错误!因为不存在此项选择!\n");
system("pause");
system("cls");
break;
}
}
//该系统主要功能之一,用于修改学生信息,因为学号是唯一的,所以该函数以学号去查找学生信息
void ChangeStudent(){
system("cls");
Students *p;
p=head;
//头节点为空,表示学生信息库中没有任何信息
if(head==NULL){
printf("修改失败:学生信息库中暂无任何信息!\n");
system("pause");
system("cls");
return;
}
int StuNum;
int choose1; //choose用于确保进行修改时没有输入错误的学号
printf("请输入你将修改的学生的学号:");
scanf("%d",&StuNum);
//查找学号
while(p!=NULL&&p->number!=StuNum)
p=p->next;
//如果没有找到
if(p==NULL)
printf("修改失败:学生信息库中查找不到此学号!\n");
//找到学号后,先显示学生信息
else{
printf("\n*********系统为你查找到以下信息*********\n");
printf("_____________________________________________________________________________________________________________\n");
printf("姓名:%s 学号:%d 性别:%s 年龄:%d 数学:%d 英语:%d 计算机:%d 总分:%d\n",p->name,p->number,p->sex,p->age,p->math,
p->english,p->computer,p->TatolScore);
printf("_____________________________________________________________________________________________________________\n");
//确保没有输入错误学号
printf("请再次确认你是否需要修改该学生信息(是选择1,否选择2)\n");
printf("请选择:");
scanf("%d",&choose1);
switch(choose1){
case 1:
break;
case 2:
printf("修改失败:你否认了修改指令!\n");
system("pause");
system("cls");
return;
}
//可以修改单个的信息,也可以修改全部信息,choose2为选择结果
system("cls");
printf("*****************************************\n");
printf("*\t请选择你需要修改的信息\t\t*\n");
printf("*****************************************\n");
printf("*\t1、学生姓名\t\t\t*\n");
printf("*\t2、学生学号\t\t\t*\n");
printf("*\t3、学生性别\t\t\t*\n");
printf("*\t4、学生年龄\t\t\t*\n");
printf("*\t5、数学成绩\t\t\t*\n");
printf("*\t6、英语成绩\t\t\t*\n");
printf("*\t7、计算机成绩\t\t\t*\n");
printf("*\t8、全部信息\t\t\t*\n");
printf("*****************************************\n");
//定义新信息
int choose2;
int NewNumber;
int NewAge;
int NewMath;
int NewEnglish;
int NewComputer;
int NewTatolScore;
char NewName[20];
char NewSex[3];
printf("请选择:");
scanf("%d",&choose2);
switch(choose2){
case 1:
printf("请输入姓名:");
scanf("%s",NewName);
strcpy(p->name,NewName);
break;
case 2:
printf("请输入学号:");
scanf("%d",&NewNumber);
p->number=NewNumber;
break;
case 3:
printf("请输入性别:");
scanf("%s",NewSex);
strcpy(p->sex,NewSex);
break;
case 4:
printf("请输入年龄:");
scanf("%d",&NewAge);
p->age=NewAge;
break;
case 5:
printf("请输入数学成绩:");
scanf("%d",&NewMath);
p->math=NewMath;
break;
case 6:
printf("请输入英语成绩:");
scanf("%d",&NewEnglish);
p->english=NewEnglish;
break;
case 7:
printf("请输入计算机成绩:");
scanf("%d",&NewComputer);
p->computer=NewComputer;
break;
case 8:
printf("请输入姓名:");
scanf("%s",p->name);
printf("请输入学号:");
scanf("%d",&p->number);
printf("请输入性别:");
scanf("%s",p->sex);
printf("请输入年龄:");
scanf("%d",&p->age);
printf("请输入数学成绩:");
scanf("%d",&p->math);
printf("请输入英语成绩:");
scanf("%d",&p->english);
printf("请输入计算机成绩:");
scanf("%d",&p->computer);
break;
}
//如果修改了成绩,那么总成绩也肯定要变
p->TatolScore=p->math+p->english+p->computer;
printf("修改数据成功!\n");
}
system("pause");
system("cls");
}
// 函数主要功能之一,用于学生成绩的排序
void SortStudents(){
system("cls");
Students *p,*q;
int len; //统计节点个数,即学生个数
int choose; //用于选择排序方式
len=0;
q=head;
//如果头节点为空
if(head==NULL){
printf("排序失败:学生信息库中暂无任何信息!\n");
system("pause");
system("cls");
return;
}
//统计节点
while(q!=NULL){
q=q->next;
len++;
}
printf("*****************************************\n");
printf("*\t学生成绩排序\t\t\t*\n");
printf("*****************************************\n");
printf("*\t你有以下8种排序方式可选:\t*\n");
printf("*\t1、按计算机成绩降序\t\t*\n");
printf("*\t2、按数学成绩降序\t\t*\n");
printf("*\t3、按英语成绩降序\t\t*\n");
printf("*\t4、按总成绩降序\t\t\t*\n");
printf("*\t5、按计算机成绩升序\t\t*\n");
printf("*\t6、按数学成绩升序\t\t*\n");
printf("*\t7、按英语成绩升序\t\t*\n");
printf("*\t8、按总成绩升序\t\t\t*\n");
printf("*****************************************\n");
printf("请选择:");
scanf("%d",&choose);
//通过选择不同的方式进行排序,调用冒泡排序算法函数
switch(choose){
case 1:
BubbleSort(len,p,choose);
break;
case 2:
BubbleSort(len,p,choose);
break;
case 3:
BubbleSort(len,p,choose);
break;
case 4:
BubbleSort(len,p,choose);
break;
case 5:
BubbleSort(len,p,choose);
break;
case 6:
BubbleSort(len,p,choose);
break;
case 7:
BubbleSort(len,p,choose);
break;
case 8:
BubbleSort(len,p,choose);
break;
default: //防止输入错误选择
printf("选择错误!因为不存在此项选择!\n");
system("pause");
system("cls");
break;
}
printf("排序成功!请在功能2中查看!\n"); //排序成功后可以通过显示函数查看排序结果
system("pause");
system("cls");
}
//函数主要功能之一,用于删除某个学生的信息,此处也是以学号进行查找,因为姓名会有同名的情况
void DeleteStuInfo(){
system("cls");
Students *p,*BeforeNode;
p=head;
int StuNum;
int choose;
//如果头节点为空
if(head==NULL){
printf("暂无学生信息,请输入后再试。\n");
system("pause");
system("cls");
return;
}
printf("请输入你将删除的学生的学号:");
scanf("%d",&StuNum);
//查找学号
while(p!=NULL&&p->number!=StuNum){
BeforeNode=p;
p=p->next;
}
//查找失败,可能是输入学号错误或者信息库中没有该学号
if(p==NULL){
printf("删除失败:学生信息库中并未查到该学号\n");
system("pause");
system("cls");
return;
}
printf("你将删除的学生是:%s,学号为:%d\n",p->name,p->number); //显示将要删除的学生的学号和姓名
printf("你确认要删除该同学的信息吗?(是选择1,不是选择2)\n"); //防止失误将学生信息删除的情况
printf("请选择:");
scanf("%d",&choose);
switch(choose){
case 1:
if(p==head) //如果删除的学生是在头节点
head=p->next;
else //如果删除的学生是在尾节点或者是中间节点
BeforeNode->next=p->next;
printf("删除成功!\n");
break;
case 2:
printf("删除失败:你否认了删除指令!\n");
break;
}
system("pause");
system("cls");
}
//函数主要功能之一,用于保存学生信息,该保存功能有覆盖以及追加两个功能
void SaveStuInfo(){
system("cls");
FILE *fp; //文件指针
int choose; //choose用于选择
printf("*****************************************\n");
printf("*\t学生信息保存\t\t\t*\n");
printf("*****************************************\n");
printf("*\t你可以选择以下两种保存方式\t*\n");
printf("*\t1、追加学生信息\t\t\t*\n"); //追加
printf("*\t2、更新学生信息\t\t\t*\n"); //覆盖
printf("*****************************************\n");
printf("请选择:");
scanf("%d",&choose);
//选择
switch(choose){
case 1:
fp=fopen("D:\\学生成绩管理系统\\StuInfo.txt","a"); //其中\为转义字符,用fopen函数打开D盘中学生成绩管理系统中的StuInfo文件,a表示追加
break;
case 2:
fp=fopen("D:\\学生成绩管理系统\\StuInfo.txt","w"); //用法同上,w表示删除之前的数据后再进行保存,即覆盖、更新
break;
}
if(fp==NULL){
printf("打开文件失败!\n");
system("pause");
system("cls");
return;
}
Students *p;
p=head;
//保存学生信息
while(p!=NULL){
fprintf(fp,"\n%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d",p->number,p->name,p->sex,p->age,p->math,p->english,p->computer,p->TatolScore);
p=p->next;
}
printf("保存信息成功!\n");
fclose(fp); //用fclose函数关闭文件,一定要关闭
system("pause");
system("cls");
}
//函数主要功能之一,用于读取学生信息库的信息
//如果在读取学生信息之前录入了新同学信息,则一定要保存,读取之后头节点指向StuInfo文本里第一个同学
void ReadStuInfo(){
system("cls");
Students *p;
FILE *fp; //文件指针
Students *tail;
tail=head;
head=NULL; //经测试,头节点要置空,若不置空,就会出现在运行程序时读取多次后,学生信息叠加的情况
fp=fopen("D:\\学生成绩管理系统\\StuInfo.txt","r"); //以只读的形式打开学生信息库文本
if(fp==NULL){
printf("打开文件失败!\n");
system("pause");
system("cls");
return;
}
while(!feof(fp)){
p=(Students *)malloc(sizeof(Students)); //为当前节点分配
p->next=NULL; //下个节点置空
//寻找尾节点
while(head!=NULL&&tail->next!=NULL)
tail=tail->next;
//形成链表
if(head==NULL){
head=p;
tail=head;
}
else
tail->next=p;
//读取信息
fscanf(fp,"%d%s%s%d%d%d%d%d",&p->number,p->name,p->sex,&p->age,&p->math,&p->english,&p->computer,&p->TatolScore);
}
p=NULL; //此时的p是尾节点的下一个节点,要置空
printf("读取信息成功!\n");
fclose(fp); //关闭
system("pause");
system("cls");
}
//该系统的主函数
int main()
{
int choise;
while(1){
Menu(); //先调用菜单函数
printf("请选择:");
scanf("%d",&choise);
//九大功能
switch(choise){
case 1:
InputStudent(); //录入功能
break;
case 2:
PrintStuInfo(); //显示功能
break;
case 3:
FindStudent(); //查找功能
break;
case 4:
ChangeStudent(); //修改功能
break;
case 5:
SortStudents(); //排序功能
break;
case 6:
DeleteStuInfo(); //删除功能
break;
case 7:
SaveStuInfo(); //保存功能
break;
case 8:
ReadStuInfo(); //读取功能
break;
case 9: //退出程序
printf("你已退出学生成绩管理系统,欢迎下次使用!");
return 0;
break;
default: //防止输入错误
printf("选择错误!因为不存在此项选择!\n");
system("pause");
system("cls");
break;
}
}
return 0;
}