学生信息管理系统

最近做了一个学生管理系统,大部分功能都还可以实现,若有可应该进修改的地方,请多多指教!

可实现以下功能
学生:
姓名 性别 学号 密码 语文 数学 英语
1、第一次登录强制修改密码。
2、查询成绩
3、修改密码
4、查看个人信息
5、三次密码错误锁定帐号,由教师解锁

教师:
姓名 性别 工号 密码
1、第一次登录强制修改密码。
2、添加学生(学生的学号自动生成)
单个添加
批量导入
3、删除学生
输入两人次学号确定
删除的学生要记录保存在已退学的文件中
4、查找学生
按姓名查找
按学号查找
5、修改学生信息
修改学生基础信息
修改学生成绩
6、录入学生成绩
单个录入
批量导入
7、重置学生密码
8、显示所有在校学生信息
9、显示所有退出学生信息
10、三次密码错误锁定帐号,由校长解锁

校长:
admin
1、第一次登录强制修改密码。
2、能重置自己的密码
3、能重置教师密码
4、添加教师
5、删除教师
6、显示所有在职教师
7、显示所有离职教师

主界面的头文件
interface.h

#ifndef INTERFACE_H
#define INTERFACE_H//主界面
void interface_enum(void);//教师界面
void teacher_enum(void);//教师登录
void teacher_in(void);//教师操作
void teacher_show(void);//学生界面
void student_enum(void);//学生登录
void student_in(void);//学生操作
void student_show(void);//管理员界面
void admin_enum(void);//管理员登录
void admin_in(void);//管理员操作
void admin_show(void);#endif //INTERFACE_H

学生的头文件
student.h

#ifndef STUDENT_H
#define STUDENT_H#define S_NAME 20    //学生姓名长度
#define S_NUMBER 20   //学生学号长度
#define S_PASS 20  //密码长度
#define S_COUNT 1000//学生人数typedef struct Student  //学生结构体
{char name[S_NAME];  //姓名char sex; //性别char number[S_NUMBER]; //学号char password[S_PASS]; //密码 数字、字母、不允许符号、长度20以内;int chinese; //语文 判断数字int math; //数学 判断数字int english; //英语int sum;//总分int landing; //登陆的次数 第一次强制要求修改密码int Account_status;//账号状态 1正常 0锁定
}Student;extern Student stu[S_COUNT];
extern Student s;extern int s_count;extern int s_position;void sorce(void);//成绩void Pass(void);//更改密码void Allmessage(void);//显示信息#endif //STUDENT_H

教师的头文件

#ifndef TEACHER_H
#define TEACHER_H
#define T_COUNT 300
#define T_NAME 20//教师姓名长度
#define T_NUMBER 20 //教师工号长度
#define T_PASS 20 //密码长度
typedef struct Teacher
{char name[T_NAME];  //姓名  char sex;            //性别char number[T_NUMBER];//工号char password[T_PASS];//密码int landing;          //登陆次数int Account_status;   //登陆状态
}Teacher;extern Teacher tea[T_COUNT];
extern Teacher t;extern int t_count;extern int t_position;bool t_add_stu(); //添加学生,返回false失败,返回true成功 bool t_delete_stu();//删除学生 ,返回false 失败,返回true成功bool t_search_stu();//查找学生,返回false 失败,返回true成功bool t_modify_stu();//修改学生信息,返回false 失败,返回true成功bool t_import_stu_score();//录入学生成绩,返回false 失败,返回true成功bool t_reset_stu_pass();//重置学生密码,返回false 失败,返回true成功void t_psearch_stu();//显示查找到的学生void t_show_stu();//显示所有在校学生void t_show_drop_stu();//显示退出学生//void t_show_menu(); //显示教师菜单void t_unlock(void);//给学生解锁#endif//TEACHER_H校长管理员的头文件```c
#ifndef ADMIN_H#define ADMIN_H#define A_NAME 20  //管理员姓名长度#define A_NUMBER 20 //管理员学号长度#define A_PASS 20//管理员密码长度//#define A_COUNT 10//管理员数量typedef struct Admin  //管理员结构体{char name[A_NAME];  //姓名char sex;    //性别char number[A_NUMBER];  //工号char password[A_PASS]; //密码 数字、字母、不允许符号、长度20以内;int landing;//登陆的次数 第一次强制要求修改密码}Admin;extern Admin adm;//修改自己的密码void a_change_password_myself(void);//重置自己的密码//void a_reset_password_myself(void);//重置教师密码void a_reset_password_teacher(void);//添加教师void a_add_teacher(void);//删除教师void a_delete_teacher(void);//显示所有在职教师void a_show_in_teacher(void);//显示所有离职教师void a_show_down_teacher(void);//给教师解锁void a_unlock(void);#endif//ADMIN_H

