名称:计算机类2020级学生成绩管理系统
功能实现:用户登录、注册、密码修改,退出
学生信息的录入、查询(按学号、按姓名)、
排序(按学号、按姓名字典顺序、按总分)、修改、删除
源代码
(非独立完成,小组合作结果)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
typedef struct Student
{
char ID[20];
char name[20];
double Mc;
double Ec;
double Cc;
double Sc;
double stusum;
}student;
typedef struct Denglu
{
char account[7];
char password[7];
}denglu;
void welcome();//欢迎界面
void BeginMeau1();//开始菜单1
void signin();//用户登录
void signup();//用户注册
void BeginMeau2();//开始菜单2
void changepassword();//密码修改(登陆后)
void MainMeau();//主菜单
void InputInformation();//录入成绩
void inquiry();//主菜单->查询成绩
void sort();//主菜单->成绩排序
void amend();//主菜单->信息修改
void delet();//主菜单->信息删除
void quit();//退出界面
int main()
{
system("color FD");
welcome();
return 0;
}
void welcome()//欢迎界面
{
printf("\n");
printf("\n");
printf("\n");
printf("\t\t*******************ooOoo******************\n");
printf("\t\t#\t\t\t\t\t #\n");
printf("\t\t#\t!欢迎使用学生信息管理系统!\t #\n");
printf("\t\t#\t\t\t\t\t #\n");
printf("\t\t******************************************\n");
printf("\n");
printf("\n");
printf("\n");
system("pause");
BeginMeau1();
}
void BeginMeau1()//开始菜单1
{
int n;
do//开始菜单1界面
{
system("cls");
printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("\t\t\t\t◇\t\t\t开始菜单\t\t\t◇\n");
printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("\t\t\t\t◇请选择序号:\t\t\t\t\t\t◇\n");
printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
printf("\t\t\t\t◇\t\t\t★1-----登录\t\t\t◇\n");
printf("\t\t\t\t◆\t\t\t★2-----注册\t\t\t◆\n");
printf("\t\t\t\t◇\t\t\t★3-----退出系统\t\t◇\n");
printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
printf("\t\t\t\t◇∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮◇\n");
printf("\t\t\t\t 您的选择是:");
fflush(stdin);
scanf("%d", &n);
if (n != 1 && n != 2 && n != 3)
{
printf("无效输入!请重新输入!\n");
system("pause");
}
else
{
continue;
}
} while (n != 1 && n != 2 && n != 3);
if (n == 1)
{
signin();//登录
}
else if (n == 2)
{
signup();//注册
}
else if (n == 3)
{
quit();//退出系统
}
}
void signin()//用户登录
{
system("cls");
denglu a;
int i,j;
printf("请输入6位账号:");
for(i=0;i<6;i++)
{
a.account[i]=getche();
}
a.account[i] = '\0';
printf("\n");
printf("请输入6位密码:");
for(i=0;i<6;i++)
{
a.password[i]=getch();
printf("*");
}
a.password[i] = '\0';
denglu s[10];
FILE *fp = fopen("D://dengluxinxi.txt","r");
for(i=0;!feof(fp);i++)
{
fread(&s[i],sizeof(denglu),1,fp);
}
fclose(fp);
j = i;
int flag=0;
for(i=0;i<j-1;i++)
{
if(strcmp(a.account,s[i].account)==0)
{
if(strcmp(a.password,s[i].password)==0)
{
flag = 1;
}
}
}
if(flag==1)
{
printf("\n\n欢迎回来,");
for(i=0;i<6;i++)
{
printf("%c",a.account[i]);
}
printf("!");
Sleep(500);
printf("\n为您跳转开始界面...");
Sleep(1000);
BeginMeau2();
}
else
{
system("cls");
printf("\n\n");
printf("\t\t****************************\n");
printf("\t\t对不起,您输入的账号密码有误\n");
printf("\t\t为确保安全,请系统将自动退出\n");
printf("\t\t****************************\n");
Sleep(3000);
quit();
}
}
void signup()//用户注册
{
FILE *fp;
denglu a;
int i;
fp = fopen("D://dengluxinxi.txt","a");
printf("请输入注册的6位账号:");
for(i=0;i<6;i++)
{
a.account[i]=getche();
}
a.account[i] = '\0';
printf("\n");
printf("请输入注册的6位密码:");
for(i=0;i<6;i++)
{
a.password[i]=getch();
printf("*");
}
a.password[i] = '\0';
fwrite(&a,sizeof(denglu),1,fp);
fclose(fp);
printf("\n\n注册成功!\n");
printf("为您跳转登陆界面!......");
Sleep(500);
signin();
}
void BeginMeau2()//开始菜单2
{
int n;
do//开始菜单2界面
{
system("cls");
printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("\t\t\t\t◇\t\t开始菜单\t\t◇\n");
printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("\t\t\t\t◇请选择序号:\t\t\t\t\t\t◇\n");
printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
printf("\t\t\t\t◇\t\t★1-----进入系统\t\t\t◇\n");
printf("\t\t\t\t◆\t\t★2-----修改密码\t\t\t◆\n");
printf("\t\t\t\t◇\t\t★3-----退出系统\t\t\t◇\n");
printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
printf("\t\t\t\t◇∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮◇\n");
printf("\t\t\t\t 您的选择是:");
fflush(stdin);
scanf("%d", &n);
if (n != 1 && n != 2 && n != 3)
{
printf("无效输入!请重新输入!\n");
system("pause");
}
else
{
continue;
}
} while (n != 1 && n != 2 && n != 3);
if (n == 1)
{
MainMeau();//功能主菜单
}
if(n == 2)
{
changepassword();//修改密码
}
else if (n == 3)
{
quit();//退出系统
}
}
void changepassword()//密码修改(登陆后)
{
system("cls");
denglu s[10];
denglu a;
int j,i,k;
FILE *fp = fopen("D://dengluxinxi.txt","r");
FILE *ftemp;
for(i=0;!feof(fp);i++)
{
fread(&s[i],sizeof(denglu),1,fp);
}
fclose(fp);
j = i;
printf("请输入你要修改密码的账号:");
for(i=0;i<6;i++)
{
a.account[i]=getche();
}
a.account[i] = '\0';
int index;
for(i=0;i<j-1;i++)
{
if(strcmp(a.account,s[i].account)==0)
{
index = i;
break;
}
}
if(i == j-1)
{
printf("\n找不到该账号,请重新输入\n");
Sleep(1500);
changepassword();
}
printf("\n请输入修改的密码:");
for(i=0;i<6;i++)
{
a.password[i]=getche();
}
a.password[i] = '\0';
strcpy(s[index].password,a.password);
ftemp=fopen("D://tempdengluxinxi.txt","w");
for (k=0;k<j-1;k++)
{
fwrite(&s[k],sizeof(denglu),1,ftemp);
}
fclose(ftemp);
remove("D://dengluxinxi.txt");
rename("D://tempdengluxinxi.txt", "D://dengluxinxi.txt");
printf("\n修改成功!");
Sleep(1000);
signin();
}
void MainMeau()//主菜单
{
int n;
do
{
system("cls");
printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("\t\t\t\t◇\t\t欢迎使用学生成绩管理系统\t\t◇\n");
printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("\t\t\t\t◇请选择序号:\t\t\t\t\t\t◇\n");
printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
printf("\t\t\t\t◆\t\t★1-----录入成绩\t\t\t◆\n");
printf("\t\t\t\t◇\t\t★2-----修改成绩\t\t\t◇\n");
printf("\t\t\t\t◆\t\t★3-----查询成绩\t\t\t◆\n");
printf("\t\t\t\t◇\t\t★4-----排序成绩\t\t\t◇\n");
printf("\t\t\t\t◆\t\t★5-----删除成绩\t\t\t◆\n");
printf("\t\t\t\t◇\t\t★6-----退出\t\t\t\t◇\n");
printf("\t\t\t\t◆∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮◆\n");
printf("\t\t\t\t 您的选择是:");
fflush(stdin);
scanf("%d", &n);
if (n != 1 && n != 2 && n != 3 && n != 4 && n != 5 && n != 6 && n != 7)
{
printf("无效输入!请重新输入!\n");
system("pause");
}
else
{
continue;
}
} while (n != 1 && n != 2 && n != 3 && n != 4 && n != 5 && n != 6 && n != 7);
switch (n)
{
case 1:
InputInformation();
break;
case 2:
amend();
break;
case 3:
inquiry();
break;
case 4:
sort();
break;
case 5:
delet();
case 6:
quit();
default:
;
}
}
void InputInformation()//主菜单->录入成绩
{
int n;
do
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
printf("\t\t\t│\t\t\t录入成绩\t\t\t│\n");
printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
printf("\t\t\t│\t\t1.首次录入\t\t\t\t│\n");
printf("\t\t\t│\t\t2.添加成绩\t\t\t\t│\n");
printf("\t\t\t│\t\t3.返回上一级\t\t\t\t│\n");
printf("\t\t\t│\t\t\t\t\t\t\t│\n");
printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d",&n) ;
}while(n!=1&&n!=2&&n!=3);
if(n==1)
{
//InputInformation();
system("cls");
int i,n,y,k;
int flag;
char id[20];
double sum;
FILE * fp;
printf("\t\t\t请输入本次录入人数:");
fflush(stdin);
scanf("%d",&n);
student stu[60];
for(i=0;i<n;i++)
{
do
{
printf("\n\t\t\t请输入第%d名学生学号:",i+1);
fflush(stdin);
scanf("%s",id);
for(k=0;k<n;k++)
{
y=strcmp(id,stu[k].ID);
if(y==0)
{
printf("\t\t\t学号重复!");
break;
}
else
continue;
}
}while(y==0);
if(k==n)
{
strcpy(stu[i].ID,id);
}
fflush(stdin);
printf("\t\t\t请输入第%d名学生姓名:",i+1);
scanf("%s",stu[i].name);
do
{
fflush(stdin);
printf("\t\t\t请输入第%d名数学成绩:",i+1);
flag=scanf("%lf",&stu[i].Mc);
if(flag!=1)
{
printf("\t\t\t请输入正确的成绩!\n");
}
else
{
break;
}
}while(scanf("%lf",&stu[i].Mc)!=1);
do
{
fflush(stdin);
printf("\t\t\t请输入第%d名英语成绩:",i+1);
flag=scanf("%lf",&stu[i].Ec);
if(flag!=1)
{
printf("\t\t\t请输入正确的成绩!\n");
}
else
{
break;
}
}while(scanf("%lf",&stu[i].Ec)!=1);
do
{
fflush(stdin);
printf("\t\t\t请输入第%d名学生C语言成绩:",i+1);
flag=scanf("%lf",&stu[i].Cc);
if(flag!=1)
{
printf("\t\t\t请输入正确的成绩!\n");
}
else
{
break;
}
}while(scanf("%lf",&stu[i].Cc)!=1);
do
{
fflush(stdin);
printf("\t\t\t请输入第%d名学生思修成绩:",i+1);
flag=scanf("%lf",&stu[i].Sc);
if(flag!=1)
{
printf("\t\t\t请输入正确的成绩!\n");
}
else
{
break;
}
}while(scanf("%lf",&stu[i].Sc)!=1);
stu[i].stusum=stu[i].Mc+stu[i].Ec+stu[i].Cc+stu[i].Sc;
//printf("%.2lf",stu[i].stusum);
}
if((fp=fopen("D://studentDate.txt","w"))==NULL)
{
printf("打开文件失败!");
exit(1);
}
else
{
//for(i=0;i<n;i++)
{
fwrite(stu,sizeof(student),n,fp);
}
}
fclose(fp);
printf("\t\t\t录入完毕!");
system("pause");
MainMeau();
}
if(n==2)
{
// addInformation();
system("cls");
int j,n,y;
int flag;
int i,k;//循环变量
char id[20];
double sum;
FILE * fp;
/*printf("\t\t\t请输入本次添加人数:");
*/
student stu[60];
if((fp=fopen("D://studentDate.txt","r"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
else
{
for(i=0;!feof(fp);i++)
{
fread(&stu[i],sizeof(student),1,fp);
}
}
fclose(fp);
j=i;
i=0;
//for(i=0;i<n;i++)
{
do
{
printf("\n\t\t\t请输入学生学号:");
fflush(stdin);
scanf("%s",id);
for(k=0;k<j-1;k++)
{
y=strcmp(id,stu[k].ID);
if(y==0)
{
printf("\t\t\t学号重复!");
break;
}
else
continue;
}
}while(y==0);
if(k==j-1)
{
strcpy(stu[i].ID,id);
}
fflush(stdin);
printf("\t\t\t请输入学生姓名:");
scanf("%s",stu[i].name);
do
{
fflush(stdin);
printf("\t\t\t请输入数学成绩:");
flag=scanf("%lf",&stu[i].Mc);
if(flag!=1)
{
printf("\t\t\t请输入正确的成绩!\n");
}
else
{
break;
}
}while(scanf("%lf",&stu[i].Mc)!=1);
do
{
fflush(stdin);
printf("\t\t\t请输入英语成绩:");
flag=scanf("%lf",&stu[i].Ec);
if(flag!=1)
{
printf("\t\t\t请输入正确的成绩!\n");
}
else
{
break;
}
}while(scanf("%lf",&stu[i].Ec)!=1);
do
{
fflush(stdin);
printf("\t\t\t请输入学生C语言成绩:");
flag=scanf("%lf",&stu[i].Cc);
if(flag!=1)
{
printf("\t\t\t请输入正确的成绩!\n");
}
else
{
break;
}
}while(scanf("%lf",&stu[i].Cc)!=1);
do
{
fflush(stdin);
printf("\t\t\t请输入学生思修成绩:");
flag=scanf("%lf",&stu[i].Sc);
if(flag!=1)
{
printf("\t\t\t请输入正确的成绩!\n");
}
else
{
break;
}
}while(scanf("%lf",&stu[i].Sc)!=1);
stu[i].stusum=stu[i].Mc+stu[i].Ec+stu[i].Cc+stu[i].Sc;
//printf("%.2lf",stu[i].stusum);
}
if((fp=fopen("D://studentDate.txt","a"))==NULL)
{
printf("打开文件失败!");
exit(1);
}
else
{
//for(i=0;i<n;i++)
{
fwrite(stu,sizeof(student),1,fp);
}
}
fclose(fp);
printf("\t\t\t添加完毕!\n");
//system("pause");
printf("\t\t\t按1返回主菜单\n");
fflush(stdin);
scanf("%d",&n);
if(n==1)
{
MainMeau();
}
}
else
{
MainMeau();
}
}
void inquiry()//主菜单->查询成绩
{
int j,i,n,m;
char id[20];
char tempname[20];
student stu[60];
FILE * fp;
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
printf("\t\t\t│\t\t\t查询成绩\t\t\t│\n");
printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
printf("\t\t\t│\t\t1.学号查询\t\t\t\t│\n");
printf("\t\t\t│\t\t2.姓名查询\t\t\t\t│\n");
printf("\t\t\t│\t\t3.返回上一级\t\t\t\t│\n");
printf("\t\t\t│\t\t\t\t\t\t\t│\n");
printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d",&n) ;
if((fp=fopen("D://studentDate.txt","r"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
else
{
for(i=0;!feof(fp);i++)
{
fread(&stu[i],sizeof(student),1,fp);
}
}
fclose(fp);
j=i;
if(n==1)
{
printf("\t\t\t请输入要查询的学号:");
scanf("%s",id);
for(i=0;i<j-1;i++)
{
if(strcmp(id,stu[i].ID)==0)
{
printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
break;
}
}
if(i==j-1)
{
printf("\t\t\t暂无该学生资料!\n");
}
printf("\t\t\t1.继续查询\t\t2.返回主菜单\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d",&m);
if(m==1)
{
inquiry();
}
else
{
MainMeau();
}
}
else if(n==2)
{
printf("\t\t\t请输入要查询的姓名:");
fflush(stdin);
scanf("%s",tempname);
for(i=0;i<j-1;i++)
{
if(strcmp(tempname,stu[i].name)==0)
{
printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
break;
}
}
if(i==j-1)
{
printf("\t\t\t暂无该学生资料!\n");
}
printf("\t\t\t1.继续查询\t\t2.返回主菜单\n");
printf("\t\t\t请选择:");
scanf("%d",&m);
if(m==1)
{
inquiry();
}
else
{
MainMeau();
}
}
else if(n==3)
{
MainMeau();
}
else
{
inquiry();
}
}
void sort()//主菜单->成绩排序
{
student stu[60];
int m,n;
int j;
int x;
int i,k;
student temp;
FILE * fp;
if((fp=fopen("D://studentDate.txt","r"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
else
{
for(i=0;!feof(fp);i++)
{
fread(&stu[i],sizeof(student),1,fp);
}
}
fclose(fp);
j=i;
i=0;
while(n!=1&&n!=2&&n!=3&&n!=4&&n!=5&&n!=6&&n!=7&&n!=8)
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
printf("\t\t\t│\t\t\t查看成绩\t\t\t│\n");
printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
printf("\t\t\t│\t\t1.按总分排序\t\t\t\t│\n");
printf("\t\t\t│\t\t2.按学号排序\t\t\t\t│\n");
printf("\t\t\t│\t\t3.按姓氏首字母\t\t\t\t│\n");
printf("\t\t\t│\t\t4.按数学排序\t\t\t\t│\n");
printf("\t\t\t│\t\t5.按英语排序\t\t\t\t│\n");
printf("\t\t\t│\t\t6.按C语言排序\t\t\t\t│\n");
printf("\t\t\t│\t\t7.按思修排序\t\t\t\t│\n");
printf("\t\t\t│\t\t8.返回上一级\t\t\t\t│\n");
printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d",&n);
}
if(n==1)
{
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j-1;k++)
{
if(stu[i].stusum<stu[k].stusum)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
else
continue;
}
}
while(m!=1&&m!=2)
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
for(i=0;i<j-1;i++)
{
printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
}
printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t排序请按1");
printf("\n\t\t\t返回主菜单请按2");
printf("\n\t\t\t");
fflush(stdin);
scanf("%d",&m);
}
if(m==1)
{
sort();
}
else
{
MainMeau();
}
}
else if(n==2)
{
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j-1;k++)
{
x=strcmp(stu[i].ID,stu[k].ID);
if(x>0)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
else
continue;
}
}
while(m!=1&&m!=2)
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
for(i=0;i<j-1;i++)
{
printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
}
printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t排序请按1");
printf("\n\t\t\t返回主菜单请按2");
printf("\n\t\t\t");
fflush(stdin);
scanf("%d",&m);
}
if(m==1)
{
sort();
}
else
{
MainMeau();
}
}
else if(n==3)
{
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j-1;k++)
{
x=strcmp(stu[i].name,stu[k].name);
if(x>0)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
else
continue;
}
}
while(m!=1&&m!=2)
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
for(i=0;i<j-1;i++)
{
printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
}
printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t排序请按1");
printf("\n\t\t\t返回主菜单请按2");
printf("\n\t\t\t");
fflush(stdin);
scanf("%d",&m);
}
if(m==1)
{
sort();
}
else
{
MainMeau();
}
}
else if(n==4)
{
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j-1;k++)
{
if(stu[i].Mc<stu[k].Mc)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
else
continue;
}
}
while(m!=1&&m!=2)
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
for(i=0;i<j-1;i++)
{
printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
}
printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t排序请按1");
printf("\n\t\t\t返回主菜单请按2");
printf("\n\t\t\t");
fflush(stdin);
scanf("%d",&m);
}
if(m==1)
{
sort();
}
else
{
MainMeau();
}
}
else if(n==5)
{
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j-1;k++)
{
if(stu[i].Ec<stu[k].Ec)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
else
continue;
}
}
while(m!=1&&m!=2)
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
for(i=0;i<j-1;i++)
{
printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
}
printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t排序请按1");
printf("\n\t\t\t返回主菜单请按2");
printf("\n\t\t\t");
fflush(stdin);
scanf("%d",&m);
}
if(m==1)
{
sort();
}
else
{
MainMeau();
}
}
else if(n==6)
{
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j-1;k++)
{
if(stu[i].Cc<stu[k].Cc)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
else
continue;
}
}
while(m!=1&&m!=2)
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
for(i=0;i<j-1;i++)
{
printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
}
printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t排序请按1");
printf("\n\t\t\t返回主菜单请按2");
printf("\n\t\t\t");
fflush(stdin);
scanf("%d",&m);
}
if(m==1)
{
sort();
}
else
{
MainMeau();
}
}
else if(n==7)
{
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j-1;k++)
{
if(stu[i].Sc<stu[k].Sc)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
else
continue;
}
}
while(m!=1&&m!=2)
{
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t\t数学\t英语\tC语言\t思修\t总分\t│\n");
for(i=0;i<j-1;i++)
{
printf("\t\t\t│%-12s\t%-12s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n",stu[i].ID,stu[i].name,stu[i].Mc,stu[i].Ec,stu[i].Cc,stu[i].Sc,stu[i].stusum);
}
printf("\t\t\t└───────────────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t排序请按1");
printf("\n\t\t\t返回主菜单请按2");
printf("\n\t\t\t");
fflush(stdin);
scanf("%d",&m);
}
if(m==1)
{
sort();
}
else
{
MainMeau();
}
}
else
{
MainMeau();
}
}
void amend()//主菜单->信息修改
{
int op, j, i, k, n, m, x;
char id[20];
char aid[20];
char name[20];
char aname[20];
double aMc;
double aEc;
double aCc;
double aSc;
char tempname[20];
student stu[60];
FILE* fp;
FILE* ftemp;
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
printf("\t\t\t│\t\t\t修改信息\t\t\t│\n");
printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
printf("\t\t\t│\t\t1.通过学号\t\t\t\t│\n");
printf("\t\t\t│\t\t2.通过姓名\t\t\t\t│\n");
printf("\t\t\t│\t\t3.返回上一级\t\t\t\t│\n");
printf("\t\t\t│\t\t\t\t\t\t\t│\n");
printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d", &n);
if ((fp = fopen("D://studentDate.txt", "r")) == NULL)
{
printf("打开文件失败!");
exit(0);
}
else
{
for (i = 0; !feof(fp); i++)
{
fread(&stu[i], sizeof(student), 1, fp);
}
}
fclose(fp);
j = i;
if (n == 1)
{
printf("\t\t\t请输入要修改学生的学号:");
fflush(stdin);
scanf("%s", id);
for (i = 0; i < j - 1; i++)
{
if (strcmp(id, stu[i].ID) == 0)
{
printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n", stu[i].ID, stu[i].name, stu[i].Mc, stu[i].Ec, stu[i].Cc, stu[i].Sc, stu[i].stusum);
printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t是否修改该学生信息?\t1.是\t2.否\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d", &x);
while (x != 1 && x != 2)
{
printf("\t\t\t请重新选择:");
fflush(stdin);
scanf("%d", &x);
}
if (x == 1)
{
if ((ftemp = fopen("D://tempstudentDate.txt", "w")) == NULL)
{
printf("打开文件失败!");
exit(1);
}
else
{
do
{
printf("\t\t\t请选择要修改的项:\n");
printf("\t\t\t1.学号\t2.姓名\t3.数学\n\t\t\t4.英语\t5.C语言\t6.思修\n");
printf("\t\t\t您的选择是:");
fflush(stdin);
scanf("%d", &op);
} while (op != 1 && op != 2 && op != 3 && op != 4 && op != 5 && op != 6);
if (op == 1)
{
printf("\t\t\t请输入修改后的学号:");
fflush(stdin);
scanf("%s", aid);
strcpy(stu[i].ID, aid);
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else if (op == 2)
{
printf("\t\t\t请输入修改后的姓名:");
fflush(stdin);
scanf("%s", aname);
strcpy(stu[i].name, aname);
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else if (op == 3)
{
printf("\t\t\t请输入修改后的数学成绩:");
fflush(stdin);
scanf("%lf", &aMc);
stu[i].Mc = aMc;
stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else if (op == 4)
{
printf("\t\t\t请输入修改后的英语成绩:");
fflush(stdin);
scanf("%lf", &aEc);
stu[i].Ec = aEc;
stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else if (op == 5)
{
printf("请输入修改后的C语言成绩:");
fflush(stdin);
scanf("%lf", &aCc);
stu[i].Cc = aCc;
stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else
{
printf("\t\t\t请输入修改后的思修成绩:");
fflush(stdin);
scanf("%lf", &aSc);
stu[i].Sc = aSc;
stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
}
fclose(ftemp);
remove("D://studentDate.txt");
rename("D://tempstudentDate.txt", "D://studentDate.txt");
}
else
{
amend();
}
break;
}
}
if (i == j - 1)
{
printf("\t\t\t暂无该学生资料!\n");
}
printf("\t\t\t修改成功!\n");
printf("\t\t\t1.继续修改\t\t2.返回主菜单\n");
printf("\t\t\t请选择:\n");
fflush(stdin);
scanf("%d", &m);
if (m == 1)
{
amend();
}
else
{
MainMeau();
}
}
else if (n == 2)
{
printf("\t\t\t请输入要修改学生的姓名:");
fflush(stdin);
scanf("%s", name);
for (i = 0; i < j - 1; i++)
{
if (strcmp(name, stu[i].name) == 0)
{
printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n", stu[i].ID, stu[i].name, stu[i].Mc, stu[i].Ec, stu[i].Cc, stu[i].Sc, stu[i].stusum);
printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t是否修改该学生信息?\t1.是\t2.否\n");
printf("\t\t\t请选择:");
scanf("%d", &x);
while (x != 1 && x != 2)
{
printf("\t\t\t请重新选择:");
fflush(stdin);
scanf("%d", &x);
}
if (x == 1)
{
if ((ftemp = fopen("D://tempstudentDate.txt", "w")) == NULL)
{
printf("打开文件失败!");
exit(1);
}
else
{
do
{
printf("\t\t\t请选择要修改的项:\n");
printf("\t\t\t1.学号\t2.姓名\t3.数学\n\t\t\t4.英语\t5.C语言\t6.思修\n");
printf("\t\t\t您的选择是:");
fflush(stdin);
scanf("%d", &op);
} while (op != 1 && op != 2 && op != 3 && op != 4 && op != 5 && op != 6);
if (op == 1)
{
printf("\t\t\t请输入修改后的学号:");
fflush(stdin);
scanf("%s", aid);
strcpy(stu[i].ID, aid);
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else if (op == 2)
{
printf("\t\t\t请输入修改后的姓名:");
fflush(stdin);
scanf("%s", aname);
strcpy(stu[i].name, aname);
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else if (op == 3)
{
printf("\t\t\t请输入修改后的数学成绩:");
fflush(stdin);
scanf("%lf", &aMc);
stu[i].Mc = aMc;
stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else if (op == 4)
{
printf("\t\t\t请输入修改后的英语成绩:");
fflush(stdin);
scanf("%lf", &aEc);
stu[i].Ec = aEc;
stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else if (op == 5)
{
printf("\t\t\t请输入修改后的C语言成绩:");
fflush(stdin);
scanf("%lf", &aCc);
stu[i].Cc = aCc;
stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
else
{
printf("\t\t\t请输入修改后的思修成绩:");
fflush(stdin);
scanf("%lf", &aSc);
stu[i].Sc = aSc;
stu[i].stusum = stu[i].Mc + stu[i].Ec + stu[i].Cc + stu[i].Sc;
for (k = 0; k < j - 1; k++)
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
}
fclose(ftemp);
remove("D://studentDate.txt");
rename("D://tempstudentDate.txt", "D://studentDate.txt");
}
else
{
MainMeau();
}
break;
}
}
if (i == j - 1)
{
printf("暂无该学生资料!");
}
printf("\t\t\t修改成功!\n");
printf("\t\t\t1.继续修改\t\t2.返回主菜单\n");
printf("\t\t\t请选择:\n");
fflush(stdin);
scanf("%d", &m);
if (m == 1)
{
amend();
}
else
{
MainMeau();
}
}
}
void delet()//主菜单->信息删除
{
int j, i, k, n, m, x;
char id[20];
char name[20];
char tempname[20];
student stu[60];
FILE* fp;
FILE* ftemp;
system("cls");
printf("\t\t\t┌───────────────────────────────────────────────────────┐\n");
printf("\t\t\t│\t\t\t删除信息\t\t\t│\n");
printf("\t\t\t├───────────────────────────────────────────────────────┤\n");
printf("\t\t\t│\t\t1.通过学号\t\t\t\t│\n");
printf("\t\t\t│\t\t2.通过姓名\t\t\t\t│\n");
printf("\t\t\t│\t\t3.返回上一级\t\t\t\t│\n");
printf("\t\t\t│\t\t\t\t\t\t\t│\n");
printf("\t\t\t└───────────────────────────────────────────────────────┘\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d", &n);
if ((fp = fopen("D://studentDate.txt", "r")) == NULL)
{
printf("打开文件失败!");
exit(0);
}
else
{
for (i = 0; !feof(fp); i++)
{
fread(&stu[i], sizeof(student), 1, fp);
}
}
fclose(fp);
j = i;
if (n == 1)
{
printf("\t\t\t请输入要删除学生的学号:");
scanf("%s", id);
for (i = 0; i < j - 1; i++)
{
if (strcmp(id, stu[i].ID) == 0)
{
printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n", stu[i].ID, stu[i].name, stu[i].Mc, stu[i].Ec, stu[i].Cc, stu[i].Sc, stu[i].stusum);
printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t是否删除该学生信息?\t1.是\t2.否\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d", &x);
while (x != 1 && x != 2)
{
printf("请重新选择:");
scanf("%d", &x);
}
if (x == 1)
{
if ((ftemp = fopen("D://tempstudentDate.txt", "w")) == NULL)
{
printf("打开文件失败!");
exit(1);
}
else
{
for (k = 0; k < j - 1; k++)
{
if (k == i)
{
continue;
}
else
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
}
fclose(ftemp);
remove("D://studentDate.txt");
rename("D://tempstudentDate.txt", "D://studentDate.txt");
}
else
{
MainMeau();
}
break;
}
}
if (i == j - 1)
{
printf("\t\t\t暂无该学生资料!\n");
}
printf("\t\t\t删除成功!\n");
printf("\t\t\t1.继续删除\t\t2.返回主菜单\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d", &m);
if (m == 1)
{
delet();
}
else
{
MainMeau();
}
}
else if (n == 2)
{
printf("\t\t\t请输入要删除学生的姓名:");
fflush(stdin);
scanf("%s", name);
for (i = 0; i < j - 1; i++)
{
if (strcmp(name, stu[i].name) == 0)
{
printf("\t\t\t┌───────────────────────────────────────────────────────────────┐\n");
printf("\t\t\t│学号\t\t姓名\t数学\t英语\tC语言\t思修\t总分\t│\n");
printf("\t\t\t│%-12s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t│\n", stu[i].ID, stu[i].name, stu[i].Mc, stu[i].Ec, stu[i].Cc, stu[i].Sc, stu[i].stusum);
printf("\t\t\t└───────────────────────────────────────────────────────────────┘\n");
printf("\t\t\t是否删除该学生信息?\t1.是\t2.否\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d", &x);
while (x != 1 && x != 2)
{
printf("请重新选择:");
fflush(stdin);
scanf("%d", &x);
}
if (x == 1)
{
if ((ftemp = fopen("D://tempstudentDate.txt", "w")) == NULL)
{
printf("打开文件失败!");
exit(1);
}
else
{
for (k = 0; k < j - 1; k++)
{
if (k == i)
{
continue;
}
else
{
fwrite(&stu[k], sizeof(student), 1, ftemp);
}
}
}
fclose(ftemp);
remove("D://studentDate.txt");
rename("D://tempstudentDate.txt", "D://studentDate.txt");
}
else
{
MainMeau();
}
break;
}
}
if (i == j - 1)
{
printf("\t\t\t暂无该学生资料!\n");
}
printf("\t\t\t删除成功!\n");
printf("\t\t\t1.继续删除\t\t2.返回主菜单\n");
printf("\t\t\t请选择:");
fflush(stdin);
scanf("%d", &m);
if (m == 1)
{
delet();
}
else
{
MainMeau();
}
}
else
{
MainMeau();
}
}
void quit()//退出界面
{
system("cls");
printf("\t\t\t\t◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("\t\t\t\t◇\t\t\t\t\t\t\t◇\n");
printf("\t\t\t\t◆\t\t 谢谢你的使用!\t\t\t◆\n");
printf("\t\t\t\t◇\t\t 正在退出系统...... \t\t◇\n");
printf("\t\t\t\t◆\t\t\t\t\t\t\t◆\n");
printf("\t\t\t\t◇∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮∮◇\n");
Sleep(3000);
exit(0);
}