/**************************************MAIN*************************************************************/
#include<iostream>
#include<stdio.h>
#include"func.h"
int main()
{
int s=menu(); //学生成绩查询系统
while(s)
{
switch(s)
{
case 1: //增加学生信息
{
system("cls"); //清屏
int t=menu1();
while(t)
{
switch(t)
{
case 1:add1(); break; //手动增加学生信息
case 2:add2();break; //从磁盘读取学生信息
case 0:break;
default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
}
system("cls");
t=menu1();
}
break;
}
case 2: //修改学生信息
{
system("cls");
int t=menu2();
while(t)
{
switch(t)
{
case 1: //修改已录入学生信息
{
system("cls");
int t=menu11();
repair1(t);
break;
}
case 2:repair2();break; //修改未录入学生信息
case 0:break;
default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
}
system("cls");
t=menu2();
}
break;
}
case 3: //删除学生信息
{
system("cls");
int t=menu3();
while(t)
{
switch(t)
{
case 1:delect(1);break; //按学号删除学生信息
case 2:delect(2);break; //按姓名删除学生信息
case 0:break;
default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
}
system("cls");
t=menu3();
}
break;
}
case 4: //打印学生信息
{
system("cls");
int t=menu4();
while(t)
{
switch(t)
{
case 1: //打印某位同学成绩单
{
system("cls");
int t=menu6();
while(t)
{
switch(t)
{
case 1:print1(1);break; //按照学号搜索打印平均成绩单
case 2:print1(2);break; //按照学号搜索打印加权平均成绩单
case 3:print1(3);break; //按姓名搜索打印平均成绩单
case 4:print1(4);break; //按姓名搜索打印加权平均成绩单
case 0:break;
default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
}
system("cls");
t=menu6();
}
break;
}
case 2: //打印某班级成绩单
{
system("cls");
int t=menu7();
print2(t); //按学号打印某班成绩单
break;
}
case 3: //打印某科目成绩单
{
system("cls");
int t=menu8();
print3(t); //利用链表打印单科成绩单
break;
}
case 4: //打印总成绩单
{
system("cls");
int t=menu9();
print4(t);
break;
}
case 5: //打印某个科目优秀成绩单
{
system("cls");
int t=menu10();
while(t)
{
switch(t)
{
case 1:print5();break; //打印单科成绩为优秀的有行政职务的同学成绩单
case 0:break;
default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
}
system("cls");
t=menu10();
}
break;
}
case 0:break;
default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
}
system("cls");
t=menu4();
}; break;
}
case 5: //存储学生信息
{
system("cls");
int t=menu5();
while(t)
{
switch(t)
{
case 1:save();break; //将当前信息保存到文件中
case 0:break;
default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
}
system("cls");
t=menu5();
}
break;
}
case 0:break;
default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
}
system("cls");
s=menu();
}
return 0;
}
/*****************************************FUNC**********************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
//计算目前的学生数
int number=0;
extern int menu11();
//读入字符串返回数字
int judge(char* num)
{
if(strlen(num)==1&&atoi(num)!=0)
return atoi(num);
else if(strlen(num)==3&&atoi(num)==-10)
return -10;
else if(strlen(num)==2&&atoi(num)>9&&atoi(num)<100)
return atoi(num);
else if(strlen(num)==3&&atoi(num)>99&&atoi(num)<1000)
return atoi(num);
else if(strlen(num)==4&&atoi(num)>999&&atoi(num)<10000)
return atoi(num);
else if(strlen(num)==8&&atoi(num)>=53000000&&atoi(num)<=53999999)
return -2;
else if(strcmp(num,"0")==0&&strlen(num)==1)
return 0;
return -1;
}
struct Kecheng
{
char name[25]; //高级语言程序设计、高级语言课程设计、面向对象程序设计
int time; //高级语言程序设计实验、面向对象程序设计实验
int xuefen;
int fenshu;
};
struct Dath
{
int year;
int month;
int day;
};
struct Student
{
char xuehao[9];
char name[8];
int sex;
int clas;
char minzu[8];
struct Dath birthday ;
char zhiwu[8];
struct Kecheng kecheng[5];
float pingjunfen;
float jiaquanfen;
Student *next;
}stu[100];
//按平均分比较
int cmp1(const void *s1,const void *s2)
{
return(int )((Student *)s2)->pingjunfen-((Student *)s1)->pingjunfen;
}
//按加权平均分比较
int cmp2(const void *s1,const void *s2)
{
return((Student *)s2)->jiaquanfen-((Student *)s1)->jiaquanfen;
}
//按学号比较
int cmp3(const void *s1,const void *s2)
{
return strcmp(((Student *)s1)->xuehao,((Student *)s2)->xuehao);
}
//按学号搜索
int search1(char * xuehao )
{
for (int i = 0; i < number; i++)
{
if(strcmp(xuehao,stu[i].xuehao)==0)
return i;
}
return -1;
}
//按姓名搜索
int search2(char * name )
{
for (int i = 0; i < number; i++)
{
if(strcmp(name,stu[i].name)==0)
return i;
}
return -1;
}
int in_name(int i)
{
printf("输入姓名:(必填 )\n");
scanf("%s",stu[i].name);
return 1;
}
int in_xuehao(int i)
{
char xue[20];
char n1[20];
printf("输入学号:(必填)\n");
scanf("%s",xue);
while(judge(xue)!=-2)
{
printf("输入错误!\n");
printf("继续输入学号请输入1,返回 输入其他\n");
scanf("%s",n1);
if(judge(n1)==1)
{
printf("输入学号:\n");
scanf("%s",xue);
}
else
{
return 0;
}
}
int x=search1(xue);
if(x!=-1)
{
printf("该学号已存在!\n");
return 0;
}
strcpy(stu[i].xuehao,xue);
return 1;
}
int in_sex(int i)
{
char n1[20];
char n2[20];
printf("输入性别:(男输入1,女输入0,不知道输入-10)\n");
scanf("%s",n1);
while(judge(n1)!=0&&judge(n1)!=1&&judge(n1)!=-10)
{
printf("输入错误!\n");
printf("重新输入 请输入1,返回 输入其他.\n");
scanf("%s",n2);
if(judge(n2)==1)
{
printf("输入性别:(男输入1,女输入0)\n");
scanf("%s",n1);
}
else
{
return 0;
}
}
stu[i].sex=judge(n1);
return 1;
}
int in_clas(int i)
{
char n1[20];
char n2[20];
printf("输入班级(不知道输入-10)\n");
scanf("%s",n1);
while((judge(n1)<0||judge(n1)>20)&&judge(n1)!=-10)
{
printf("输入错误!\n");
printf("继续输入班级请输入1,返回 输入其他.\n");
scanf("%s",n2);
if(judge(n2)==1)
{
printf("输入班级\n");
scanf("%s",n1);
}
else
{
return 0;
}
}
stu[i].clas=judge(n1);
return 1;
}
int in_minzu(int i)
{
printf("输入民族:(不知道输入-10)\n");
scanf("%s",stu[i].minzu);
return 1;
}
int in_birth(int i)
{
char n1[20];
char n2[20];
char n3[20];
int p=1;
printf("输入出生日期:\n");
while (p)
{
for(int j=0;j<3;j++)
{
switch(j)
{
case 0:printf("输入年:(不知道输入-10)\n"); break;
case 1:printf("输入月:(不知道输入-10)\n"); break;
case 2:printf("输入日:(不知道输入-10)\n"); break;
default:break;
}
scanf("%s",n1);
switch(judge(n1))
{
case -2:
case -1:
{
printf("输入错误!\n");
switch(j)
{
case 0:printf("继续输入年 请输入1,返回 输入其他.\n");break;
case 1:printf("继续输入月 请输入1,返回 输入其他.\n");break;
case 2:printf("继续输入日 请输入1,返回 输入其他.\n");break;
default:break;
}
scanf("%s",n2);
if(judge(n2)==1)
{
switch(j)
{
case 0:printf("输入年:(不知道输入-10)\n"); break;
case 1:printf("输入月:(不知道输入-10)\n"); break;
case 2:printf("输入日:(不知道输入-10)\n"); break;
default:break;
}
scanf("%s&#