主界面选项的实现

#include<stdio.h>
#include<getch.h>
#include<stdbool.h>
#include<stdlib.h>
#include"tool.h"
#include "interface.h"
#include"teacher.h"
#include"admin.h"void interface_enum(void)
{printf("--------------主  界  面---------------\n\n");printf("          1.学   生   登   录                  \n\n");printf("          2.教   师   登   录                  \n\n");printf("          3.管  理  员 登  录                  \n\n");printf("          4.退   出   系   统                   \n\n");printf("---------- -无敌工作室出品------------\n");
}void student_enum(void)
{printf("--------------同学您好,欢迎登录学生信息管理系统----------\n\n");printf("                   1.查 询 成 绩                      \n\n");printf("                   2.修 改 密 码                      \n\n");printf("                   3.查看个人信息                      \n\n");printf("                   4.返回首页面                        \n\n");
}//学生登录
void student_in(void)
{int miscount=0;s_count=0;FILE *fwwp = fopen("student.txt","r");if(NULL==fwwp){printf("文件打开失败!!!");return;}while(!feof(fwwp)){fscanf(fwwp,"%s %c %s %s %d %d %d %d %d\n",stu[s_count].name,&stu[s_count].sex,stu[s_count].number,stu[s_count].password,&stu[s_count].chinese,&stu[s_count].math,&stu[s_count].english,&stu[s_count].landing,&stu[s_count].Account_status);s_count++;}fclose(fwwp);char number[T_NUMBER];char password[T_PASS];printf("请输入你的学号:");scanf("%s",number);for(int i=0;i<S_COUNT;i++){if(strcmp(stu[i].number,number)==0&&stu[i].sex!=0){if(stu[i].Account_status==0){printf("账号已锁定,请联系老师解锁!!");anykey_continue();return;}while(true){printf("请输入你的密码:");scanf("%s",password);if(strcmp(password,stu[i].password)==0){printf("登录成功!!!!");s=stu[i];s.sum=s.chinese+s.math+s.english;s_position=i;anykey_continue();if(s.landing==0){printf("\n第一次登录请更改你的密码:");while(true){scanf("%s",password);if(islegal_pass(password)){strcpy(s.password,password);printf("修改成功!!");s.landing=1;anykey_continue();break;                        }else{printf("输入有误请重新输入!!!\n");anykey_continue();}}               }student_show();return;}else{miscount++;if(miscount>=3){stu[i].Account_status=0;printf("密码错误超过3次,账号已锁定,请联系教师解锁!!");FILE *fwp = fopen("student.txt","w");if(NULL==fwp){printf("文件打开失败!!!");return;}for(int i=0;i<S_COUNT;i++){if(stu[i].sex!=0){fprintf(fwp,"%s %c %s %s %d %d %d %d %d\n",stu[i].name,stu[i].sex,stu[i].number,stu[i].password,stu[i].chinese,stu[i].math,stu[i].english,stu[i].landing,stu[i].Account_status);}}fclose(fwp);anykey_continue();return;}}}}}
}//学生操作
void student_show(void)
{system("clear");while(true){system("clear");student_enum();switch(getch()){case '1':sorce();break;case '2':Pass();break;case '3':Allmessage();break;case '4':{stu[s_position]=s;FILE *fwp = fopen("student.txt","w");if(NULL==fwp){printf("文件打开失败!!!");return;}for(int i=0;i<S_COUNT;i++){if(stu[i].sex!=0)fprintf(fwp,"%s %c %s %s %d %d %d %d %d\n",stu[i].name,stu[i].sex,stu[i].number,stu[i].password,stu[i].chinese,stu[i].math,stu[i].english,stu[i].landing,stu[i].Account_status);}fclose(fwp);return;}default:printf("输入有误,请重新输入!!!");break;}}
}void teacher_enum(void)
{printf("--------------尊敬的老师欢迎登录学生管理系统----------- \n\n");printf("                     1.添 加 学 生                      \n\n");printf("                     2.删 除 学 生                      \n\n");printf("                     3.查 找 学 生                      \n\n");printf("                     4.修改学生信息                     \n\n");printf("                     5.录入学生成绩                     \n\n");printf("                     6.重置学生密码                     \n\n");printf("                     7.显示所有在校学生信息             \n\n");printf("                     8.显示所有退学学生信息             \n\n");printf("                     9.给学生解锁                      \n\n");printf("                     0.返回主页面                      \n\n");
}//教师登录
void teacher_in(void)
{int miscount=0;s_count=0;t_count=0;FILE *frp = fopen("teacher.txt","r");if(NULL==frp){printf("文件打开失败!!!");return;}while(!feof(frp)){fscanf(frp,"%s %c %s %s %d %d\n",tea[t_count].name,&tea[t_count].sex,tea[t_count].number,tea[t_count].password,&tea[t_count].landing,&tea[t_count].Account_status);t_count++;}fclose(frp);FILE *fwwp = fopen("student.txt","r");if(NULL==fwwp){printf("文件打开失败!!!");return;}while(!feof(fwwp)){fscanf(fwwp,"%s %c %s %s %d %d %d %d %d\n",stu[s_count].name,&stu[s_count].sex,stu[s_count].number,stu[s_count].password,&stu[s_count].chinese,&stu[s_count].math,&stu[s_count].english,&stu[s_count].landing,&stu[s_count].Account_status);s_count++;}fclose(fwwp);char number[T_NUMBER];char password[T_PASS];printf("请输入你的工号:");scanf("%s",number);for(int i=0;i<T_COUNT;i++){if(strcmp(tea[i].number,number)==0&&tea[i].sex!=0){if(tea[i].Account_status==0){printf("账号已锁定,请联系管理员解锁!!");anykey_continue();return;}while(true){printf("请输入你的密码:");scanf("%s",password);if(strcmp(password,tea[i].password)==0){printf("登录成功!!!!");t=tea[i];t_position=i;anykey_continue();if(t.landing==0){printf("\n第一次登录请更改你的密码:");while(true){scanf("%s",password);if(islegal_pass(password)){strcpy(t.password,password);printf("修改成功!!");t.landing=1;anykey_continue();break;                        }else{printf("输入有误请重新输入!!!\n");anykey_continue();}}               }teacher_show();return;}else{miscount++;if(miscount>=3){tea[i].Account_status=0;printf("密码错误超过3次,账号已锁定,请联系管理员解锁!!");FILE *fwp = fopen("teacher.txt","w");if(NULL==fwp){printf("文件打开失败!!!");return;}for(int i=0;i<T_COUNT;i++){if(tea[i].sex!=0){fprintf(fwp,"%s %c %s %s %d %d\n",tea[i].name,tea[i].sex,tea[i].number,tea[i].password,tea[i].landing,tea[i].Account_status);}}fclose(fwp);anykey_continue();return;}}}}}
}//教师操作
void teacher_show(void)
{system("clear");while(true){system("clear");teacher_enum();switch(getch()){case '1':t_add_stu();anykey_continue();break;case '2':t_delete_stu();anykey_continue();break;case '3':t_psearch_stu();anykey_continue();break;case '4':t_modify_stu();anykey_continue();break;case '5':t_import_stu_score();anykey_continue();break;case '6':t_reset_stu_pass();anykey_continue();break;case '7':t_show_stu();anykey_continue();break;case '8':t_show_drop_stu();anykey_continue();break;case '9':t_unlock();break;case '0':{tea[t_position]=t;FILE *fwp = fopen("student.txt","w");if(NULL==fwp){printf("文件打开失败!!!");return;}FILE *fw=fopen("teacher.txt","w");if(NULL==fw){printf("文件打开失败!!!");return;}for(int i=0;i<T_COUNT;i++){if(tea[i].sex!=0)fprintf(fw,"%s %c %s %s %d %d\n",tea[i].name,tea[i].sex,tea[i].number,tea[i].password,tea[i].landing,tea[i].Account_status);}for(int i=0;i<S_COUNT;i++){if(stu[i].sex!=0)fprintf(fwp,"%s %c %s %s %d %d %d %d %d\n",stu[i].name,stu[i].sex,stu[i].number,stu[i].password,stu[i].chinese,stu[i].math,stu[i].english,stu[i].landing,stu[i].Account_status);}fclose(fwp);fclose(fw); return;break;}default:printf("输入有误,请重新输入!!!");break;}}
}void admin_enum(void)
{printf("--------------尊敬的管理员欢迎登录学生管理系统----------- \n\n");printf("                     1.添 加 教 师                     \n\n");printf("                     2.删 除 教 师                     \n\n");printf("                     3.修改教师密码                     \n\n");printf("                     4.修改管理员密码                     \n\n");printf("                     5.显示所有在职教师                  \n\n");printf("                     6.显示所有离职教师                   \n\n");printf("                     7.给教师解锁                       \n\n");printf("                     8.返回主页面                       \n\n");
}//管理员登录
void admin_in(void)
{char number[A_NUMBER];char password[A_PASS];printf("请输入你的账号:");scanf("%s",number);if(strcmp(adm.number,number)==0){FILE *frp= fopen("admin.txt","r");if(NULL==frp){printf("文件打开失败!!");return;}char passwordr[A_PASS];int landing;fscanf(frp,"%s %s %d\n",number,passwordr,&landing);strcpy(adm.password,passwordr);adm.landing=landing;printf("请输入你的密码:");scanf("%s",password);if(strcmp(adm.password,password)==0){printf("登录成功!!");FILE *frp = fopen("teacher.txt","r");if(NULL==frp){printf("文件打开失败!!!");return;}while(!feof(frp)){fscanf(frp,"%s %c %s %s %d %d\n",tea[t_count].name,&tea[t_count].sex,tea[t_count].number,tea[t_count].password,&tea[t_count].landing,&tea[t_count].Account_status);t_count++;}fclose(frp);anykey_continue();if(adm.landing==0){printf("\n第一次登录请更改你的密码:");while(true){scanf("%s",password);if(islegal_pass(password)){strcpy(adm.password,password);printf("修改成功!!");adm.landing=1;anykey_continue();break;                     }else{printf("输入有误请重新输入!!!");}}               }admin_show();return;}}printf("密码或者账号错误!!!!");anykey_continue();return;
}//管理员操作
void admin_show(void)
{system("clear");while(true){system("clear");admin_enum();switch(getch()){case '1':a_add_teacher();break;case '2':a_delete_teacher();break;case '3':a_reset_password_teacher();break;case '4':a_change_password_myself();break;case '5':a_show_in_teacher();break;case '6':a_show_down_teacher();break;case '7':a_unlock();break;case '8':{FILE *fwp = fopen("teacher.txt","w");if(NULL==fwp){printf("文件打开失败!!!");return;}FILE *fw=fopen("admin.txt","w");if(NULL==fw){printf("文件打开失败!!!");return;}for(int i=0;i<T_COUNT;i++){if(tea[i].sex!=0)fprintf(fwp,"%s %c %s %s %d %d\n",tea[i].name,tea[i].sex,tea[i].number,tea[i].password,tea[i].landing,tea[i].Account_status);}fprintf(fw,"%s %s %d",adm.number,adm.password,adm.landing);fclose(fwp);fclose(fw);    return;break;}default:printf("输入有误,请重新输入!!!");break;}}
}

