#include<stdio.h>
#include<string.h>
#include<conio.h>
#include"haifeng.h"
#define N 100
#define USER 12
#define PSW 16
#define INCREASE_SCORE 1
#define SEARCH_ALL 2
#define SEARCH_SCORE 3
#define MAX_SCORE 4
#define MIN_SCORE 5
#define AVE_SCORE 6
#define MODIFY_SCORE 7
#define EXIT 8
typedef struct
{
int state;
char username[USER];
char password[PSW];
}COUNT;
typedef struct
{
int id;
char name[20];
float score;
}STU;
void registered(COUNT *p);
int loginOrEnroll();
int login(int *p);
int menu();
void insertScore(STU *p, int a);
void searchAll();
void searchScore();
void maxScore();
void minScore();
void aveScore();
void modifyScore(STU *p, int a);
COUNT count[N];
STU stu[N];
int numc = 0;
int nums = 0;
int main()
{
int option;
int flag = 0;
int a = 0;
int *pa = &a;
while(1)
{
option = loginOrEnroll();
switch(option)
{
case 1:
flag = login(pa);
break;
case 2:
registered(count);
break;
}
if(flag == 1)
{
printf("%d\n", a);
break;
}
}
while(option != 8)
{
option = menu();
switch(option)
{
case INCREASE_SCORE:
insertScore(stu, a);
break;
case SEARCH_ALL:
searchAll();
break;
case SEARCH_SCORE:
searchScore();
break;
case MAX_SCORE:
maxScore();
break;
case MIN_SCORE:
minScore();
break;
case AVE_SCORE:
aveScore();
break;
case MODIFY_SCORE:
modifyScore(stu, a);
break;
case EXIT:
break;
default:
printf("您的输入有误请重新输入\n");
}
}
printf("感谢使用!");
return 0;
}
int loginOrEnroll()//注册登录界面
{
int option;
printf("************欢迎进入海峰考务系统****************\n");
printf(" 1.登录\n");
printf(" 2.注册\n");
printf("*************************************************\n");
printf("请选择:");
scanf("%d",&option);
return option;
}
void registered(COUNT *p)//注册
{
char paw[PSW];
int flag = 0;
if(numc < N)
{
printf("你是老师还是学生(学生扣0,老师扣1):\n");
scanf("%d", &p[numc].state);
printf("请输入新的账号(6~10位):\n");
getchar();
gets(p[numc].username);
while(flag == 0)
{
printf("请输入你的密码:\n");
for(int i = 0; i < PSW; i++)
{
p[numc].password[i] = getch();
if(p[numc].password[i] == '\r') break;
printf("*");
}
printf("\n请再次输入密码:\n");
for(int i = 0; i < PSW; i++)
{
paw[i] = getch();
if(paw[i] == '\r') break;
printf("*");
}
if(strcmp(paw, p[numc].password) == 0)
{
flag = 1;
printf("\n注册成功!\n");
numc++;
}
else
{
printf("\n密码两次不匹配,请重新输入\n");
}
}
}
else
{
printf("账户已满!\n");
}
}
int login(int *p)//登录
{
int flag = 0;
char usrname[USER];
char psw[PSW];
getchar();
printf("请输入账号:\n");
gets(usrname);
printf("请输入密码:\n");
for(int i = 0; i < PSW; i++)
{
psw[i] = getch();
if(psw[i] == '\r') break;
printf("*");
}
for(int i = 0; i < numc; i++)
{
if(strcmp(usrname, count[i].username) == 0 && strcmp(psw, count[i].password) == 0)
{
*p = i;
flag = 1;
break;
}
}
if(flag == 1)
{
printf("\n登录成功!\n");
return flag;
}
else
{
printf("\n登陆失败\n");
return flag;
}
}
int menu()//菜单界面
{
int option;
printf("************欢迎进入海峰考务系统****************\n");
printf(" 1.添加学生成绩\n");
printf(" 2.查看所有学生成绩\n");
printf(" 3.根据学号查看成绩\n");
printf(" 4.查看成绩最高分和学号\n");
printf(" 5.查看成绩最低分和学号\n");
printf(" 6.查看成绩平均分\n");
printf(" 7.根据学号修改成绩\n");
printf(" 8.退出 \n");
printf("*************************************************\n");
printf("请选择:");
scanf("%d",&option);
return option;
}
void insertScore(STU *p, int a)//添加学生信息
{
int num;
if(count[a].state == 1)
{
if(nums < N)
{
printf("请输入你想输入几条信息\n");
scanf("%d", &num);
for(int i = 0; i < num; i++)
{
printf("请输入第%d个学生的学号,姓名,成绩(用空格隔开):\n", i + 1);
scanf("%d%s%f", &p[nums].id, p[nums].name, &p[nums].score);
nums++;
}
printf("添加成功!\n");
}
else
{
printf("学生信息已满!\n");
}
}
else
{
printf("您无权做次操作\n");
}
}
void searchAll()//查询所有学生成绩
{
for(int i = 0; i < nums; i++)
{
printf("学号:%d, 姓名:%s, 成绩:%1.f\n", stu[i].id, stu[i].name, stu[i].score);
}
}
void searchScore()//根据学号查询信息
{
int num;
printf("请输入学号:\n");
scanf("%d", &num);
for(int i = 0; i < nums; i++)
{
if(num == stu[i].id)
{
printf("学号:%d, 姓名:%s, 成绩:%1.f\n", stu[i].id, stu[i].name, stu[i].score);
}
}
}
void maxScore()//最高分的信息
{
int max = stu[0].score;
for(int i = 0; i < nums; i++)
{
if(max < stu[i].score)
{
max = stu[i].score;
}
}
for(int i = 0; i < nums; i++)
{
if(stu[i].score == max)
{
printf("学号:%d, 姓名:%s, 成绩:%1.f\n", stu[i].id, stu[i].name, stu[i].score);
}
}
}
void minScore()//最低分的信息
{
int min = stu[0].score;
for(int i = 0; i < nums; i++)
{
if(min > stu[i].score)
{
min = stu[i].score;
}
}
for(int i = 0; i < nums; i++)
{
if(stu[i].score == min)
{
printf("学号:%d, 姓名:%s, 成绩:%1.f\n", stu[i].id, stu[i].name, stu[i].score);
}
}
}
void aveScore()//平均分
{
int sum = 0;
for(int i = 0; i < nums; i++)
{
sum += stu[i].score;
}
printf("本次考试的平均分是:%d\n", sum / nums);
}
void modifyScore(STU *p, int a)//修改信息
{
int num;
if(count[a].state == 1)
{
printf("请输入要修改信息的学号:\n");
scanf("%d", &num);
for(int i = 0; i < nums; i++)
{
if(num == stu[i].id)
{
printf("他的信息是");
printf("学号:%d, 姓名:%s, 成绩:%1.f\n", p[i].id, p[i].name, p[i].score);
printf("请输入你要修改的信息:\n");
scanf("%d%s%f", &p[nums].id, p[nums].name, &p[nums].score);
printf("修改成功!\n");
break;
}
}
}
else
{
printf("你无权修改信息\n");
}
}