源码下载
/*******************************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");