学生部分代码实现

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<getch.h>
#include"student.h"
#include"tool.h"Student stu[S_COUNT];
Student s;int s_position=0;int s_count=0;void sorce(void)
{int ranking=1;Student a;int max=-1,min=101;for(int i=0;i<S_COUNT;i++){if(stu[i].sex!=0){stu[i].sum=stu[i].math+stu[i].chinese+stu[i].english;if(stu[i].sum>max) max=stu[i].sum;if(stu[i].sum<min) min=stu[i].sum;if(s.sum<stu[i].sum) ranking++;}}   printf("1.排名 2.平均分 3.最高分 4.最低分");switch(getch()){case '1':printf("\n你的排名为:%d",ranking);anykey_continue();break;case '2':printf("\n你的平均分为:%d",s.sum/3);anykey_continue();break;case '3':printf("\n最高分为:%d",max);anykey_continue();break;case '4':printf("\n最低分为:%d",min);anykey_continue();break;}
}void Pass(void)//更改密码
{char pass1[S_PASS],pass2[S_PASS],pass3[S_PASS];for(;;){printf("输入原密码:\n");scanf("%s",pass1);if(strcmp(pass1,s.password)==0){printf("输入要更改的密码:\n");scanf("%s",pass2);}else{printf("原密码错误重新输入:\n");continue;}if(islegal_pass(pass2)){printf("再次输入密码:\n");scanf("%s",pass3);}else{printf("输入不合法");continue;}if(strcmp(pass3,pass2)==0){strcpy(s.password,pass3);for(int i=0;i<S_COUNT;i++){if(strcmp(s.number,stu[i].number)==0){stu[i]=s;stu[i].landing=1;}}printf("修改成功\n");anykey_continue();return;}else{printf("修改失败,请重新输入\n");anykey_continue();continue;}}
}void Allmessage(void)
{for(int i=0;i<S_COUNT;i++)           {if(strcmp(s.number,stu[i].number)==0){printf("姓名:%s 性别:%c 学号:%s 语文:%d 数学:%d 英语:%d\n",stu[i].name,stu[i].sex,stu[i].number,stu[i].chinese,stu[i].math,stu[i].english);anykey_continue();}}
}

