用了二十多天的空闲时间断断续续地写,终于写完了,这也算是自己第一个独立完成的程序了,由于里面用到的很多知识都是一边学习一边写出来的,所以程序显得很粗糙,写的途中遇到了很多问题,但还是得到了一个比较好的解决,由于程序是一边写一边测试的,所以写完之后粗略测试一下,在这里发表源代码,有兴趣的朋友可以看看,如果发现问题或者有什么建议,可以直接留言!
//=========================================学生管理系统========================================
//头文件说明
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
//自定义函数
void mainmenun(); //主菜单
void mainmessage();// 学生基本信息管理主菜单
void mainresult();//学生成绩管理主菜单
void ziresult();//学生成绩查询菜单
void ziresult1();//学生成绩排序
void ziresult2();//学生成绩查询子菜单查询
void zimessage();//学生基本信息查询
void zimessage1();//学生基本信息删除菜单
void zimessage2();//学生基本信息修改菜单
void ziresult3();//学生成绩信息删除菜单
void ziresult4();//学生成绩信息修改菜单
void addmessage();//添加学生基本信息
void judgefile();//判断文件是否存在
void addresult();//添加学生成绩信息
void searchresult();//查询学生成绩信息
void readresult();//加载学生成绩信息到程序
void sclassresult();//查询班级成绩信息
void searschool(); //查询全校成绩信息
void readmessage();//读入学生基本信息到程序
void searsmessage();//查询学生基本信息
void searclmessage();//查询学生班级基本信息
void searshmessage();//查询全校学生班级基本信息
void searximessage();//查询系学生基本信息
void zongfenpianmin();//总分排名
void claspaimin();//班级排名
void xiugaimesmean();//修改学生基本信息
void xiugairesult();//修改学生成绩信息
void delatemessag1();//删除学生个人基本信息
void delatemessag2();//删除班级学生基本信息
void delatemessag3();//删除系基本信息
void delatemessag4();//删除全校基本信息
void delatresult1();//删除学生个人成绩
void delatresult2();//删除班级成绩信息
void delatresult3();//删除全校成绩信息
//结构体定义
typedef struct message //学生的基本信息
{
char name[10]; //学生名字
char id[15]; //学生学号
char sex[10]; //学生的性别
char phnumber[20]; //学生手机号码
char address[50]; //学生的家庭住址
char clas[15]; //学生所在的班级
char suject[20]; //学生所读专业
struct message *next;
}stmessage;
typedef struct scores //学生成绩信息
{
char sname[10]; //学生的名字
char sclas[15]; //学生所在班级
char number[15]; //学生的学号
float english; //英语成绩
float chinese; //语文成绩
float math; //数学成绩
float sum; //总成绩
float average; //平均分
struct scores *snext;
}stscores;
//宏定义学生个人信息
#define stmes (stmessage *)malloc(sizeof(stmessage)) //为学生个人信息结构体开辟动态内存空间
#define mgbass printf("姓名 /t 学号 /t 性别 手机号码 家庭住址/t 班级 /t 专业/n")//学生信息宏定义输出
#define mgprintf printf("%s/t%s %s/t%s/t%s/t%s %s/n",head2->name,head2->id,head2->sex,head2->phnumber,head2->address,head2->clas,head2->suject)//宏定义学生基本信息输出
#define henxian printf("--------------------------------------------------------------------------------")//宏定义划分线
//宏定义学生成绩信息
#define stscor (stscores *)malloc(sizeof(stscores))//为学生成绩信息指针开辟动态内存空间
#define sbass printf("姓名/t 班级/t/t 学号/t/t 英语/t语文/t数学/t总成绩/t平均分/n")
#define mprintf printf("%s/t%s/t%s/t%3.1f/t%3.1f/t%3.1f/t%3.1f/t%3.1f/n",shead2->sname,shead2->sclas,shead2->number,shead2->english,shead2->chinese,shead2->math,shead2->sum,shead2->average)
//全局变量
stmessage *head=NULL;
stscores *shead=NULL;
//主函数
main()
{
mainmenun();
}
//=====================================主菜单=====================================================
void mainmenun()
{
int s=3;
char a;
while(1)
{
system("cls");
printf("/t/t欢迎来到学生信息管理系统/t/t/n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/n");
printf("1.学生基本信息/n2.学生的成绩信息/n3.退出系统/n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/n");
printf("请选择对应功能以及输入对应编号:/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3')
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1': mainmessage(); continue;//学生基本信息
case '2': mainresult();continue;//学生的成绩信息
case '3': exit(1);//退出系统
}
}
}
// =====================================学生基本信息管理主菜单====================================
void mainmessage()
{
int s=3;
char a;
readmessage();
while(1)
{
system("cls");
printf("1、查询学生基本信息/n 2、添加学生基本信息/n3、删除学生基本信息/n4、修改学生基本信息/n5、返回主菜单/n6、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' && a!='5' && a!='6')
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':zimessage();continue;//查询学生基本信息
case '2':addmessage();continue;//添加学生基本信息
case '3':zimessage1();continue;//删除学生基本信息
case '4':zimessage2();continue;//修改学生基本信息
case '5':break;//返回主菜单
case '6':exit(1);//退出系统
}break;
}
}
//====================================学生成绩管理主菜单=========================================
void mainresult()
{
int s=3;
char a;
readresult();//===========================================读入学生成绩信息到程序
while(1)
{
system("cls");
printf("1、查询学生成绩信息/n 2、添加学生成绩信息/n3、删除学生成绩信息/n4、修改学生成绩信息/n5、返回主菜单/n6、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' && a!='5' && a!='6')
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':ziresult2();continue;//查询学生成绩信息
case '2':addresult();continue;//添加学生成绩信息
case '3':ziresult3();continue;//删除学生成绩信息
case '4':ziresult4();continue;//修改学生成绩信息
case '5':;break;//返回主菜单
case '6':exit(1);//退出系统
}break;
}
}
//==========================================学生成绩查询菜单===================================
void ziresult()
{
int s=3;
char a;
while(1)
{
system("cls");
printf("1、查询学生个人成绩信息/n2、查询班级成绩信息/n3、查询全校成绩信息/n4、返回上一级菜单/n5、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' && a!='5' )
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':searchresult();continue;//查询学生个人成绩信息
case '2':sclassresult();continue;//查询班级成绩信息
case '3':searschool();continue;//查询全校成绩信息
case '4':break; //返回上一级菜单;
case '5':exit(1); //退出系统
}break;
}
}
//============================================学生成绩排序====================================
void ziresult1()
{
int s=3;
char a;
while(1)
{
system("cls");
printf("1、总分排名/n 2、班级排名/n3、返回上一级菜单/n4、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' )
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':zongfenpianmin();continue;//总分排名
case '2':claspaimin();continue;//班级排名
case '3':break; //返回上一级菜单
case '4':exit(1); //退出系统
}break;
}
}
//===================================学生成绩查询子菜单查询===================================
void ziresult2()
{
char a;
int s=3;
while(1)
{
system("cls");
printf("1、成绩查询/n 2、排名查询/n3、返回上一级菜单/n4、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' )
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':ziresult();continue;//查询学生成绩信息
case '2':ziresult1();continue;//学生成绩排序
case '3':break;
case '4':exit(1);
}break;
}
}
//=======================================学生基本信息查询======================================
void zimessage()
{
int s=3;
char a;
readmessage();//-------------------------------------------读入学生基本信息到程序
while(1)
{
system("cls");
printf("1、查询学生个人基本信息/n 2、查询班级基本信息/n3、查询全校基本信息/n4、查询系基本信息/n5、返回上一级菜单/n6、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' && a!='5' && a!='6')
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':searsmessage();continue;//查询学生个人基本信息
case '2':searclmessage();continue;//查询班级基本信息
case '3':searshmessage();continue;//查询全校基本信息
case '4': searximessage();continue;//查询系基本信息
case '5':break; //返回上一级菜单
case '6':exit(1); //退出系统
}break;
}
}
//=======================================学生基本信息删除菜单================================
void zimessage1()
{
int s=3;
char a;
while(1)
{
system("cls");
printf("1、删除学生个人基本信息/n 2、删除班级基本信息/n3、删除全校基本信息/n4、删除系基本信息/n5、返回上一级菜单/n6、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' && a!='5' && a!='6')
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':delatemessag1();continue;//删除学生个人基本信息
case '2':delatemessag2();continue;//删除班级基本信息
case '3':delatemessag4();continue;//删除全校基本信息
case '4':delatemessag3();continue;//删除系基本信息
case '5':break; //返回上一级菜单
case '6':exit(1); //退出系统
}break;
}
}
//======================================学生基本信息修改菜单==================================
void zimessage2()
{
int s=3;
char a;
while(1)
{
system("cls");
printf("1、修改学生个人基本信息/n 2、返回上一级菜单/n3、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' )
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':xiugaimesmean();continue;//修改学生个人基本信息
case '2':break;//返回上一级菜单
case '3':exit(1);//退出系统
}break;
}
}
//======================================学生成绩信息删除菜单==================================
void ziresult3()
{
int s=3;
char a;
while(1)
{
system("cls");
printf("1、删除学生个人成绩信息/n 2、删除班级成绩信息/n3、删除全校成绩信息/n4、返回上一级菜单/n5、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' && a!='5' )
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':delatresult1();continue;//删除学生个人成绩信息
case '2':delatresult2();continue;//删除班级成绩信息
case '3':delatresult3();continue;//删除全校成绩信息
case '4':break; //返回上一级菜单
case '5':exit(1); //退出系统
}break;
}
}
//=====================================学生成绩信息修改菜单=====================================
void ziresult4()
{
int s=3;
char a;
while(1)
{
system("cls");
printf("1、修改学生个人成绩信息/n 2、返回上一级菜单/n3、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' )
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':xiugairesult();continue;//修改学生个人成绩信息
case '2':break;//返回上一级菜单
case '3':exit(1);//退出系统
}break;
}
}
//=======================================添加学生基本信息====================================
void addmessage()
{
FILE *fp;
char ju;
int chi=0;
stmessage *h,*r,*s;
system("cls");
h=(stmessage *)malloc(sizeof(stmessage));
s=h;
printf("请输入学生姓名:/n");
scanf("%s",h->name);
fflush(stdin);
printf("请输入学生学号:/n");
scanf("%s",h->id);
fflush(stdin);
printf("请输入学生性别:/n");
scanf("%s",h->sex);
fflush(stdin);
printf("请输入学生手机号码:/n");
scanf("%s",h->phnumber);
fflush(stdin);
printf("请输入学生家庭住址:/n");
scanf("%s",h->address);
fflush(stdin);
printf("请输入学生所在班级:/n");
scanf("%s",h->clas);
fflush(stdin);
printf("请输入学生所读专业:/n");
scanf("%s",h->suject);
fflush(stdin);
chi++;
printf("是否继续输入下一位学生基本信息是输入Y否输入N:/n");
scanf("%c",&ju);
fflush(stdin);
while(ju=='y' || ju=='Y')
{
r=h;
h=(stmessage *)malloc(sizeof(stmessage));
r->next=h;
system("cls");
printf("请输入学生姓名:/n");
scanf("%s",h->name);
fflush(stdin);
printf("请输入学生学号:/n");
scanf("%s",h->id);
fflush(stdin);
printf("请输入学生性别:/n");
scanf("%s",h->sex);
fflush(stdin);
printf("请输入学生手机号码:/n");
scanf("%s",h->phnumber);
fflush(stdin);
printf("请输入学生家庭住址:/n");
scanf("%s",h->address);
fflush(stdin);
printf("请输入学生所在班级:/n");
scanf("%s",h->clas);
fflush(stdin);
printf("请输入学生所读专业:/n");
scanf("%s",h->suject);
fflush(stdin);
chi++;
printf("是否继续输入下一位学生基本信息是输入Y否输入N:/n");
scanf("%c",&ju);
fflush(stdin);
}
h->next=NULL;
judgefile(1);
fp=fopen("savemessage.txt","at");
do
{
fprintf(fp,"%s/t%s/t%s/t%s/t%s/t%s/t%s/n",s->name,s->id,s->sex,s->phnumber,s->address,s->clas,s->suject);
if(s->next==NULL) break;
s=s->next;
}while(1);
fclose(fp);
system("cls");
printf("你一共添加了%d个学生基本资料/n",chi);
printf("/n/n/n/n请按任意键返回菜单/n");
getch();
}
//========================================判断文件是否存在=======================================
void judgefile(int a)
{
FILE *fp;
switch(a)
{
case 1:{
if((fp=fopen("savemessage.txt","rt"))==NULL)
fp=fopen("savemessage.txt","wt");
fclose(fp);
}
case 2:{
if((fp=fopen("saveresult.txt","rt"))==NULL)
fp=fopen("saveresult.txt","wt");
fclose(fp);
}
}
}
//========================================添加学生成绩信息=======================================
void addresult()
{
FILE *fp;
char ju;
int chi=0;
stscores *l,*r,*s;
system("cls");
l=(stscores *)malloc(sizeof(stscores));
s=l;
printf("请输入学生姓名:/n");
scanf("%s",l->sname);
fflush(stdin);
printf("请输入学生所在班级:/n");
scanf("%s",l->sclas);
fflush(stdin);
printf("请输入学生学号:/n");
scanf("%s",l->number);
fflush(stdin);
printf("请输入学生的英语成绩:/n");
scanf("%f",&l->english);
fflush(stdin);
printf("请输入学生的语文成绩:/n");
scanf("%f",&l->chinese);
fflush(stdin);
printf("请输入学生的数学成绩:/n");
scanf("%f",&l->math);
fflush(stdin);
printf("该学生的总分为/n");
l->sum=l->english+l->chinese+l->math;
printf("%3.1f/n",l->sum);
printf("该学生的平均分为/n");
l->average=l->sum/3;
printf("%3.1f/n",l->average);
chi++;
printf("是否继续输入下一位学生基本信息是输入Y否输入N:/n");
scanf("%c",&ju);
fflush(stdin);
while(ju=='y' || ju=='Y')
{
r=l;
l=(stscores *)malloc(sizeof(stscores));
r->snext=l;
system("cls");
printf("请输入学生姓名:/n");
scanf("%s",l->sname);
fflush(stdin);
printf("请输入学生所在班级:/n");
scanf("%s",l->sclas);
fflush(stdin);
printf("请输入学生学号:/n");
scanf("%s",l->number);
fflush(stdin);
printf("请输入学生的英语成绩:/n");
scanf("%f",&l->english);
fflush(stdin);
printf("请输入学生的语文成绩:/n");
scanf("%f",&l->chinese);
fflush(stdin);
printf("请输入学生的数学成绩:/n");
scanf("%f",&l->math);
fflush(stdin);
printf("该学生的总分为/n");
l->sum=l->english+l->chinese+l->math;
printf("%3.1f",l->sum);
printf("该学生的平均分为/n");
l->average=l->sum/3;
printf("%3.1f",l->average);
chi++;
printf("是否继续输入下一位学生基本信息是输入Y否输入N:/n");
scanf("%c",&ju);
fflush(stdin);
}
l->snext=NULL;
judgefile(2);
fp=fopen("saveresult.txt","at");
do
{
fprintf(fp,"%s/t%s/t%s/t%f/t%f/t%f/t%f/t%f/n",s->sname,s->sclas,s->number,s->english,s->chinese,s->math,s->sum,s->average);
if(s->snext==NULL) break;
s=s->snext;
}while(1);
fclose(fp);
system("cls");
printf("你一共添加了%d个学生成绩信息/n",chi);
printf("/n/n/n/n请按任意键返回菜单/n");
getch();
}
//========================================查询学生成绩信息=========================================
void searchresult()
{
int flag=0;
char name1[25];
stscores *shead2;
system("cls");
printf("请输入姓名或者学号查询/n");
scanf("%s",&name1);
fflush(stdin);
shead2=shead;
if(shead2->snext==NULL)
{
printf("请先存入信息/n");
// break;
}
else{
while(1)
{
if( strcmp(name1,shead2->sname)==0 || strcmp(name1,shead2->number)==0)
{
system("cls");
sbass;//======================================================================宏定义
mprintf; //====================================================================宏定义
break;
}
if(shead2->snext==NULL)
{
printf("没有你要找的学生/n");
break;
}
shead2=shead2->snext;
}
}
printf("/n/n/n请按任意键返回菜单");
getch();
}
//===================================加载学生成绩信息到程序======================================
void readresult()
{
FILE *fp;
stscores *start,*back;
int flag=0;
judgefile(2);
fp=fopen("saveresult.txt","rt");
shead=(stscores *)malloc(sizeof(stscores));
back=(stscores *)malloc(sizeof(stscores));
shead->snext=back;
start=back;
flag= fscanf(fp,"%s/t%s/t%s/t%f/t%f/t%f/t%f/t%f/n",back->sname,back->sclas,back->number,&back->english,&back->chinese,&back->math,&back->sum,&back->average);
if(flag==EOF) shead->snext=NULL;
else
{
while(1)
{
if (flag==EOF) break;
back=(stscores *)malloc(sizeof(stscores));
start->snext=back;
flag= fscanf(fp,"%s/t%s/t%s/t%f/t%f/t%f/t%f/t%f/n",back->sname,back->sclas,back->number,&back->english,&back->chinese,&back->math,&back->sum,&back->average);
if (flag==EOF) break;
start=back;
}
start->snext=NULL;
}
fclose(fp);
}
//========================================查询班级成绩信息======================================
void sclassresult()
{
char clas1[15];
int jisuan=0;
stscores *shead2;
system("cls");
printf("请输入要搜索的班级/n");
scanf("%s",&clas1);
fflush(stdin);
system("cls");
shead2=shead;
if(shead2->snext==NULL) printf("没有任何信息,请先输入信息/n");
while(1)
{
if(shead2->snext==NULL) break;
shead2=shead2->snext;
if(strcmp(clas1,shead2->sclas)==0)
{
if(0==jisuan)
{
sbass;//=========================================宏定义
mprintf; //======================================宏定义
jisuan++;
}
else
{
mprintf; //======================================宏定义
jisuan++;
}
}
}
printf("一共搜索到%d条信息/n",jisuan);
printf("请按任意键返回菜单");
getch();
}
//=====================================查询全校成绩信息==========================================
void searschool()
{
int jisuan=0;
stscores *shead2;
system("cls");
shead2=shead;
if(shead2->snext==NULL) printf("没有任何信息,请先录入信息");
while(shead2->snext!=NULL)
{
shead2=shead2->snext;
if(!jisuan)
{
sbass;//=========================================宏定义
mprintf; //======================================宏定义
jisuan++;
}
else
{
mprintf;//======================================宏定义
jisuan++;
}
}
printf("一共搜索到%d条信息",jisuan);
getch();
}
//================================读入学生基本信息到程序======================================
void readmessage()
{
FILE *fp;
stmessage *start,*back;
int flag=0;
judgefile(1);
fp=fopen("savemessage.txt","rt");
// head=(stmessage *)malloc(sizeof(stmessage ));
back=(stmessage *)malloc(sizeof(stmessage ));
head=back;
back=(stmessage *)malloc(sizeof(stmessage));
start=back;
flag= fscanf(fp,"%s/t%s/t%s/t%s/t%s/t%s/t%s/n",back->name,back->id,back->sex,back->phnumber,back->address,back->clas,back->suject);
if(flag==EOF) head->next=NULL;
else
{
head->next=back;
while(1)
{
if (flag==EOF) break;
back=(stmessage *)malloc(sizeof(stmessage ));
start->next=back;
flag= fscanf(fp,"%s/t%s/t%s/t%s/t%s/t%s/t%s/n",back->name,back->id,back->sex,back->phnumber,back->address,back->clas,back->suject);
if (flag==EOF) break;
start=back;
}
start->next=NULL;
}
fclose(fp);
}
//===========================================查询学生基本信息====================================
void searsmessage()
{
int flag=0;
char name1[10];
stmessage *head2;
system("cls");
printf("请输入姓名或者学号查询/n");
scanf("%s",&name1);
fflush(stdin);
head2=head;
if(head2->next==NULL)
{
printf("请先存入信息/n");
// break;
}
else
{
while(1)
{
if( strcmp(name1,head2->name)==0 || strcmp(name1,head2->id)==0)
{
system("cls");
mgbass;//======================================================================宏定义
mgprintf; //====================================================================宏定义
break;
}
if(head2->next==NULL)
{
printf("没有你要找的学生/n");
break;
}
head2=head2->next;
}
}
printf("/n/n/n请按任意键返回菜单");
getch();
}
//=======================================查询学生班级基本信息===================================
void searclmessage()
{
char clas1[15];
int jisuan=0;
stmessage *head2;
system("cls");
printf("请输入要搜索的班级/n");
scanf("%s",&clas1);
fflush(stdin);
system("cls");
head2=head;
if(head2->next==NULL) printf("没有任何信息,请先输入信息/n");
while(1)
{
if(head2->next==NULL) break;
head2=head2->next;
if(strcmp(clas1,head2->clas)==0)
{
if(0==jisuan)
{
mgbass;//=========================================宏定义
mgprintf; //======================================宏定义
jisuan++;
}
else
{
mgprintf; //======================================宏定义
jisuan++;
}
}
}
printf("一共搜索到%d条信息/n",jisuan);
printf("请按任意键返回菜单");
getch();
}
//========================================查询全校学生班级基本信息===============================
void searshmessage()
{
int jisuan=0;
stmessage *head2;
system("cls");
head2=head;
if(head2->next==NULL) printf("没有任何信息,请先录入信息");
while(head2->next!=NULL)
{
head2=head2->next;
if(!jisuan)
{
mgbass;//=========================================宏定义
mgprintf; //======================================宏定义
jisuan++;
}
else
{
mgprintf;//======================================宏定义
jisuan++;
}
}
printf("一共搜索到%d条信息",jisuan);
getch();
}
//==========================================查询系学生基本信息=================================
void searximessage()
{
char clas1[15];
int jisuan=0;
stmessage *head2;
system("cls");
printf("请输入要搜索的班级/n");
scanf("%s",&clas1);
fflush(stdin);
system("cls");
head2=head;
if(head2->next==NULL) printf("没有任何信息,请先输入信息/n");
while(1)
{
if(head2->next==NULL) break;
head2=head2->next;
if(strcmp(clas1,head2->suject)==0)
{
if(0==jisuan)
{
mgbass;//=========================================宏定义
mgprintf; //======================================宏定义
jisuan++;
}
else
{
mgprintf; //======================================宏定义
jisuan++;
}
}
}
printf("一共搜索到%d条信息/n",jisuan);
printf("请按任意键返回菜单");
getch();
}
//=========================================总分排名=============================================
void zongfenpianmin()
{
stscores huan;
stscores *shead2,*start;
int jisuan=0;
shead2=shead;
if(shead2->snext==NULL) printf("没有任何信息,请先输入信息/n");
else
{
for(shead2 = shead2->snext ; shead2->snext!=NULL;shead2=shead2->snext)
for(start=shead2->snext;start->snext!=NULL;start=start->snext)
if(shead2->sum < start->sum)
{
strcpy(huan.sname,shead2->sname);
strcpy(huan.sclas,shead2->sclas);
strcpy(huan.number,shead2->number);
huan.average=shead2->average;
huan.chinese=shead2->chinese;
huan.english=shead2->english;
huan.math=shead2->math;
huan.sum=shead2->sum;
shead2->average=start->average;
shead2->chinese=start->chinese;
shead2->english=start->english;
shead2->math=start->math;
strcpy(shead2->number,start->number);
strcpy(shead2->sclas,start->sclas);
strcpy(shead2->sname,start->sname);
shead2->sum=start->sum;
start->average=huan.average;
start->chinese=huan.chinese;
start->english=huan.english;
start->math=huan.math;
strcpy(start->number,huan.number);
strcpy(start->sclas,huan.sclas);
strcpy(start->sname,huan.sname);
start->sum=huan.sum;
}
}
system("cls");
shead2=shead;
while(shead2->snext!=NULL)
{
shead2=shead2->snext;
if(!jisuan)
{
sbass;//=========================================宏定义
mprintf; //======================================宏定义
jisuan++;
}
else
{
mprintf;//======================================宏定义
jisuan++;
}
}
printf("一共搜索到%d条信息",jisuan);
printf("请按任意键返回菜单/n");
getch();
}
//===============================================班级排名========================================
void claspaimin()
{
stscores *shead2,*start,*back,*p1,huan,*l1;
char clas[15];
int jisuan=0;
printf("请输入需要排名的班级/n");
scanf("%s",&clas);
fflush(stdin);
system("cls");
p1=shead;
back=(stscores *)malloc(sizeof(stscores));
shead2=back;
start=back;
if(p1->snext==NULL) printf("没有任何信息,请先输入信息/n");
else
{
while(1)
{
if(p1->snext==NULL) break;
p1=p1->snext;
if(strcmp(clas,p1->sclas)==0)
{
back=(stscores *)malloc(sizeof(stscores));
shead2->snext=back;
shead2=back;
shead2->average=p1->average;
shead2->chinese=p1->chinese;
shead2->english=p1->english;
shead2->math=p1->math;
strcpy(shead2->number,p1->number);
strcpy(shead2->sclas,p1->sclas);
strcpy(shead2->sname,p1->sname);
shead2->sum=p1->sum;
}
}
}
back->snext=NULL;
shead2=start;
if(shead2->snext==NULL) printf("没有你要查找的信息/n");
else{
l1=start;
for(shead2 = shead2->snext ; shead2->snext!=NULL;shead2=shead2->snext)
for(start=shead2->snext;start->snext!=NULL;start=start->snext)
if(shead2->sum < start->sum)
{
strcpy(huan.sname,shead2->sname);
strcpy(huan.sclas,shead2->sclas);
strcpy(huan.number,shead2->number);
huan.average=shead2->average;
huan.chinese=shead2->chinese;
huan.english=shead2->english;
huan.math=shead2->math;
huan.sum=shead2->sum;
shead2->average=start->average;
shead2->chinese=start->chinese;
shead2->english=start->english;
shead2->math=start->math;
strcpy(shead2->number,start->number);
strcpy(shead2->sclas,start->sclas);
strcpy(shead2->sname,start->sname);
shead2->sum=start->sum;
start->average=huan.average;
start->chinese=huan.chinese;
start->english=huan.english;
start->math=huan.math;
strcpy(start->number,huan.number);
strcpy(start->sclas,huan.sclas);
strcpy(start->sname,huan.sname);
start->sum=huan.sum;
}
shead2=l1;
while(shead2->snext!=NULL)
{
shead2=shead2->snext;
if(!jisuan)
{
sbass;//=========================================宏定义
mprintf; //======================================宏定义
jisuan++;
}
else
{
mprintf;//======================================宏定义
jisuan++;
}
}}
printf("一共搜索到%d条信息",jisuan);
printf("请按任意键返回菜单/n");
getch();
}
//==============================================修改学生基本信息===================================
void xiugaimesmean()
{
FILE *fp;
int flag=0,s=3;
char name1[25];
char a,c;
stmessage *head2,*l1;
system("cls");
printf("请先输入姓名或者学号查询你要修改的学生/n");
scanf("%s",&name1);
fflush(stdin);
head2=head;
if(head2->next==NULL)
{
printf("请先存入信息/n");
}
else
{
while(1)
{
if( strcmp(name1,head2->name)==0 || strcmp(name1,head2->id)==0)
{
system("cls");
mgbass;//======================================================================宏定义
mgprintf; //====================================================================宏定义
break;
}
if(head2->next==NULL)
{
printf("没有你要找的学生/n");
break;
}
head2=head2->next;
}
}
printf("确定该内容为所需修改内容请按“Y”继续修改,如否请按“N”/n");
scanf("%c",&c);
fflush(stdin);
if(c=='y' || c=='Y')
{
while(1)
{
system("cls");
printf("1、修改学生姓名/n 2、修改学生学号/n3、修改学生性别/n4、修改学生手机号码/n5、修改家庭住址/n6、修改学生所在班级/n7、修改学生所在专业/n8、返回上一级菜单/n9、退出系统/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' && a!='5' && a!='6' && a!='7' && a!='8' && a!='9' )
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':{
printf("请输入新的学生姓名/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(head2->name,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '2':{
printf("请输入新的学生学号/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(head2->id,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '3':{
printf("请输入新的学生的性别/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(head2->sex,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '4':{
printf("请输入新的学生的手机号码/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(head2->phnumber,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '5':{
printf("请输入新的学生的家庭住址/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(head2->address,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '6':{
printf("请输入新的学生所在班级/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(head2->clas,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '7':{
printf("请输入新的学生的所在专业/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(head2->suject,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '8':break;
case '9':exit(1);
}break;
}
fp=fopen("savemessage.txt","wt");
l1=head;
while(l1->next!=NULL)
{
l1=l1->next;
fprintf(fp,"%s/t%s/t%s/t%s/t%s/t%s/t%s/n",l1->name,l1->id,l1->sex,l1->phnumber,l1->address,l1->clas,l1->suject);
}
fclose(fp);
}
}
//===============================================修改学生成绩信息==============================
void xiugairesult()
{
FILE *fp;
int flag=0,s=3;
float chen;
char name1[25];
char a,c;
stscores *shead2,*l1;
system("cls");
printf("请先输入姓名或者学号查询你要修改的学生/n");
scanf("%s",&name1);
fflush(stdin);
shead2=shead;
if(shead2->snext==NULL)
{
printf("请先存入信息/n");
}
else
{
while(1)
{
if( strcmp(name1,shead2->sname)==0 || strcmp(name1,shead2->number)==0)
{
system("cls");
sbass;//======================================================================宏定义
mprintf; //====================================================================宏定义
break;
}
if(shead2->snext==NULL)
{
printf("没有你要找的学生/n");
break;
}
shead2=shead2->snext;
}
}
printf("确定该内容为所需修改内容请按“Y”继续修改,如否请按“N”/n");
scanf("%c",&c);
fflush(stdin);
if(c=='y' || c=='Y')
{
while(1)
{
system("cls");
printf("1、修改学生姓名/n 2、修改学生学号/n3、修改学生班级/n4、修改学生英语成绩/n5、修改学生数学成绩/n6、修改语文成绩/n7、返回上一级菜单/n");
scanf("%c",&a);
fflush(stdin);
while(a!='1' && a!='2' && a!='3' && a!='4' && a!='5' && a!='6' && a!='7' )
{
if(s==0) exit(1);
printf("输入错误,你还有%d次机会输入机会/n请重新输入:/n",s);
scanf("%c",&a);
fflush(stdin);
s--;
}
switch(a)
{
case '1':{
printf("请输入新的学生姓名/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(shead2->sname,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '2':{
printf("请输入新的学生学号/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(shead2->number,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '3':{
printf("请输入新的学生所在班级/n");
scanf("%s",&name1);
fflush(stdin);
strcpy(shead2->sclas,name1);
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '4':{
printf("请输入新的学生的英语成绩/n");
scanf("%f",&chen);
fflush(stdin);
shead2->english=chen;
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '5':{
printf("请输入新的学生的数学成绩/n");
scanf("%f",&chen);
fflush(stdin);
shead2->math=chen;
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '6':{
printf("请输入新的学生的语文成绩/n");
scanf("%f",&chen);
fflush(stdin);
shead2->chinese=chen;
printf("*修改成功*/n请按任意键返回/n");
getch();
}continue;
case '7':break;
}
shead2->sum=shead2->english+shead2->chinese+shead2->math;
shead2->average=shead2->sum/3;
break;
}
fp=fopen("saveresult.txt","wt");
l1=shead;
while(l1->snext!=NULL)
{
l1=l1->snext;
fprintf(fp,"%s/t%s/t%s/t%f/t%f/t%f/t%f/t%f/n",l1->sname,l1->sclas,l1->number,l1->english,l1->chinese,l1->math,l1->sum,l1->average);
}
fclose(fp);
}
}
//==========================================删除学生个人基本信息==================================
void delatemessag1()
{
FILE *fp;
char name1[20],number1[20],clas1[20],c;
stmessage *head2,*start,*back,*l1;
head2=head;
system("cls");
printf("请先输入你需要删除的学生姓名学号以及班级以便精确删除/n");
printf("请输入姓名:/n");
scanf("%s",&name1);
fflush(stdin);
printf("请输入学号:/n");
scanf("%s",&number1);
fflush(stdin);
printf("请输入班级:/n");
scanf("%s",&clas1);
fflush(stdin);
system("cls");
if(head2->next==NULL)
{
printf("请先存入信息/n");
}
else
{
start=head2;
while(1)
{
if( !strcmp(name1,head2->name) && !strcmp(number1,head2->id) && !strcmp(clas1,head2->clas))
{
system("cls");
mgbass;//======================================================================宏定义
mgprintf; //====================================================================宏定义
break;
}
if(head2->next==NULL)
{
printf("没有你要找的学生/n");
break;
}
start=head2;
head2=head2->next;
}
}
printf("确定该内容为所需修改内容请按“Y”继续修改,如否请按“N”/n");
scanf("%c",&c);
fflush(stdin);
if(c=='y' || c=='Y')
{
back=head2->next;
free(head2);
start->next=back;
}
fp=fopen("savemessage.txt","wt");
l1=head;
while(l1->next!=NULL)
{
l1=l1->next;
fprintf(fp,"%s/t%s/t%s/t%s/t%s/t%s/t%s/n",l1->name,l1->id,l1->sex,l1->phnumber,l1->address,l1->clas,l1->suject);
}
fclose(fp);
system("cls");
printf("学生信息删除成功,请按任意键返回/n");
getch();
}
//=========================================删除班级学生基本信息===================================
void delatemessag2()
{
FILE *fp;
char clas1[20];
int jisuan=0;
stmessage *head2,*start,*back,*l1;
head2=head;
system("cls");
printf("请输入你需要删除班级/n");
scanf("%s",&clas1);
fflush(stdin);
system("cls");
if(head2->next==NULL)
{
printf("请先存入信息/n");
}
else
{
start=head2;
while(1)
{
if(head2->next==NULL)
{
if( !strcmp(clas1,head2->clas))
{
free(head2);
start->next=NULL;
jisuan++;
}
break;
}
if( !strcmp(clas1,head2->clas))
{
back=head2->next;
free(head2);
start->next=back;
head2=back;
jisuan++;
continue;
}
start=head2;
head2=head2->next;
}
}
fp=fopen("savemessage.txt","wt");
l1=head;
while(l1->next!=NULL)
{
l1=l1->next;
fprintf(fp,"%s/t%s/t%s/t%s/t%s/t%s/t%s/n",l1->name,l1->id,l1->sex,l1->phnumber,l1->address,l1->clas,l1->suject);
}
fclose(fp);
system("cls");
printf("一共成功删除%d条信息,请按任意键返回/n",jisuan);
getch();
}
//=============================================删除系基本信息====================================
void delatemessag3()
{
FILE *fp;
char clas1[20];
int jisuan=0;
stmessage *head2,*start,*back,*l1;
head2=head;
system("cls");
printf("请输入你需要删除系信息/n");
scanf("%s",&clas1);
fflush(stdin);
system("cls");
if(head2->next==NULL)
{
printf("请先存入信息/n");
}
else
{
start=head2;
while(1)
{
if(head2->next==NULL)
{
if( !strcmp(clas1,head2->suject))
{
free(head2);
start->next=NULL;
jisuan++;
}
break;
}
if( !strcmp(clas1,head2->suject))
{
back=head2->next;
free(head2);
start->next=back;
head2=back;
jisuan++;
continue;
}
start=head2;
head2=head2->next;
}
}
fp=fopen("savemessage.txt","wt");
l1=head;
while(l1->next!=NULL)
{
l1=l1->next;
fprintf(fp,"%s/t%s/t%s/t%s/t%s/t%s/t%s/n",l1->name,l1->id,l1->sex,l1->phnumber,l1->address,l1->clas,l1->suject);
}
fclose(fp);
system("cls");
printf("一共成功删除%d条信息,请按任意键返回/n",jisuan);
getch();
}
//===========================================删除全校基本信息====================================
void delatemessag4()
{
FILE *fp;
stmessage *head2,*start;
head2=head;
head2=head2->next;
while(head2!=NULL)
{
start=head2->next;
free(head2);
head2=start;
}
fp=fopen("savemessage.txt","wt");
fclose(fp);
system("cls");
printf("所有数据已删除,请按任意键返回/n");
getch();
}
//===========================================删除学生个人成绩====================================
void delatresult1()
{
FILE *fp;
char name1[20],number1[20],clas1[20],c;
stscores *shead2,*start,*back,*l1;
shead2=shead;
system("cls");
printf("请先输入你需要删除的学生姓名学号以及班级以便精确删除/n");
printf("请输入姓名:/n");
scanf("%s",&name1);
fflush(stdin);
printf("请输入学号:/n");
scanf("%s",&number1);
fflush(stdin);
printf("请输入班级:/n");
scanf("%s",&clas1);
fflush(stdin);
system("cls");
if(shead2->snext==NULL)
{
printf("请先存入信息/n");
}
else
{
start=shead2;
while(1)
{
if( !strcmp(name1,shead2->sname) && !strcmp(number1,shead2->number) && !strcmp(clas1,shead2->sclas))
{
system("cls");
sbass;//======================================================================宏定义
mprintf; //====================================================================宏定义
break;
}
if(shead2->snext==NULL)
{
printf("没有你要找的学生/n");
break;
}
start=shead2;
shead2=shead2->snext;
}
}
printf("确定该内容为所需修改内容请按“Y”继续修改,如否请按“N”/n");
scanf("%c",&c);
fflush(stdin);
if(c=='y' || c=='Y')
{
back=shead2->snext;
free(shead2);
start->snext=back;
}
fp=fopen("saveresult.txt","wt");
l1=shead;
while(l1->snext!=NULL)
{
l1=l1->snext;
fprintf(fp,"%s/t%s/t%s/t%3.1f/t%3.1f/t%3.1f/t%3.1f/t%3.1f/n",shead2->sname,shead2->sclas,shead2->number,shead2->english,shead2->chinese,shead2->math,shead2->sum,shead2->average);
}
fclose(fp);
system("cls");
printf("学生信息删除成功,请按任意键返回/n");
getch();
}
//==========================================删除班级成绩信息=====================================
void delatresult2()
{
FILE *fp;
char clas1[20];
int jisuan=0;
stscores *shead2,*start,*back,*l1;
shead2=shead;
system("cls");
printf("请输入你需要删除班级/n");
scanf("%s",&clas1);
fflush(stdin);
system("cls");
if(shead2->snext==NULL)
{
printf("请先存入信息/n");
}
else
{
start=shead2;
while(1)
{
if(shead2->snext==NULL)
{
if( !strcmp(clas1,shead2->sclas))
{
free(shead2);
start->snext=NULL;
jisuan++;
}
break;
}
if( !strcmp(clas1,shead2->sclas))
{
back=shead2->snext;
free(shead2);
start->snext=back;
shead2=back;
jisuan++;
continue;
}
start=shead2;
shead2=shead2->snext;
}
}
fp=fopen("saveresult.txt","wt");
l1=shead;
while(l1->snext!=NULL)
{
l1=l1->snext;
fprintf(fp,"%s/t%s/t%s/t%3.1f/t%3.1f/t%3.1f/t%3.1f/t%3.1f/n",shead2->sname,shead2->sclas,shead2->number,shead2->english,shead2->chinese,shead2->math,shead2->sum,shead2->average);
}
fclose(fp);
system("cls");
printf("一共成功删除%d条信息,请按任意键返回/n",jisuan);
getch();
}
//======================================删除全校成绩信息==========================================
void delatresult3()
{
FILE *fp;
stscores *shead2,*start;
shead2=shead;
shead2=shead2->snext;
while(shead2!=NULL)
{
start=shead2->snext;
free(shead2);
shead2=start;
}
fp=fopen("saveresult.txt","wt");
fclose(fp);
system("cls");
printf("所有数据已删除,请按任意键返回/n");
getch();
}
//=============================================THE END=============================================