C语言课程设计学生成绩管理系统.docx
《C语言课程设计学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统.docx(26页珍藏版)》请在冰点文库上搜索。
C语言课程设计学生成绩管理系统
#include”stdio.h”
#include"string.h"
#include"stdlib.h"
#include”conio.h"
#include”string.h”
#include"fcntl。
h"
typedefstructstudent
{
intnum;
chargrade[10];
charclassroom[10];
charname[10];
floatscore_math;
floatscore_chinese;
floatscore_english;
floataverage;
floatsum;
}STU;
typedefstructNode
{
STUdata;
structNode*next;
}*linklist;
voidmenu();
char*loginpassword(charpassword[],intn);//登录验证密码函数声明//
linklistcreatestulist(linklisthead);//创建学生链表即学生信息录入函数声明//
voidprintstulist(linklisthead);//学生信息输出函数声明//
voidsearchstu_namelist(linklisthead);//学生信息查询函数声明(按姓名)//
voidsearchstu_numlist(linklisthead);//学生信息查询函数声明(按学号)
linklistmodifystulist(linklisthead);//学生信息修改函数声明//
linklistdelatestulist(linklisthead);//学生信息删除函数声明//
voidsavestulist(linklisthead);//学生信息保存到文件函数声明//
linklistloadstulist();//从文件中读取学生信息函数声明//
voidsortstulist(linklisthead);//成绩排名函数(按年级)声明//
voidsort(STUstu[],intflag);//学生分班函数声明//
voidsortstuclass(linklisthead);//成绩排名函数(按班级)声明//
//*************************************//
voidmain()
charadmin[]=”zhangqiong";
charpassword[]=”123456”;
charperson[20];
charpassword1[10];
inti;
intj=0;
printf(”********************************************************************************\n");
printf("\t\t**********欢迎来到学生成绩管理系统**********\n\n”);
printf("********************************************************************************\n\n”);
printf("\t\t\t\t用户登录\n\n\n\n");
for(i=0;i<3;i++)
printf("用户名:
");
gets(person);
fflush(stdin);
printf(”\n\n\n”);
loginpassword(password1,10);
printf("\n\n\n”);
if(strcmp(admin,person)==0&&strcmp(password,password1)==0)
printf(”\t\t\t\t成功登录,亲!
\n");
printf("\n\n”);
printf(”按任意键继续!
”);
getch();
menu();
break;
}
else
printf("\t用户名或者密码输入错误\n");
}
if(i==3)
printf(”\t对不起,您今天输入次数太多,已被强制退出!
\n”);
//**********************************************************//
//**********************************************************//
char*loginpassword(charpassword[],intn)//登录密码函数,隐藏密码可见//
inti=0;
intm=0;
charch;
printf(”用户密码:
while((ch=getch())!
=’\r’&&m{password[i++]=ch;printf("*");m++;}password[i]=’\0’;returnpassword;}//***************************************************//voidmenu()//主界面函数//{system("cls");linklistL;L=(linklist)malloc(sizeof(Node));L-〉next=NULL;intch;do{printf("\t———-—-—--—******-----——----—******-—-—--——--—******—--———--——\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t——-——-—---******——-—--———---******——--——---——******--—--——---\n\n\n\n\n”);printf("\t1。录入学生成绩信息\n\t2。输出学生成绩信息\n\t3.按学号查找学生信息\n\t4.按姓名查找学生信息\n\t5.修改学生信息\n\t6.删除学生信息\n\t7。保存学生信息到文件\n\t8.从文件中读取学生信息\n\t9.年级总成绩排序\n\t10.班级总成绩排序\n\t11.退出\n");printf("\n\n”);printf("请输入您要查询的项目:\n”);scanf("%d",&ch);switch(ch){case1:system(”cls”);createstulist(L);break;case2:system("cls”);printstulist(L);break;case3:system("cls");searchstu_numlist(L);break;case4:system("cls”);searchstu_namelist(L);break;case5:system("cls");modifystulist(L);break;case6:system(”cls”);delatestulist(L);break;case7:system(”cls");savestulist(L);break;case8:system("cls");L=loadstulist();break;case9:system(”cls");sortstulist(L);break;case10:system(”cls");sortstuclass(L);break;case11:system("cls");exit(0);}}while(1);}//************************************//linklistcreatestulist(linklistL)//录入信息函数//{linklistp,q;charch;q=L;printf("*******请输入学生信息*******\n\n\n”);do{p=(linklist)malloc(sizeof(Node));if(!p){printf("没有多余内存空间\n”);returnL;}printf(”请输入学号:\n”);scanf("%d”,&p—>data。num);printf(”请输入姓名:\n”);scanf("%s",&p—>data。name);printf("请输入年级:\n”);scanf(”%s",&p-〉data.grade);printf("请输入班级:\n”);scanf("%s”,&p—>data.classroom);printf("请输入数学成绩:\n”);scanf(”%f",&p—>data。score_math);while(p—〉data。score_math〉100){printf("成绩超过100了,你是猪吗?\n");printf(”给老子重新输入:\n”);scanf("%f",&p->data。score_math);}printf("请输入语文成绩:\n”);scanf(”%f",&p—〉data.score_chinese);while(p-〉data.score_chinese>100){printf(”成绩超过100了,你是猪吗?\n");printf("给老子重新输入:\n”);scanf("%f",&p—>data.score_chinese);}printf(”请输入英语成绩:\n”);scanf("%f”,&p—〉data。score_english);while(p—〉data。score_english〉100){printf(”成绩超过100了,你是猪吗?\n");printf("给老子重新输入:\n”);scanf("%f”,&p-〉data。score_english);}p->data.sum=p-〉data.score_math+p-〉data。score_chinese+p->data。score_english;p-〉data.average=p—>data。sum/3;q—〉next=p;q=p;q-〉next=NULL;printf(”是否要输入下一个学生的信息(Y/N)!”);fflush(stdin);ch=getchar();system(”cls");}while(ch==’Y'||ch==’y');return(L);}//*****************************************//voidprintstulist(linklistL)//输出信息函数//{linklistp;p=L—>next;if(p==NULL){printf("请先录入学生信息,亲!\n");}elsewhile(p!=NULL){printf(”学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");printf(”%6d%3s%2s%2s%4.1f%4。1f%4.1f%4.1f%4.1f\n”,p->data.num,p—〉data。name,p—>data.grade,p—〉data.classroom,p—>data.score_math,p—>data。score_chinese,p—>data.score_english,p->data。sum,p—〉data。average);p=p-〉next;}printf("按任意键继续\n”);getch();system(”cls");}//*******************************************************//voidsearchstu_namelist(linklistL)//按姓名查询函数//{linklistp;charstr[10];printf("请输入要查询的学生姓名:\n”);scanf(”%s",str);p=L—>next;if(p==NULL){printf("请先录入学生信息\n”);}while(p!=NULL){if(strcmp(p-〉data.name,str)==0){printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n”);printf("%6d%3s%2s%2s%4。1f%4。1f%4。1f%4。1f%4。1f\n",p—>data.num,p—〉data.name,p—〉data。grade,p->data。classroom,p—〉data.score_math,p—>data。score_chinese,p-〉data.score_english,p-〉data。sum,p—〉data。average);}p=p->next;}printf("按任意键继续\n");getch();system("cls");}//****************************************//voidsearchstu_numlist(linklistL)//按学号查询函数//{linklistp;intnumber;printf(”请输入要查询的学生学号:\n”);scanf("%d",&number);p=L->next;if(p==NULL){printf("请先录入学生信息\n");}while(p!=NULL){if(p—>data。num==number){printf(”学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");printf("%6d%3s%2s%2s%4.1f%4。1f%4。1f%4.1f%4.1f\n",p—>data。num,p—>data。name,p—〉data。grade,p->data。classroom,p-〉data。score_math,p->data.score_chinese,p-〉data.score_english,p-〉data.sum,p—>data。average);}p=p—>next;}printf("按任意键继续\n");getch();system("cls”);}//*****************************************************//linklistdelatestulist(linklistL)//删除信息函数//{linklistp,q;intnumber;charch;printf("请输入要删除的学生学号:\n”);scanf("%d",&number);p=L->next;if(p==NULL){printf("请先录入学生信息\n”);returnNULL;}while(p!=NULL){if(p-〉data。num==number){printf(”学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n”);printf("%6d%3s%2s%2s%4。1f%4.1f%4.1f%4。1f%4。1f\n",p—>data。num,p—>data。name,p->data.grade,p—〉data.classroom,p-〉data。score_math,p->data。score_chinese,p-〉data。score_english,p->data。sum,p-〉data。average);printf(”确定要删除该学生的信息吗?(Y/N)\n”);fflush(stdin);ch=getchar();if(ch==’Y'||ch==’y'){q=L;while(q-〉next!=p)q=q->next;if(q-〉next=p){if(p—〉next==NULL)q-〉next=NULL;elseq-〉next=p-〉next;free(p);printf("已删除该学生的相关信息!\n");return(L);}}elsereturnNULL;}elsep=p—>next;}printf("按任意键继续\n");getch();system(”cls");}//***************************************//voidsavestulist(linklistL)//存盘函数//{FILE*fp;linklistp;charoutfile[20];printf("请输入你要保存信息的文件名:(例如:D:\\学生管理系统\\student.text)\n");scanf("%s",outfile);if((fp=fopen(outfile,"w”))==NULL){printf("文件打开失败\n”);exit(1);}p=L;while(p!=NULL){fwrite(p,sizeof(Node),1,fp);p=p—〉next;}fclose(fp);printf(”信息保存成功!\n”);printf(”请按任意键继续\n");getch();system(”cls");}//*******************************************//linklistloadstulist()//读盘函数//{linklistq,p,L;L=NULL;FILE*fp;charinfile[20];printf("请输入要打开的文件名:\n”);scanf("%s”,infile);if((fp=fopen(infile,”rb"))==NULL){printf(”文件打开失败!\n”);exit(1);}printf("正在打开文件.。。。\n”);p=(linklist)malloc(sizeof(Node));if(!p){printf("无法申请到内存空间");returnL;}L=p;while(!feof(fp)){if(fread(p,sizeof(Node),1,fp)!=1){printf(”读取信息失败!\n");break;}p—>next=(linklist)malloc(sizeof(Node));if(!p—>next){printf(”无法申请到内存空间");returnL;}q=p;p=p-〉next;}q-〉next=NULL;fclose(fp);printf("读取成功!\n");returnL;}//*************************************************//voidsortstulist(linklistL)//年级排序函数//{STUstu[1000];inti=0;intflag=0;linklistp;p=L->next;if(p==NULL){printf(”请先录入学生信息,亲!\n");}while(p!=NULL&&i〈1000){stu[i]=p-〉data;i++;p=p—>next;flag++;}printf(”正在排序。。.。。\n”);sort(stu,flag);}//******************************************************//voidsort(STUstu[],intflag){inti,j;STUtemp;for(i=1;i〈flag;i++)for(j=0;j〈flag—i;j++){if(stu[j].sum>stu[j+1].sum){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}}printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n”);for(i=flag—1;i>=0;i—-)printf(”%6d%3s%2s%2s%4。1f%4。1f%4。1f%4.1f%4。1f\n”,stu[i].num,stu[i]。name,stu[i]。grade,stu[i]。classroom,stu[i]。score_math,stu[i].score_chinese,stu[i]。score_english,stu[i].sum,stu[i]。average);printf("按任意键继续!\n");getch();system(”cls”);}//*****************************************************//voidsortstuclass(linklistL)//班级排序函数//{STUstu[1000];inti=0;STUc1[100],c2[100],c3[100],c4[100],c5[100],c6[100],c7[100],c8[100];intflag=0,flag1=0,flag2=0,flag3=0,flag4=0,
password[i++]=ch;
printf("*");
m++;
password[i]=’\0’;
returnpassword;
//***************************************************//
voidmenu()//主界面函数//
system("cls");
linklistL;
L=(linklist)malloc(sizeof(Node));
L-〉next=NULL;
intch;
do
printf("\t———-—-—--—******-----——----—******-—-—--——--—******—--———--——\n\n");
printf("\t\t\t**********学生成绩管理系统***********\n\n”);
printf("\t——-——-—---******——-—--———---******——--——---——******--—--——---\n\n\n\n\n”);
printf("\t1。
录入学生成绩信息\n\t2。
输出学生成绩信息\n\t3.按学号查找学生信息\n\t4.按姓名查找学生信息\n\t5.修改学生信息\n\t6.删除学生信息\n\t7。
保存学生信息到文件\n\t8.从文件中读取学生信息\n\t9.年级总成绩排序\n\t10.班级总成绩排序\n\t11.退出\n");
printf("\n\n”);
printf("请输入您要查询的项目:
\n”);
scanf("%d",&ch);
switch(ch)
case1:
system(”cls”);
createstulist(L);
break;
case2:
system("cls”);
printstulist(L);
case3:
system("cls");
searchstu_numlist(L);
case4:
system("cls”);
searchstu_namelist(L);
case5:
modifystulist(L);
case6:
delatestulist(L);
case7:
system(”cls");
savestulist(L);
case8:
L=loadstulist();
case9:
system(”cls");
sortstulist(L);
case10:
sortstuclass(L);
case11:
exit(0);
}while
(1);
//************************************//
linklistcreatestulist(linklistL)//录入信息函数//
linklistp,q;
charch;
q=L;
printf("*******请输入学生信息*******\n\n\n”);
p=(linklist)malloc(sizeof(Node));
if(!
p)
printf("没有多余内存空间\n”);
returnL;
printf(”请输入学号:
scanf("%d”,&p—>data。
num);
printf(”请输入姓名:
scanf("%s",&p—>data。
name);
printf("请输入年级:
scanf(”%s",&p-〉data.grade);
printf("请输入班级:
scanf("%s”,&p—>data.classroom);
printf("请输入数学成绩:
scanf(”%f",&p—>data。
score_math);
while(p—〉data。
score_math〉100)
printf("成绩超过100了,你是猪吗?
\n");
printf(”给老子重新输入:
scanf("%f",&p->data。
printf("请输入语文成绩:
scanf(”%f",&p—〉data.score_chinese);
while(p-〉data.score_chinese>100)
printf(”成绩超过100了,你是猪吗?
printf("给老子重新输入:
scanf("%f",&p—>data.score_chinese);
printf(”请输入英语成绩:
scanf("%f”,&p—〉data。
score_english);
score_english〉100)
printf(”成绩超过100了,你是猪吗?
printf("给老子重新输入:
scanf("%f”,&p-〉data。
p->data.sum=p-〉data.score_math+p-〉data。
score_chinese+p->data。
score_english;
p-〉data.average=p—>data。
sum/3;
q—〉next=p;
q=p;
q-〉next=NULL;
printf(”是否要输入下一个学生的信息(Y/N)!
”);
fflush(stdin);
ch=getchar();
}while(ch==’Y'||ch==’y');
return(L);
//*****************************************//
voidprintstulist(linklistL)//输出信息函数//
linklistp;
p=L—>next;
if(p==NULL)
printf("请先录入学生信息,亲!
while(p!
=NULL)
printf(”学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");
printf(”%6d%3s%2s%2s%4.1f%4。
1f%4.1f%4.1f%4.1f\n”,p->data.num,p—〉data。
name,p—>data.grade,p—〉data.classroom,p—>data.score_math,p—>data。
score_chinese,p—>data.score_english,p->data。
sum,p—〉data。
average);
p=p-〉next;
printf("按任意键继续\n”);
getch();
//*******************************************************//
voidsearchstu_namelist(linklistL)//按姓名查询函数//
linklistp;
charstr[10];
printf("请输入要查询的学生姓名:
scanf(”%s",str);
p=L—>next;
printf("请先录入学生信息\n”);
if(strcmp(p-〉data.name,str)==0)
printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n”);
printf("%6d%3s%2s%2s%4。
1f%4。
1f%4。
1f\n",p—>data.num,p—〉data.name,p—〉data。
grade,p->data。
classroom,p—〉data.score_math,p—>data。
score_chinese,p-〉data.score_english,p-〉data。
sum,p—〉data。
average);
p=p->next;
printf("按任意键继续\n");
//****************************************//
voidsearchstu_numlist(linklistL)//按学号查询函数//
intnumber;
printf(”请输入要查询的学生学号:
scanf("%d",&number);
p=L->next;
printf("请先录入学生信息\n");
if(p—>data。
num==number)
printf("%6d%3s%2s%2s%4.1f%4。
1f%4.1f%4.1f\n",p—>data。
num,p—>data。
name,p—〉data。
classroom,p-〉data。
score_math,p->data.score_chinese,p-〉data.score_english,p-〉data.sum,p—>data。
p=p—>next;
//*****************************************************//
linklistdelatestulist(linklistL)//删除信息函数//
linklistp,q;
intnumber;
printf("请输入要删除的学生学号:
scanf("%d",&number);
p=L->next;
printf("请先录入学生信息\n”);
returnNULL;
while(p!
if(p-〉data。
printf(”学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n”);
printf("%6d%3s%2s%2s%4。
1f%4.1f%4.1f%4。
1f\n",p—>data。
name,p->data.grade,p—〉data.classroom,p-〉data。
score_math,p->data。
score_chinese,p-〉data。
score_english,p->data。
sum,p-〉data。
printf(”确定要删除该学生的信息吗?
(Y/N)\n”);
if(ch==’Y'||ch==’y')
q=L;
while(q-〉next!
=p)
q=q->next;
if(q-〉next=p)
if(p—〉next==NULL)
q-〉next=NULL;
q-〉next=p-〉next;
free(p);
printf("已删除该学生的相关信息!
return(L);
returnNULL;
//***************************************//
voidsavestulist(linklistL)//存盘函数//
FILE*fp;
charoutfile[20];
printf("请输入你要保存信息的文件名:
(例如:
D:
\\学生管理系统\\student.text)\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"w”))==NULL)
printf("文件打开失败\n”);
exit
p=L;
fwrite(p,sizeof(Node),1,fp);
p=p—〉next;
fclose(fp);
printf(”信息保存成功!
printf(”请按任意键继续\n");
//*******************************************//
linklistloadstulist()//读盘函数//
linklistq,p,L;
L=NULL;
charinfile[20];
printf("请输入要打开的文件名:
scanf("%s”,infile);
if((fp=fopen(infile,”rb"))==NULL)
printf(”文件打开失败!
printf("正在打开文件.。
。
printf("无法申请到内存空间");
returnL;
L=p;
while(!
feof(fp))
if(fread(p,sizeof(Node),1,fp)!
=1)
printf(”读取信息失败!
p—>next=(linklist)malloc(sizeof(Node));
p—>next)
printf(”无法申请到内存空间");
q=p;
p=p-〉next;
fclose(fp);
printf("读取成功!
//*************************************************//
voidsortstulist(linklistL)//年级排序函数//
STUstu[1000];
intflag=0;
printf(”请先录入学生信息,亲!
=NULL&&i〈1000)
stu[i]=p-〉data;
i++;
flag++;
printf(”正在排序。
.。
sort(stu,flag);
//******************************************************//
voidsort(STUstu[],intflag)
inti,j;
STUtemp;
for(i=1;i〈flag;i++)
for(j=0;j〈flag—i;j++)
if(stu[j].sum>stu[j+1].sum)
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
for(i=flag—1;i>=0;i—-)
printf(”%6d%3s%2s%2s%4。
1f%4.1f%4。
1f\n”,stu[i].num,stu[i]。
name,stu[i]。
grade,stu[i]。
classroom,stu[i]。
score_math,stu[i].score_chinese,stu[i]。
score_english,stu[i].sum,stu[i]。
printf("按任意键继续!
system(”cls”);
//*****************************************************//
voidsortstuclass(linklistL)//班级排序函数//
STUstu[1000];
inti=0;
STUc1[100],c2[100],c3[100],c4[100],c5[100],c6[100],c7[100],c8[100];
intflag=0,flag1=0,flag2=0,flag3=0,flag4=0,
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2