教师部分功能实现

#include<stdio.h>
#include<stdbool.h>
#include"tool.h"
#include"teacher.h"
#include"student.h"
Teacher tea[T_COUNT];
Teacher t;int t_position=0;
int t_count=0;
int index_stu=0;bool t_add_stu()
{if (s_count >= S_COUNT)return false;printf("请选择你要添加的方式\n");printf("1、单个添加\n");printf("2、批量导入\n");printf("3、退出添加\n");int ch;do{scanf("%d", &ch);if (1 != ch && 2 != ch && 3 != ch){printf("输入错误请重新输入\n");}fflush(stdout);} while (1 != ch && 2 != ch && 3 != ch);if (1 == ch){int i = 0;while (0 != stu[i].sex)i++;Student s;do{printf("请输入你要添加的学生的姓名\n");scanf("%s", s.name);printf("请输入你要添加的学生的性别\n");scanf(" %c", &s.sex);printf("请输入你要添加的学生的学号\n");scanf("%s", s.number);if (!islegal_pass(s.number)){printf("学生学号错误\n");continue;}printf("请输入你要添加的学生的密码\n");scanf("%s", s.password);if (!islegal_pass(s.password)){printf("学生密码错误\n");continue;}if (!is_legalstu(s))printf("学生信息有误,请重新输入\n");} while (!is_legalstu(s));s.chinese=0;s.math=0;s.english=0;s.landing=0;s.Account_status=1;stu[i] = s;}else if (2 == ch){printf("请输入你要添加的文件的路径\n");char path[20];scanf("%s", path);int cnt = 0;FILE* f = fopen(path, "a");//导入文件if (NULL == f){printf("文件路径错误\n");return false;}int i = 0;while (!feof(f)) //读数据{fscanf(f, "%s %c%s%s%d%d%d%d%d", stu[i].name,&stu[i].sex, stu[i].number, stu[i].password,&stu[i].chinese, &stu[i].math, &stu[i].english,&stu[i].landing, &stu[i].Account_status);i++;if (i >= s_count)s_count++;}}else if (3 == ch){printf("正在退出\n");fflush(stdout);usleep(1000);return false;}printf("添加成功\n");return true;
}bool t_search_stu()//查找学生,返回false 失败,返回true成功{printf("请选择你要查找的方式\n");printf("1、姓名查找\n");printf("2、学号查找\n");printf("3、退出查找\n");int  ch;do{scanf("%d",&ch);if(1!=ch&&2!=ch&&3!=ch){printf("输入错误请重新输入\n");}}while(1!=ch&&2!=ch&&3!=ch);if(1==ch)//按照姓名查找{printf("请输入你要查找的学生的姓名\n");char name[20];scanf("%s",name);for(int i=0;i<S_COUNT;i++){if(0==strcmp(name,stu[i].name)&&stu[i].sex!=0){index_stu=i; //保存查找到的学生的下标printf("查找成功\n");return true;}}}else if (2==ch)//按学号查找{char number[20];do{printf("请输入你要查找的学生的学号\n");scanf("%s",number);if(!islegal_pass(number))printf("输入错误请重新输入\n");}while(!islegal_pass(number));for(int i=0;i<S_COUNT;i++){if(0==strcmp(number,stu[i].number)&&stu[i].sex!=0){index_stu=i; printf("查找成功\n");return true;}}}else if(3==ch){printf("正在退出\n");fflush(stdout);usleep(1000);return false;}printf("查找失败\n");return false;}void t_psearch_stu()//显示查找到的学生
{if(!t_search_stu())return ;printf("姓名:%s 性别:%c 学号:%s 语文:%3d 英语:%3d 数学:%3d\n",stu[index_stu].name,stu[index_stu].sex,stu[index_stu].number,stu[index_stu].chinese,stu[index_stu].english,stu[index_stu].math);
}bool t_delete_stu() //删除学生 ,返回false 失败,返回true成功
{printf("查找你要删除的学生的信息\n");if (!t_search_stu()){printf("删除失败\n");return false;}int cnt = 1;char numbers[20];while (cnt <= 2){printf("请输入学号加以确认,第%d次: \n", cnt);scanf("%s", numbers);cnt++;if (0 != strcmp(numbers, stu[index_stu].number))cnt--;}FILE* ds = fopen("downstudent.txt", "a");if (NULL == ds){perror("fopen:");return false;}fprintf(ds, "%s %c %s\n", stu[index_stu].name,stu[index_stu].sex, stu[index_stu].number);fclose(ds);stu[index_stu].sex =0;//更新两张表printf("删除成功\n");//fflush(stdout);//usleep(1000);return true;
}bool t_reset_stu_pass()//重置学生密码,返回false 失败,返回true成功
{printf("请选择你要重置密码的学生\n");if (!t_search_stu()){printf("重置密码失败\n");return false;}strcpy(stu[index_stu].password, "123456");printf("重置为:%s\n","123456");printf("重置成功\n");return true;
}void t_show_stu()//显示所有在校学生
{for (int i = 0; i < S_COUNT; i++){if (0 != stu[i].sex){printf("姓名:%s 性别:%s 学号:%s 语文:%d 数学:%d 英语:%d\n", stu[i].name, stu[i].sex == 'w' ? "女" : "男", stu[i].number,stu[i].chinese,stu[i].math,stu[i].english);}}
}bool t_import_stu_score()//录入学生成绩,返回false 失败,返回true成功
{printf("请选择你要添加的方式\n");printf("1、单个录入\n");printf("2、退出录入\n");int  ch;do{scanf("%d", &ch);if (1 != ch && 2 != ch){printf("输入错误请重新输入\n");}} while (1 != ch && 2 != ch);if (1 == ch){printf("请选择你要录入成绩的对象\n");if (!t_search_stu()){printf("录入失败\n");return false;}int flag = 1;do{flag = 0;printf("输入学生的语文成绩\n");scanf("%d", &stu[index_stu].chinese);if (0 > stu[index_stu].chinese ||stu[index_stu].chinese > 100){printf("语文成绩非法\n");flag = 1;continue;}printf("输入学生的英语成绩\n");scanf("%d", &stu[index_stu].english);if (0 > stu[index_stu].english ||stu[index_stu].english > 100){printf("英语成绩非法\n");flag = 1;continue;}printf("输入学生的数学成绩\n");scanf("%d", &stu[index_stu].math);if (0 > stu[index_stu].math ||stu[index_stu].math > 100){printf("数学成绩非法\n");flag = 1;continue;}} while (flag);printf("录入成功\n");return true;}else if (2 == ch){printf("正在退出\n");fflush(stdout);//usleep(1000);return false;}return false;}void t_show_drop_stu()//显示退出学生{Student s;FILE* f = fopen("downstudent.txt", "r");while (!feof(f)){fscanf(f, "%s %c %s\n", s.name,&s.sex, s.number);printf("姓名:%s 性别:%s 学号:%s\n", s.name, s.sex == 'w' ? "女" : "男", s.number);}fclose(f);}bool t_modify_stu()//修改学生信息,返回false 失败,返回true成功
{printf("请输入你要修改的学生信息\n");if (!t_search_stu()){printf("修改失败\n");return false;}printf("请选择你要修改信息\n");printf("1、学生基础信息修改\n");printf("2、学生成绩修改\n");printf("3、退出修改\n");int  ch;do{scanf("%d", &ch);if (1 != ch && 2 != ch && 3 != ch){printf("输入错误请重新输入\n");}} while (1 != ch && 2 != ch && 3 != ch);if (1 == ch){do{printf("请输入你要修改的学生的姓名\n");scanf("%s", stu[index_stu].name);printf("请输入你要修改的学生的性别\n");scanf(" %c", &stu[index_stu].sex);printf("请输入你要修改的学生的学号\n");scanf("%s", stu[index_stu].number);if (!islegal_pass(stu[index_stu].number)){printf("学生学号错误\n");continue;}printf("请输入你要修改的学生的密码\n");scanf("%s", stu[index_stu].password);if (!islegal_pass(stu[index_stu].password)){printf("学生密码错误\n");continue;}if (!is_legalstu(stu[index_stu]))printf("学生信息有误,请重新输入\n");} while (!is_legalstu(stu[index_stu]));printf("修改成功\n");
}else if (2 == ch){int flag = 1;do{flag = 0;printf("输入学生的语文成绩\n");scanf("%d", &stu[index_stu].chinese);if (0 > stu[index_stu].chinese ||stu[index_stu].chinese > 100){printf("语文成绩非法\n");flag = 1;continue;}printf("输入学生的英语成绩\n");scanf("%d", &stu[index_stu].english);if (0 >stu[index_stu].english ||stu[index_stu].english > 100){printf("英语成绩非法\n");flag = 1;continue;}printf("输入学生的数学成绩\n");scanf("%d", &stu[index_stu].math);if (0 > stu[index_stu].math ||stu[index_stu].math > 100){printf("数学成绩非法\n");flag = 1;continue;}} while (flag);printf("修改成功\n");}else if (3 == ch){printf("正在退出\n");fflush(stdout);usleep(1000);return false;}return false;}//给学生解锁
void t_unlock(void)
{char number[S_NUMBER];printf("请输入要解锁的学生学号:");scanf("%s",number);while(true){for(int i=0;i<S_COUNT;i++){if(strcmp(stu[i].number,number)==0){if(stu[i].Account_status==0){stu[i].Account_status=1;printf("解锁成功!!");anykey_continue();return;}else{printf("你输入的学生状态为未锁定请重新确认!!");anykey_continue();return;}}}printf("你找到学号不存在!!!");anykey_continue();return;}
}

校长部分实现

#include"admin.h"
#include"tool.h"
#include"teacher.h"Admin adm={"xixi",'m',"9527","123456",0};
//修改自己的密码
void a_change_password_myself(void)
{char new[A_PASS];while(true){printf("请输入新的密码:");scanf("%s",new);if(islegal_pass(new)){strcpy(adm.password,new);printf("修改成功!!");anykey_continue();return;}else{printf("密码不合法,重新输入!!!");anykey_continue();}}
}//重置自己的密码
//void a_reset_password_myself(void)
//{//  printf("是否确定重置密码!!!!(y/n)");
//  char temp=getchar();
//  if(temp=='Y'||temp=='y')
//  {//      strcpy(adm.password,"123456");
//      printf("初始化成功!!初始密码为123456");
//      anykey_continue();
//      return;
//  }
//}//重置教师密码
void a_reset_password_teacher(void)
{char number[T_NUMBER];char new[T_PASS];printf("请输入要修改的教师的工号:");scanf("%s",number);for(int i=0;i<T_COUNT;i++){if(strcmp(tea[i].number,number)==0&&tea[i].sex!=0){while(true){printf("\n请输入修改后该教师的密码:");scanf("%s",new);if(islegal_pass(new)){strcpy(tea[i].password,new);printf("修改成功!!!");anykey_continue();return;}else{printf("密码不合法,请重新输入!!!");anykey_continue();}}}}printf("未找到该教师,请重新确认后再进行修改!!!");anykey_continue();return;
}//添加教师
void a_add_teacher(void)
{if(t_count>T_COUNT){printf("vip可享受更多存储空间!!!");return;}int the_number=0;for(int i=0;i<T_COUNT;i++){if(tea[i].sex==0){the_number=i;break;}}char name[T_NAME];char sex;char number[T_NUMBER];printf("请输入教师姓名:");scanf("%s",name);strcpy(tea[the_number].name,name);printf("请输入教师性别: ");while(true){scanf(" %c",&sex);if('w'==sex||'m'==sex){tea[the_number].sex=sex;break;}printf("输入有误请重新输入!!!\n");}printf("请输入教师的工号:");while(true){int f=0;scanf("%s",number);for(int i=0;i<t_count;i++){if(strcmp(tea[i].number,number)==0){printf("该工号已存在,请重新输入!!!\n");f=1;break;}}if(f==0){strcpy(tea[the_number].number,number);break;}}printf("请输入教师的密码:");while(true){char password[T_PASS];scanf("%s",password);if(islegal_pass(password)){strcpy(tea[the_number].password,password);break;}else{printf("密码不合法请重新输入!!!\n");anykey_continue();}}tea[the_number].landing=0;tea[the_number].Account_status=1;printf("录入成功");t_count++;anykey_continue();
}//删除教师
void a_delete_teacher(void)
{char number[T_NUMBER];printf("请输入要删除的教师的工号:");scanf("%s",number);for(int i=0;i<T_COUNT;i++){if(strcmp(tea[i].number,number)==0&&tea[i].sex!=0){//文件存储离职教师的信息//删除离职老师的信息FILE *fwp = fopen("downteacher.txt","a");if(NULL==fwp){printf("文件打开失败!!");return;}fprintf(fwp,"%s %c %s",tea[i].name,tea[i].sex,tea[i].number);fclose(fwp);tea[i].sex=0;t_count--;printf("删除成功!!!");anykey_continue();return;}}printf("未找到该老师的工号!!");anykey_continue();
}//显示所有在职教师
void a_show_in_teacher(void)
{for(int i=0;i<T_COUNT;i++){if(tea[i].sex!=0){printf("姓名:%s 性别:%s 编号:%s\n",tea[i].name,tea[i].sex=='w'?"女":"男",tea[i].number);}}anykey_continue();
}//显示所有离职教师
void a_show_down_teacher(void)
{char name[T_NAME];char sex;char number[T_NUMBER];FILE *frp = fopen("downteacher.txt","r");if(NULL==frp){printf("文件打开失败!!");return;}while(!feof(frp)){fscanf(frp,"%s %c %s",name,&sex,number);printf("姓名:%s 性别:%s 编号:%s\n",name,sex=='w'?"女":"男",number);anykey_continue();}fclose(frp);
}//给教师解锁
void a_unlock(void)
{char number[T_NUMBER];printf("请输入要解锁的教师工号:");scanf("%s",number);while(true){for(int i=0;i<T_COUNT;i++){if(strcmp(tea[i].number,number)==0){if(tea[i].Account_status==0){tea[i].Account_status=1;printf("解锁成功!!");anykey_continue();return;}else{printf("你输入的教师状态为未锁定请重新确认!!");anykey_continue();return;}}}printf("你找到工号不存在!!!");anykey_continue();return;}
}
``谢谢大家!!!

学生管理系统小项目用C语言实现(部分功能可能不是很完善)相关推荐

  1. python管理系统web版_Python学生管理系统(web网页版)-Go语言中文社区

    前言:本项目是使用Python的Django的web框架搭建的,是一个完整的学生管理系统,功能包括基本的增删改查 项目演示图: 首页展示数据的页面(index.html) 添加学生的页面(add.ht ...

  2. mysql jdbc jsp学生管理系统_[项目分享]JSP+Servlet+JDBC实现的学生信息管理系统

    本文存在视频版本,请知悉 项目简介 这次分享一个学生管理系统,我感觉这是程序员在大学时期的毕设和课程设计选择最多的课题,当然也包括我. 本系统基于JSP+Servlet+Jdbc的学生信息管理系统.涉 ...

  3. c语言小学期大作业学生管理系统,小学期完成

    小学期...给我最深刻的启发就是...这辈子打死我都不做程序员...太TM累了... 小学期的任务是这样的: 题目概述: 某学校近年来招生规模不断扩大,每个院系的专业.班级.学生的数量急剧增加,在校学 ...

  4. c语言可视化学生管理系统,课程的设计C语言可视化程序学生成绩管理系统.doc

    课程的设计C语言可视化程序学生成绩管理系统 C语言可视化程序 设计报告 行政班级 机械0805 姓名 魏永涛 学号 0806080524 指导老师 夏建芳 课题名称 学生成绩管理系统 C可视化程序设计 ...

  5. 三个小项目入门Go语言|字节青训营笔记

    前言 这是青训营的第一课,今天的课程比较快速的讲解了go语言的入门,并配合三个小的项目实践梳理所学知识点,这里详细回顾一下这三个项目,结合课后作业要求做一些代码补充,并附上自己的分析,青训期间的所有课 ...

  6. 【Java】通讯录管理系统小项目

    一.前言  前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站前言 – 床长人工智能教程正在上传-重新上传取消https://www.cbedai.net ...

  7. 通过JAVA编写一个简单的雇员管理系统小项目

    代码注释比较详细,应该能帮助初学者很轻松的看懂:代码如下:(详细说明请看代码注解) /* * 项目:公司职员薪水管理系统 * 作者:zyj0813 * 项目需求: * 1.添加新员工 * 2.根据员工 ...

  8. Python列表详解(附员工管理系统小项目练习)

    列表(list) - 列表是Python中的一个对象 - 对象(object)就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象,像数值,它只能保存一个单一的数据 - 列表中可以保存多个有序 ...

  9. SSM入门小项目----学生信息管理系统

    SSM入门小项目----学生信息管理系统 学习了SSM后,自己想动手写个小项目,巩固一下.选择了比较简单的学生信息管理系统,项目比较简单,包括的功能有:登录.学生信息的增删改查.分页(前端实现). 本 ...

最新文章

  1. 谈谈Tomcat连接器
  2. php后台地址检测,[thinkphp] 隐藏后台地址
  3. java存储键值结构_java-键值存储为主数据库
  4. 华为机试——合并表记录
  5. 【BZOJ】2599: [IOI2011]Race 点分治
  6. SpringMVC工作原理的介绍
  7. uni-app自制表格及其分页
  8. 用Hexo制作自己的静态博客
  9. 华硕win10键盘失灵_华硕笔记本键盘失灵,小编告诉你华硕笔记本键盘失灵怎么解决...
  10. 计算机图形和ps的区别,PS CC和PS CC有什么区别?
  11. 去除字符串中所包含的空格(包括:空格(全角,半角)、制表符、换页符等)
  12. 小红书推广效果怎么样?如何进行小红书推广?
  13. python的元组是否能重复_python – 在带有元组的列表列表中查找重复项
  14. 真正正确的人民币 小写 大写 转换算法
  15. [曲苑杂谈]mac\windows phpstorm快捷键
  16. IEEE Access LaTex 版本问题(一):图片的标注无法换行、无法左对齐以及如何加粗
  17. 责任链模式在SpringAOP中的使用
  18. 本地项目如何被外网访问(外网穿透工具一——natapp)
  19. 给系统添加个“任意门”日常设置来去自如
  20. Hive mapreduce的map与reduce个数由什么决定?

热门文章

  1. 局域网内环境搭建-PC篇
  2. PTGui+PS生成全景图
  3. TI高精度实验室ADC系列培训视频学习笔记 第1章 直流参数和交流参数:输入电容、输入漏电流、输入阻抗、参考电压值、参考电流值、差分非线性DNL、积分非线性INL、失调误差与增益误差
  4. 台北淡水 渔人码头之行 1
  5. c++ 输入一段完整的英文语句,统计其英文单词个数,并将个数保存到文件file.txt中
  6. 年末盘点时间——用Python绘制饼状图对商品库存进行分析
  7. 学计算机方法有哪些,初学者学习电脑方法有哪些
  8. jis拉伸试棒图纸_一种加工拉伸试棒的装卡装置的制作方法
  9. 信息社会的金融技术架构
  10. 最优化理论——可行方向法