,,使用C语言实现学生成绩管理系统

,,使用C语言实现学生成绩管理系统

本文主要介绍了使用C语言实现的学生成绩管理系统。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

最近在学C语言,开发了一个学生成绩管理系统的小程序。代码比较粗糙,不喷了。

上图:

整个程序使用链表管理学生成绩,使用文件处理函数保存学生成绩。Fopen(文件路径,“WB”)用于将内存中学生信息的数据直接写入文件,Fopen(文件路径,“Rb”)用于读取程序后将数据再次直接恢复到内存中。

选项6是手动保存链表数据和配置数据。

选项7配置链表中的数据是否需要在每次修改时自动保存。

00:选项1进入后,直接根据提示输入学生的所有信息,每行一个。

选项3修改学生信息。进入后,选择如何找到要修改的学生,然后输入该学生的学号或姓名。找到后(因为可能有重名的学生,这里做了序号索引),输入结果索引,然后根据提示重新输入学生信息,达到修改的效果。

选项4查询,功能如上图所示。

选项5排序,根据提示输入条件,排序会导致链表数据的变化,所以返回主菜单后数据会自动保存到文件中。

选项8投票系统,在链表中输入人名,下面的投票结果会实时变化并排序,以票数最高的人的颜色高亮显示。

选项9输入后,右侧出现“导出成功”的提示,那么对应的目录下就会出现文件student_export.txt,里面包含了链表中学生的所有信息。这里使用fprintf函数输出到文件。

在对链表排序时,数据交换使用kernel32.dll的内存数据复制MoveMemory函数,只需要复制和交换链表中除pNext以外的数据。

以下代码:

//student management system.cpp:定义控制台应用程序的入口点。

//

#include 'stdafx.h '

#include 'string.h '

#包含“conio.h”

#包含“windows.h”

#include 'stdlib.h '

#define LIST_TITLE '学号姓名性别中文数学英语\n '

#define LIST_TITLE_1 '学号,姓名,性别,语文,数学,英语平均分\n '

# define FILE _ DATABASE ' C:\ \ student _ DATABASE . dat '

# define FILE _ EXPORT ' C:\ \ student _ EXPORT . txt '

//颜色

列举型别

{

黑色,

蓝色,

绿色,

青色,

红色,

洋红色,

棕色,

浅灰色,

深灰色,

浅蓝色,

浅绿色,

淡青色,

浅红色,

浅洋红色,

黄色,

白色

};

//函数索引

列举型别

{

Fun _ add=1,//添加学生信息

C _ delete,//删除

C _ modify,//修改

Fun _ search,//搜索

C _ sort,//排序

C _ save,//保存

Func_AutoSave,//自动保存

FUN _ VOTE,//投票系统

Func_Export,//导出学生信息

func _ Exit system///退出系统

};

结构学生

{

int num//学生ID

char name[20];//名称

char sex[8];//性别

浮动分数[3];//三门课程的成绩

浮动平均值;//平均分

int计数;//投票计数

学生* pNext

};

学生* G _ pStuHead//链接列表头

bool G _ autoStore=false//自动保存

/************************************************************************/

/*设置字体颜色*/

/************************************************************************/

void setFontColor(int ForgC)

{

WORD wColor

HANDLE hout put=GetStdHandle(STD _ OUTPUT _ HANDLE);

控制台_屏幕_缓冲区_信息csbi

if(GetConsoleScreenBufferInfo(hout put,csbi))

{

//设置字体颜色

wColor=(csbi . wattributes0xf 0)(ForgC0x0F);

SetConsoleTextAttribute(hout put,w color);

}

}

/************************************************************************/

/*光标跳转到指定位置*/

/************************************************************************/

void gotoxy(int x,int y)

{

//更新光标位置

坐标位置;

HANDLE hout put=GetStdHandle(STD _ OUTPUT _ HANDLE);

位置。X=x

位置。Y=y

SetConsoleCursorPosition(hout put,pos);

//隐藏光标

//控制台_光标_信息游标;

//光标。b可见=假;

//光标。dwsize=1;//值介于1 ~ 100 之间单元格底部为下划线~完全填充单元格

//SetConsoleCursorInfo(hOutput,cursor);

}

/************************************************************************/

/*主菜单中指定位置打印是否自动保存*/

/************************************************************************/

void printAutoStoreInfo()

