Add main.cpp

master
pa9ptgw3x 2 years ago
parent 82b026a992
commit fa9c44086c

@ -0,0 +1,889 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
// 定义成绩结构体
typedef struct Score
{
char name[50];
float score;
} Score;
// 定义学生结构体
typedef struct Student
{
char name[50];
int id;
float key;
Score performance[3];
} Student;
// 定义老师结构体
typedef struct Teacher
{
char name[50];
int id;
float key;
} Teacher;
// 定义管理员
typedef struct SystemManager
{
char key[10];
} SystemManager;
// 定义函数
// 老师端
void teacherMenu(Student students[], int numStudent, Teacher teacher);
void addStudent(Student students[], int *numStudent);
int searchStudent1(Student students[], int numStudent);
void searchStudent2(Student students[], int numStudent);
void deleteStudent(Student students[], int *numStudent);
void modifyStudent(Student students[], int numStudent);
void printAllStudent(Student students[], int numStudent);
void changeTearcherPassword(Teacher teacher);
int teacherLogin(Teacher teachers[], int *numTeacher);
// 学生端
void studentMenu(Student student, int numStudent);
void printScore(Student student, int numStudent);
void changeStudentPassword(Student student);
int studentLogin(Student students[], int *numStudent);
// 管理员端
void managerMenu(Student students[], int numStudent, Teacher teachers[], int numTeacher);
void printAllStudent(Student students[], int numStudent);
void addStudent(Student students[], int *numStudent);
void searchStudent2(Student students[], int numStudent);
void deleteStudent(Student students[], int *numStudent);
void modifyStudent(Student students[], int numStudent);
void changePassword1(Student students[], int numStudent);
void printAllTeacher(Teacher teachers[], int numTeacher);
void addTeacher(Teacher teachers[], int *numTeacher);
void searchTeacher(Teacher teachers[], int numTeacher);
void deleteTeacher(Teacher teachers[], int *numTeacher);
void modifyTeacher(Teacher teachers[], int numTeacher);
void changePassword2(Teacher teachers[], int numTeacher);
int main()
{
SetConsoleOutputCP(65001);
// 初始化管理员信息
struct SystemManager manager;
strcpy(manager.key, "123.com");
struct Student students[500]; // 存储学生信息
int numStudent = 2; // 学生总人数
struct Teacher teachers[100]; // 存储教师信息
int numTeacher = 1; // 教师总人数
// 基础信息
strcpy(students[0].name, "张三");
students[0].key = 123456;
students[0].id = 20221001;
strcpy(students[0].performance[0].name, "语文");
strcpy(students[0].performance[1].name, "数学");
strcpy(students[0].performance[2].name, "英语");
students[0].performance[0].score = 95;
students[0].performance[1].score = 100;
students[0].performance[2].score = 120;
strcpy(students[1].name, "李四");
students[1].key = 123456;
students[1].id = 20221002;
strcpy(students[1].performance[0].name, "语文");
strcpy(students[1].performance[1].name, "数学");
strcpy(students[1].performance[2].name, "英语");
students[1].performance[0].score = 115;
students[1].performance[1].score = 110;
students[1].performance[2].score = 130;
strcpy(teachers[0].name, "王五");
teachers[0].key = 123456;
teachers[0].id = 19781001;
while (1)
{
printf("\n\n*************欢迎使用学生管理系统*************\n");
printf("* 1.学生登陆 *\n");
printf("* 2.教师登陆 *\n");
printf("* 3.管理员登陆 *\n");
printf("* 0.退出 *\n");
printf("***********************************************\n");
int choice;
scanf("%d", &choice);
if (choice == 1)
{ // 学生
int num;
num = studentLogin(students, &numStudent);
if (num != 1000)
{
studentMenu(students[num], numStudent);
}
else
{
printf("登陆失败,返回主界面\n");
}
}
else if (choice == 2)
{ // 教师
int num;
num = teacherLogin(teachers, &numTeacher);
if (num != 1000)
{
teacherMenu(students, numStudent, teachers[num]);
}
else
{
printf("登陆失败,返回主界面\n");
}
}
else if (choice == 3)
{ // 管理员
int cmp;
char input[8];
printf("\n请输入密码:");
scanf("%s", input);
cmp = strcmp(manager.key, input);
if (cmp == 0)
{
managerMenu(students, numStudent, teachers, numTeacher);
}
else
{
printf("登陆失败。\n");
}
}
else if (choice == 0)
{ // 退出
break;
}
else
{
printf("非法输入,请重新输入\n");
}
}
return 0;
}
// 学生端
// 登陆
int studentLogin(Student students[], int *numStudent)
{
printf("\n请输入学生的id");
int id;
float key;
scanf("%d", &id);
int i, n;
n = 0;
for (i = 0; i < *numStudent; i++)
{
if (students[i].id == id)
{
n = 1;
break;
}
}
if (n != 0)
{
printf("请输入密码:");
scanf("%f", &key);
if (key == students[i].key)
{
return i;
}
else
{
printf("密码错误\n");
return 1000;
}
}
else
{
printf("id错误");
return 1000;
}
}
// 打印菜单
void studentMenu(Student student, int numStudent)
{
int choice;
do
{
printf("\n\n");
printf("\t%s同学\tID:%d\n你好!\n", student.name, student.id);
printf("**************欢迎使用学生管理系统*************\n");
printf("* 1.查看成绩 *\n");
printf("* 2.修改密码 *\n");
printf("* 0.退出 *\n");
printf("***********************************************\n");
printf("请输入您的选择:");
scanf("%d", &choice);
if (choice == 1)
{ // 查看成绩
printScore(student, numStudent);
}
else if (choice == 2)
{ // 修改密码
changeStudentPassword(student);
}
else if (choice == 0)
{ // 退出
break;
}
else
{
printf("非法输入,请重新输入\n");
}
} while (1);
}
// 查看成绩
void printScore(Student student, int numStudent)
{
printf("\n\n%s同学你的成绩如下\n", student.name);
printf("%s: %.2f\n", student.performance[0].name, student.performance[0].score);
printf("%s: %.2f\n", student.performance[1].name, student.performance[0].score);
printf("%s: %.2f\n", student.performance[2].name, student.performance[0].score);
}
// 修改密码
void changeStudentPassword(Student student)
{
float key1, key2;
printf("请输入旧密码:");
scanf("%f", &key1);
if (key1 == student.key)
{
printf("密码正确,请输入新密码:");
scanf("%f", &key2);
student.key = key2;
printf("修改成功!");
}
else
{
printf("密码错误");
}
}
// 教师端
// 打印菜单
void teacherMenu(Student students[], int numStudent, Teacher teacher)
{
int choice;
do
{
printf("\n\n");
printf("\t%s老师\tID:%d\n您好!\n", teacher.name, teacher.id);
printf("*************欢迎使用学生管理系统*************\n");
printf("* 1.添加学生 *\n");
printf("* 2.查找学生 *\n");
printf("* 3.删除学生 *\n");
printf("* 4.修改学生信息 *\n");
printf("* 5.输出所有学生信息 *\n");
printf("* 6.修改密码 *\n");
printf("* 0.退出 *\n");
printf("***********************************************\n");
printf("请输入您的选择:");
scanf("%d", &choice);
if (choice == 1)
{ // 添加学生
addStudent(students, &numStudent);
}
else if (choice == 2)
{ // 查找学生
searchStudent2(students, numStudent);
}
else if (choice == 3)
{ // 删除学生
deleteStudent(students, &numStudent);
}
else if (choice == 4)
{ // 修改学生信息
modifyStudent(students, numStudent);
}
else if (choice == 5)
{ // 输出所有学生信息
printAllStudent(students, numStudent);
}
else if (choice == 6)
{ // 修改密码
changeTearcherPassword(teacher);
}
else if (choice == 0)
{ // 退出
break;
}
else
{
printf("非法输入,请重新输入\n");
}
} while (1);
}
// 教师登陆
int teacherLogin(Teacher teachers[], int *numTeacher)
{
printf("\n请输入教师的id");
int id;
float key;
scanf("%d", &id);
int i, n;
n = 0;
for (i = 0; i < *numTeacher; i++)
{
if (teachers[i].id == id)
{
n = 1;
break;
}
}
if (n != 0)
{
printf("请输入教师的密码:");
scanf("%f", &key);
if (key == teachers[i].key)
{
return i;
}
else
{
printf("密码错误\n");
return 1000;
}
}
else
{
printf("id错误");
return 1000;
}
}
// 添加学生
void addStudent(Student students[], int *numStudent)
{
printf("\n请输入学生姓名:");
scanf("%s", students[*numStudent].name);
printf("请输入学生学号:");
scanf("%d", &students[*numStudent].id);
printf("请输入学生分数:\n");
Score s1 = students[*numStudent].performance[0];
Score s2 = students[*numStudent].performance[1];
Score s3 = students[*numStudent].performance[2];
strcpy(s1.name, "语文");
strcpy(s1.name, "数学");
strcpy(s1.name, "英语");
printf("语文:");
scanf("%f", &s1.score);
printf("数学:");
scanf("%f", &s2.score);
printf("英语:");
scanf("%f", &s3.score);
printf("默认密码123456\n");
students[*numStudent].key = 123456;
printf("添加成功\n");
(*numStudent)++;
}
// 查找学生1
int searchStudent1(Student students[], int numStudent)
{
printf("\n请选择搜索需要修改学生的方式:\n1.姓名\n2.学号\n");
int choice;
scanf("%d", &choice);
int i, n;
n = 0;
if (choice == 1)
{
printf("\n请输入要查找的学生姓名:");
char name[50];
scanf("%s", name);
for (int i = 0; i < numStudent; i++)
{
if (strcmp(students[i].name, name) == 0)
{
n = 1;
break;
}
}
}
else if (choice == 2)
{
printf("\n请输入学生的学号:");
int id;
scanf("%d", &id);
for (i = 0; i < numStudent; i++)
{
if (students[i].id == id)
{
n = 1;
break;
}
}
}
else
{
printf("输入格式错误!");
}
if (n == 0)
{
return 1000;
}
else
{
return i;
}
}
// 查找学生2
void searchStudent2(Student students[], int numStudent)
{
int i = searchStudent1(students, numStudent);
if (i != 1000)
{
printf("姓名:%s \n学号:%d \n分数:\n", students[i].name, students[i].id);
printf("%s: %.2f\n", students[i].performance[0].name, students[i].performance[0].score);
printf("%s: %.2f\n", students[i].performance[1].name, students[i].performance[1].score);
printf("%s: %.2f\n", students[i].performance[2].name, students[i].performance[2].score);
}
else
{
printf("查无此人!");
}
}
// 删除学生
void deleteStudent(Student students[], int *numStudent)
{
printf("请输入要删除的学生的学号:");
int id;
scanf("%d", &id);
int i;
for (i = 0; i < *numStudent; i++)
{
if (students[i].id == id)
{
break;
}
}
if (i < *numStudent)
{
for (int j = i; j < (*numStudent) - 1; j++)
{
students[j] = students[j + 1];
}
(*numStudent)--;
printf("删除成功\n");
}
else
{
printf("查无此人\n");
}
}
// 修改学生信息
void modifyStudent(Student students[], int numStudent)
{
int i = searchStudent1(students, numStudent);
if (i != 1000)
{
int choice;
do
{
printf("\n*******************修改学生信息******************\n");
printf("* 1.修改学生姓名 *\n");
printf("* 2.修改学生语文成绩 *\n");
printf("* 3.修改学生数学成绩 *\n");
printf("* 4.修改学生英语成绩 *\n");
printf("* 0.退出 *\n");
printf("***********************************************\n");
printf("请输入您的选择:");
scanf("%d", &choice);
float x;
char y[50];
switch (choice)
{
case 1:
printf("将名字修改为:");
scanf("%s", &y);
strcpy(students[i].name, y);
printf("修改完成!");
break;
case 2:
printf("将%s的原成绩为%f", students[i].performance[0].name, students[i].performance[0].score);
printf("修改为:");
scanf("%f", &x);
students[i].performance[0].score = x;
printf("修改完成!");
break;
case 3:
printf("将%s的原成绩为%f", students[i].performance[1].name, students[i].performance[1].score);
printf("修改为:");
scanf("%f", &x);
students[i].performance[0].score = x;
printf("修改完成!");
break;
case 4:
printf("将%s的原成绩为%f", students[i].performance[2].name, students[i].performance[2].score);
printf("修改为:");
scanf("%f", &x);
students[i].performance[0].score = x;
printf("修改完成!");
break;
case 0:
break;
default:
printf("输入错误!");
break;
}
} while (choice != 0);
}
else
{
printf("查无此人!");
}
}
// 修改密码
void changeTearcherPassword(Teacher teacher)
{
float key1, key2;
printf("\n请输入旧密码:");
scanf("%f", &key1);
if (key1 == teacher.key)
{
printf("密码正确,请输入新密码:");
scanf("%f", &key2);
teacher.key = key2;
printf("修改成功!");
}
else
{
printf("密码错误");
}
}
// 查看所有学生
void printAllStudent(Student students[], int numStudent)
{
printf("\n");
printf(" 姓名 | ID\n");
printf("-------------------------------\n");
for (int i = 0; i < numStudent; i++)
{
printf("%s\t\t%d\n", students[i].name, students[i].id);
}
}
// 管理员端
// 面板
void managerMenu(Student students[], int numStudent, Teacher teachers[], int numTeacher)
{
int choice;
do
{
int choice;
printf("\n\n");
printf("***************欢迎使用学生管理系统*************\n");
printf("* 1.管理学生 *\n");
printf("* 2.管理教师 *\n");
printf("* 0.退出 *\n");
printf("***********************************************\n");
printf("请输入您的选择:");
scanf("%d", &choice);
if (choice == 1)
{ // 学生
int x;
do
{
printf("\n\n");
printf("***************欢迎使用学生管理系统*************\n");
printf("* 1.添加学生 *\n");
printf("* 2.查找学生 *\n");
printf("* 3.删除学生 *\n");
printf("* 4.修改学生信息 *\n");
printf("* 5.输出所有学生信息 *\n");
printf("* 6.修改密码 *\n");
printf("* 0.返回上一界面 *\n");
printf("***********************************************\n");
printf("请输入您的选择:");
scanf("%d", &x);
if (x == 1)
{ // 添加学生
addStudent(students, &numStudent);
}
else if (x == 2)
{ // 查找学生
searchStudent2(students, numStudent);
}
else if (x == 3)
{ // 删除学生
deleteStudent(students, &numStudent);
}
else if (x == 4)
{ // 修改学生信息
modifyStudent(students, numStudent);
}
else if (x == 5)
{ // 输出所有学生信息
printAllStudent(students, numStudent);
}
else if (x == 6)
{ // 修改密码
changePassword1(students, numStudent);
}
else if (x == 0)
{ // 退出
break;
}
else
{
printf("非法输入,请重新输入\n");
}
} while (1);
}
else if (choice == 2)
{ // 教师
int y;
do
{
printf("\n\n");
printf("***************欢迎使用学生管理系统*************\n");
printf("* 1.添加教师 *\n");
printf("* 2.查找教师 *\n");
printf("* 3.删除教师 *\n");
printf("* 4.修改教师姓名 *\n");
printf("* 5.输出所有教师信息 *\n");
printf("* 6.修改密码 *\n");
printf("* 0.返回上一界面 *\n");
printf("***********************************************\n");
printf("请输入您的选择:");
scanf("%d", &y);
if (y == 1)
{ // 添加教师
addTeacher(teachers, &numTeacher);
}
else if (y == 2)
{ // 查找教师
searchTeacher(teachers, numTeacher);
}
else if (y == 3)
{ // 删除教师
deleteTeacher(teachers, &numTeacher);
}
else if (y == 4)
{ // 修改教师信息
modifyTeacher(teachers, numTeacher);
}
else if (y == 5)
{ // 输出所有教师信息
printAllTeacher(teachers, numTeacher);
}
else if (y == 6)
{ // 修改密码
changePassword2(teachers, numTeacher);
}
else if (y == 0)
{ // 退出
break;
}
else
{
printf("非法输入,请重新输入\n");
}
} while (1);
}
else if (choice == 0)
{ // 退出
break;
}
else
{
printf("非法输入,请重新输入\n");
}
} while (1);
}
// 查看所有教师
void printAllTeacher(Teacher teachers[], int numTeacher)
{
printf("\n");
printf(" 姓名 | ID\n");
printf("-------------------------------\n");
for (int i = 0; i < numTeacher; i++)
{
printf("%s\t\t%d\n", teachers[i].name, teachers[i].id);
}
}
// 添加教师
void addTeacher(Teacher teachers[], int *numTeacher)
{
printf("请输入教师姓名:");
scanf("%s", teachers[*numTeacher].name);
printf("请输入教师ID");
scanf("%d", &teachers[*numTeacher].id);
printf("默认密码123456\n");
teachers[*numTeacher].key = 123456;
printf("添加成功\n");
(*numTeacher)++;
}
// 查教师生1
int searchTeacher1(Teacher teachers[], int numTeacher)
{
printf("请选择搜索需要修改教师的方式:\n1.姓名\n2.ID\n");
int choice;
scanf("%d", &choice);
int i, n;
n = 0;
if (choice == 1)
{
printf("\n请输入要查找的教师姓名:");
char name[50];
scanf("%s", name);
for (int i = 0; i < numTeacher; i++)
{
if (strcmp(teachers[i].name, name) == 0)
{
n++;
break;
}
}
}
else if (choice == 2)
{
printf("\n请输入要修改信息教师的ID");
int id;
scanf("%d", &id);
for (i = 0; i < numTeacher; i++)
{
if (teachers[i].id == id)
{
n++;
break;
}
}
}
else
{
printf("输入格式错误!");
}
if (n == 0)
{
return 1000;
}
else
{
return i;
}
}
// 查找教师2
void searchTeacher(Teacher teachers[], int numTeacher)
{
int i = searchTeacher1(teachers, numTeacher);
if (i != 1000)
{
printf("姓名:%s \nID%d ", teachers[i].name, teachers[i].id);
}
else
{
printf("查无此人!");
}
}
// 删除教师
void deleteTeacher(Teacher teachers[], int *numTeacher)
{
printf("请输入要删除的教师的学号:");
int id;
scanf("%d", &id);
int i;
for (i = 0; i < *numTeacher; i++)
{
if (teachers[i].id == id)
{
break;
}
}
if (i < *numTeacher)
{
for (int j = i; j < (*numTeacher) - 1; j++)
{
teachers[j] = teachers[j + 1];
}
(*numTeacher)--;
printf("删除成功\n");
}
else
{
printf("查无此人\n");
}
}
// 修改教师信息
void modifyTeacher(Teacher teachers[], int numTeacher)
{
int i = searchTeacher1(teachers, numTeacher);
char y[50];
printf("修改为:");
scanf("%s", &y);
strcpy(teachers[i].name, y);
printf("修改完成!");
}
// 修改教师密码
void changePassword2(Teacher teachers[], int numTeacher)
{
int i = searchTeacher1(teachers, numTeacher);
float key;
printf("旧密码:%f\n", teachers[i].key);
printf("请输入新密码:");
scanf("%f", &key);
teachers[i].key = key;
printf("修改成功!");
}
// 修改学生密码
void changePassword1(Student students[], int numStudent)
{
int i = searchStudent1(students, numStudent);
float key;
printf("旧密码:%f\n", students[i].key);
printf("请输入新密码:");
scanf("%f", &key);
students[i].key = key;
printf("修改成功!");
}
Loading…
Cancel
Save