{

setFontColor(浅绿色);

gotoxy(13,10);

printf('%s\n ',G_autoStore?'是' : '否');

setFontColor(白色);

}

/************************************************************************/

/*显示最上面的系统标题*/

/************************************************************************/

void showSystemTitle()

{

setFontColor(浅绿色);

printf('-\ n ');

printf('\t\t欢迎进入学生管理系统\ n’);

printf('-\ n ');

setFontColor(白色);

}

/************************************************************************/

/*初始化屏幕*/

/************************************************************************/

void initScreen()

{

系统(《CLS》);

显示系统标题();

printf('请输入数字序列号,选择您要执行的操作:\ n’);

printf('1,添加学生信息\ n’);

printf('2,删除学生信息\ n’);

printf('3,修改学生信息\ n’);

printf('4,查询学生信息\ n’);

printf('5,排序\ n’);

printf('6,保存(如打开自动保存,则无需手动执行)\ n’);

printf('7,自动保存:');

print autostoreinfo();

printf('8,投票系统\ n’);

printf('9,导出学生信息\ n’);

setFontColor(浅红色);

printf('10,退出学生管理系统\ n’);

setFontColor(白色);

}

/************************************************************************/

/*从指定位置开始清除指定长度元素*/

/************************************************************************/

void gotodelete(int x,int y,int length)

{

int I;

for(I=0;我长度;我)

{

gotoxy(x i,y);

printf(" ");

}

}

/************************************************************************/

/*清除指定位置元素*/

/************************************************************************/

void gotodelete(int x,int y)

{

gotodelete(x,y,1);

}

/************************************************************************/

/*投票系统*/

/************************************************************************/

voteSystem()

{

弯曲件已经找到;

char name[20];

int count,I,j;

学生* pStu,* pTmp

学生* * pStuArr

//初始化票数清零

pStu=G _ pStu head-pNext;

while(pStu!=空)

{

pStu-count=0;

pStu=pStu-pNext;

}

count=0;

pStuArr=(学生* *)malloc(4 * 100);//用于存放已经获得票数的同学指针

gotoxy(0,6);

printf('投票结果如下:\ n’);

gotoxy(0,3);

printf('请在下方输入你想投给的人的姓名(输入-1返回主菜单):\ n’);

while (1)

{

gotodelete(0,4,20);//清空输入行

gotoxy(0,4);

scanf('%s ',名称);

if(strcmp(name,'-1')==0)

{

打破;

}

hasFound=false

pStu=G _ pStu head-pNext;

//在系统中查找对应的人名

while(pStu!=空)

{

if(strcmp(pStu-name,name)==0)

{

hasFound=true

打破;

}

pStu=pStu-pNext;

}

如果(!hasFound)

{

printf('查无此人!');

睡眠(1000);

gotodelete(0,5,20);

继续;

}

//找到之后,这个人所对应的票数一

pStu-count;

for(I=0;我数;我)

{

if(pStuArr[i]==pStu)

{

打破;

}

}

if(i==count)//说明未找到,则添加进候选人数组

{

pStuArr[count]=pStu;

如果(计数% 100==0)

{

pStuArr=(学生**)realloc(pStuArr,计数100);

}

}

//冒泡排序,票数

for(I=0;我数-1;我)

{

for(j=I ^ 1;j计数;j)

{

if(pStuArr[I]-count pStuArr[j]-count)

{

pTmp=pStuArr[I];

pstuarr[I]=pstuarr[j];

S7-1200可编程控制器:

}

}

}

哥特式氧化物(0.7);//跳转到打印票数的那行

//打印票数

for(I=0);我数;(一)

{

如果(i==0)

{

setfontcolor(浅绿色);

}

其他语句

{

setFontColor(白色);

}

printf(% d % s \ t % d \ n),pStuArr[i]-num,pStuArr[i]-name,pStuArr[I]-count];

}

}

自由(pstuarr);

}

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

*/

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

弯曲件汇出学生资讯()

{

学生* pstu

* fp文件:

pstn=g _ pstn up-pnext;

if((fp=fopen(FILE_EXPORT," w ")=null)

{

返回错误的

}

而(pstn!=空)

{

fprinff(FP," % d % s % s % . 2f % . 2f % . 2f \ n ",pstn-num,pstn。名称,pstn-sex,

一种常用旧式电话系统分数[0],pstn分数[1],pstn分数[2],pstn-averge;

pstn=pstn-pnext;

}

fclose(FP);

返回真实的

}

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

(为

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

bool saveStudentInfo()

{

*fp文件:

学生* pstu

pstu=g _ pstuat

if((fp=fopen(FILE_DATABASE,' WB ')==null)

{

返回错误的

}

fwrite(g _ auto stor,sizeof(g _ auto stor),1,FP);

而(pstn!=空)

{

fwrite(pstn、sizeof(学生)、1、FP);

pstn=pstn-pnext;

}

fclose(FP);

返回真实的

}

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

*/

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

bool loadStudentInfo()

{

*fp文件:

int计数

学生stu 、* pstu 、* pstn un

count=0;

pstu=g _ pstuat

if((FP=fopen)(file _ database,' Rb ')==null)

{

返回错误的

}

fread(g _ auto stor,sizeof(g _ auto stor),1,FP);//读取是否自动保存

while(1)

{

弗雷阿德(斯图,西泽夫(学生),1,FP);//读取文档中每个同学的数据

if(feof(fp))//到文档尾则跳出

{

打断;打断;

}

如果(计数0

{

pStuNew=(学生*)malloc(sizeof(学生));

运动记忆(pStuNew、stu、sizeof(学生)-4);//将结构体除指针外的所有数据拷贝进内存

p tunew-pnext=null;

pstn-pnext=pstn un;

pstu=pstunew

}

if(stu.pNext==NULL)

{

打断;打断;

}

}

fclose(FP);

返回真实的

}

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

*/

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

bool sortStudentInfo()

{

int order1,order 2;

弯曲件交换数据;

坦克耶索诺;

学生* pstu 1 、* pstu 2、tmpstu

pstn 1=g _ pstn up-pnext;

if(pstn 1==null)

{

printf('系统中无学生信息!\ n ';

系统("暂停");

返回错误的

}

扫描文件(" %d,顺序1 ");

如果(订单1=1订单1=6)

{

printf('请选择正序运筹学倒序排列?();

scanf("% d,顺序2 ");

如果(订单2=1订单2=2)

{

//冒泡排序

为(;pstn 1-pnext!=nullpstn 1=pstn 1-pnext)

{

for(pstn 2=pstn 1-pnext);pstu 2!=nullpstn 2=pstn 2-pnext)

{

swapData=false://是否交换数据

交换机(订单1)

{

案例

{

如果(订单2==1)?(pstn 1-号码pstn 2-号码):(pstn 1-号码)

{

swapData=true:

}

打断;打断;

}

案例

{

如果(订单2==1)?(strcmp(pstn 1-名称,pstn 2-名称)0):(strcmp(pstn 1-名称,pstn 2-名称)0)

{

swapData=true:

}

打断;打断;

}

案例

案例

案例

{

如果(订单2==1)?(pstn 1分数[订单1 - 3]pstn 2分数[订单1-3]):(pstn 1分数[订单1-3]pstn 2分数[顺序1-3])

{

swapData=true:

}

打断;打断;

}

案例

{

如果(订单2==1)?(pstn 1-故障pstn 2-故障):(pstn 1-故障pstn 2-故障)

{

swapData=true:

}

打断;打断;

}

}

如果(交换数据)

{

//交换内存数据,只需要将除pNext指针外的结构体数据拷贝交换即可

运动记忆(tmpStu、pStu1、sizeof(学生)-4);

运动记忆(pstu 1、pstu 2、sizeof(学生)-4);

八字胡(pStu2、tmpStu、sizeof(学生)-4);

}

}

}

printf('排序完成,是否显示?是/否\ n ';

getchar();//过滤掉输入时的换行符

scanf("% c,yes or no ");

如果(耶索诺='Y' ||耶索诺='Y ')

{

pstn 1=g _ pstn up-pnext;

setfontcolor(浅绿色);

printf(LIST_TITLE_1)://显示列表标题头

setFontColor(白色);

//打印排序后的各个学生信息

while(pstn 1!=空)

{

printf("% d % s % s %)。2f %。2f %。2f %。2f \ n ',pstn 1-号码,pstn 1-姓名,pstn 1-性别),

pstn 1分数[0],pstn 1分数[1],pstn 1分数[2],pstn 1-averge;

pstn 1=pstn 1-pnext;

}

系统("暂停");

}

返回真实的

}

}

返回错误的

}

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

*/

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

请参阅searchStudentInfo()

{

布尔找到了

int order、stuID、count、I、min、max

浮点分数;

茶名称[20];

学生* pstu

学生* * pstuarr

pstuarr=null

while (1)

{

系统(“cls”);

show system title();

if(pstn RR!=& lt客户名称& gt

{

自由(pstuarr);

}

count=0;

stuid=0;

hasfound=false

pstn=g _ pstn up-pnext;

pStuArr=(学生* *)malloc(4 * 100);//初始化查询到后存放的学生信息指针数组

scanf("% d,顺序");

交换机(订单)

{

案例

{

scanf("% d,stuid ");

而(pstn!=空)

{

if(pstn-num==stuid)

{

hasfound=true

打断;打断;

}

pstn=pstn-pnext;

}

if(hasFound)//

{

setfontcolor(浅绿色);

printf(LIST_TITLE_1):

setFontColor(白色);

printf("% d % s % s %)。2f %。2f %。2f %。2f \ n ',pstn-num,pstn名称、pstn-sex、

一种常用旧式电话系统分数[0],pstn分数[1],pstn分数[2],pstn-averge;

}

打断;打断;

}

案例

{

扫描文件(" %s,名称");

而(pstn!=空)

{

if(strcmp(pstn名称,名称)==0)

{

hasfound=true

pstn RR[count]=pstn;

if(计数% 100==0)

{

pstuarr=(学生**)真主管(pstn RR,计数100);

}

}

pstn=pstn-pnext;

}

如果(已找到)

{

setfontcolor(浅绿色);

printf(LIST_TITLE_1):

setFontColor(白色);

for(I=0);我数;(一)

{

printf(% d % s % s %)。2f %。2f %。2f %。2f \ n,' pStuArr[I]-编号,pStuArr[I]-名称,pStuArr[I]-性别),

pStuArr[i]-score[0],pStuArr[i]-score[1],pStuArr[i]-score[2],pStuArr[I]-averge;

}

}

打断;打断;

}

案例

案例

案例

案例

{

char * subjectstrarr,中;

主观性【阶-3】);

scanf("% d % d,最小值,最大值");

而(pstn!=空)

{

if(阶6)/(3 ~ 5)

{

分数=pstu评分[订单-3];

}

否则//顺序=6

{

分数=pstu警报:

}

如果(分数=最小分数=最大值)

{

//找到符合条件的学生信息,则加入到指针数组中去

hasfound=true

pstn RR[count]=pstn;

if(计数% 100==0)

{

pstuarr=(学生**)真主管(pstn RR,计数100);

}

}

pstn=pstn-pnext;

}

如果(已找到)

{

setfontcolor(浅绿色);

printf(LIST_TITLE_1):

setFontColor(白色);

//打印指针数组中的学生信息

for(I=0);我数;(一)

{

printf(% d % s % s %)。2f %。2f %。2f %。2f \ n,' pStuArr[I]-编号,pStuArr[I]-名称,pStuArr[I]-性别),

pStuArr[i]-score[0],pStuArr[i]-score[1],pStuArr[i]-score[2],pStuArr[I]-averge;

}

}

打断;打断;

}

案例

{

hasfound=true

setfontcolor(浅绿色);

printf(LIST_TITLE_1):

setFontColor(白色);

而(pstn!=空)

{

printf("% d % s % s %)。2f %。2f %。2f %。2f \ n ',pstn-num,pstn名称、pstn-sex、

一种常用旧式电话系统分数[0],pstn分数[1],pstn分数[2],pstn-averge;

pstn=pstn-pnext;

}

打断;打断;

}

默认设置:

{

转到实验室_搜索:

}

}

如果(!hasFound)

{

printf('未能找到相应的学生信息!\ n ';

}

系统("暂停");

}

实验室_搜索:

自由(pstuarr);

}

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

*/

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

bool deleteStudentInfo()

{

坦克耶索诺;

int stuid

布尔找到了

学生* pstn 、* pstn 1;

hasfound=false

pstn=g _ pstn up-pnext;

pstu 1=g _ pstuhead

scanf("% d,stuid ");

而(pstn!=空)

{

if(pstn-num==stuid)

{

hasfound=true

打断;打断;

}

pstu 1=pstu

pstn=pstn-pnext;

}

如果(已找到)

{

setfontcolor(浅绿色);

printf(LIST_TITLE_1):

setFontColor(白色);

printf("% d % s % s %)。2f %。2f %。2f %。2f \ n ',pstn-num,pstn名称、pstn-sex、

一种常用旧式电话系统分数[0],pstn分数[1],pstn分数[2],pstn-averge;

printf('是否删除?“是/否”;

getchar();//过滤掉输入时的换行符

scanf("% c,yes or no ");

如果(耶索诺='y' ||耶索诺='y ')

{

pstn 1-pnext=pstn-pnext;

自由(pstn);

}

其他语句

{

hasfound=false

}

}

其他语句

{

}

系统("暂停");

返回hasfound

}

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

*/

-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧

bool modifyStudentInfo()

{

int顺序,计数,I;

int stuid

茶名称[20];

坦克耶索诺;

布尔函数有修改

学生* pstu

学生* * pstuarr

hasmodify=false

count=0;

pstn=g _ pstn up-pnext;

pStuArr=(学生* *)malloc(4 * 100);//用于存放查找到的学生信息指针,这里定义指针数组是防止查询姓名出现重名

scanf("% d,顺序");

如果(命令==1)

{

scanf("% d,stuid ");

而(pstn!=空)

{

if(pstn-num==stuid)

{

pstn RR[count]=pstn;

打断;打断;

}

pStu=pStu-pNext;

}

}

else if(order==2)

{

printf('请输入要修改的学生姓名:\ n’);

scanf('%s ',名称);

while(pStu!=空)

{

if(strcmp(pStu-name,name)==0)

{

pStuArr[count]=pStu;

if(count % 100==0)//如果数组存放满了,则再次申请内存

{

pStuArr=(学生**)realloc(pStuArr,计数100);

}

}

pStu=pStu-pNext;

}

}

其他

{

返回错误的

}

if(count==0)

{

printf('未能找到任何信息,是否继续修改?y/N’);

getchar();//过滤掉输入时的换行符

扫描f('%c ',是或否);

if(yesOrNo=='y' || yesOrNo=='Y ')

{

系统(《CLS》);

显示系统标题();

返回modifyStudentInfo();

}

}

其他

{

printf('为您查找到%d个学生信息:\n ',计数);

setFontColor(浅绿色);

printf(LIST _ TITLE);

setFontColor(白色);

for(I=0;我数;我)

{

printf('%d 、%d %s %s %.2f %.2f %.2f\n ',i 1,pStuArr[i]-num,pStuArr[i]-name,pStuArr[i]-sex,

pStuArr[i]-score[0],pStuArr[i]-score[1],pStuArr[I]-score[2]);

}

printf('请输入您要修改的信息序号(1~%d),其他数字返回主菜单\n ',计数);

scanf('%d ',顺序);

如果(订单=1订单=计数)

{

printf('请依次输入\ n’);

setFontColor(浅绿色);

printf(LIST _ TITLE);

setFontColor(白色);

pStu=pStuArr[order-1];

scanf('%d %s %s %f %f %f ',pStu-num,pStu-name,pStu-sex,pStu-score[0],pStu-score[1],pStu-score[2]);

pStu-averge=(pStu-score[0]pStu-score[1]pStu-score[2])/3;

hasModify=true

}

}

免费(pStuArr);

返回哈斯修改

}

/************************************************************************/

/*检测学号是否存在*/

/************************************************************************/

bool checkStuIDExist(int stuID)

{

学生* pStu

pStu=G _ pStu head-pNext;

while(pStu!=空)

{

if(pStu-num==stuID)

{

返回真实的

}

pStu=pStu-pNext;

}

返回错误的

}

/************************************************************************/

/*添加学生信息*/

/************************************************************************/

bool addStudentInfo()

{

printf('输入-1回车,返回上级菜单\ n’);

setFontColor(浅绿色);

printf(LIST _ TITLE);

setFontColor(白色);

char c;

bool hasAdd=false

学生* pStu=G _ pStuHead

学生* pStuNew

while (pStu-pNext!=空)

{

pStu=pStu-pNext;

}

while(1)

{

pStuNew=(Student *)malloc(sizeof(Student));

scanf('%d ',pStuNew-num);

if(p tunew-num==-1)//输入-1返回主菜单

{

while ((c=getchar())!=EOF c!=' \ n ');//不停地使用getchar()获取缓冲中字符,直到获取的c是" \n "或文件结尾符文件结束为止

免费(pStuNew);

返回hasAdd

}

else if(checkStuIDExist(p tunew-num))

{

while ((c=getchar())!=EOF c!=' \ n ');//不停地使用getchar()获取缓冲中字符,直到获取的c是" \n "或文件结尾符文件结束为止

printf('该学号已存在,请重新输入!\ n’);

免费(pStuNew);

继续;

}

hasAdd=true

scanf('%s %s %f %f %f ',p tunew-name,p tunew-sex,p tunew-score[0],

pStuNew->score[1], &pStuNew->score[2]); pStuNew->averge = (pStuNew->score[0] + pStuNew->score[1] + pStuNew->score[2]) / 3; pStuNew->pNext = NULL; pStu->pNext = pStuNew; pStu = pStuNew; } return hasAdd; } /************************************************************************/ /*根据指令序号执行对应功能 */ /************************************************************************/ bool orderToExecute(int order) { bool succ; succ = false; if(order != Func_Save && order != Func_AutoSave && order!= Func_Export) { system("CLS"); showSystemTitle(); } switch (order) { case Func_Add://添加 { succ = addStudentInfo(); break; } case Func_Delete://删除 { succ = deleteStudentInfo(); break; } case Func_Modify://修改 { succ = modifyStudentInfo(); break; } case Func_Search://搜索 { searchStudentInfo(); break; } case Func_Sort://排序 { succ = sortStudentInfo(); break; } case Func_Save://保存 { succ = saveStudentInfo(); if(succ) { gotoxy(42, Func_Save + 3); setFontColor(LIGHTGREEN); printf("保存成功!"); setFontColor(WHITE); gotodelete(0, Func_ExitSystem + 4, 2); gotoxy(0, Func_ExitSystem + 4); } return false; } case Func_AutoSave://设置自动保存 { G_autoStore = ! G_autoStore; printAutoStoreInfo(); orderToExecute(Func_Save);//保存配置 break; } case Func_Vote://投票系统 { voteSystem(); break; } case Func_Export://导出所有学生信息(明文) { succ = exportStudentInfo(); gotoxy(17, Func_Export + 3); setFontColor(LIGHTGREEN); if(succ) { printf("导出成功!"); } else { printf("导出失败!"); } setFontColor(WHITE); gotodelete(0, Func_ExitSystem + 4, 2); gotoxy(0, Func_ExitSystem + 4); return false; } default: { break; } } return succ; } int main(int argc, char* argv[]) { int order; bool succ; system("title 学生管理系统 by 机智蛋"); order = 0; succ = false; G_pStuHead = (Student*)malloc(sizeof(Student)); G_pStuHead->pNext = NULL; loadStudentInfo(); while(1) { if(order != Func_Save && order != Func_AutoSave && order != Func_Export)//当输入这几个指令时不需要初始化屏幕 { initScreen(); } if(succ && order != Func_Save && G_autoStore)//执行自动保存 { orderToExecute(Func_Save); } succ = false; do { scanf("%d", &order); if(order >= Func_Add && order <= Func_ExitSystem) { break; } else { printf("指令错误,请重新输入\n"); } } while (1); if(order == Func_ExitSystem)//退出 { printf("欢迎下次继续使用,拜拜~~\n"); return 0; } succ = orderToExecute(order);//执行功能 } return 0; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • ,,C语言代码实现学生成绩管理系统
  • ,,C#实现简单学生成绩管理系统
  • ,,C#实现学生成绩管理系统
  • ,,java实现简单学生成绩管理系统
  • ,,python超详细实现完整学生成绩管理系统
  • c语言实现学生成绩管理系统输入性别,c语言实现学生成绩管理系统课程设计
  • c语言学生成绩管理系统源代码,C语言编写学生成绩管理系统
  • python中学生成绩管理系统,Python成绩管理
  • Python学生成绩管理,python教务系统学生成绩管理系统
  • python中学生成绩管理系统,Python学生成绩管理
  • python中学生成绩管理系统,Python学生成绩管理_1
  • java编写一个学生成绩管理系统,java学生成绩录入系统
  • 简单的学生成绩系统java,java编写一个学生成绩管理系统
  • java swing学生成绩管理系统,javaweb简单的学生管理系统
  • 留言与评论(共有 条评论)
       
    验证码: