这篇文章主要介绍“C语言如何实现教务管理系统”,在日常操作中,相信很多人在C语言如何实现教务管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言如何实现教务管理系统”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
实现效果如图:
主界面:
教师端——注册账号
进入教师管理系统
文件的保存
代码如下:
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct Teacher{ char name[10];//学生姓名 char iD[10];//学生学号 float score;//学生成绩}teacher;typedef struct{ teacher data; struct Teacher* next;}Tutor;typedef struct manager{ char manAcc[10]; //账号 char manPassw[10]; //密码 struct manager* next;}Manager;Manager* managerHead;void mainMenu();//主菜单void studentPort();//学生端void showTeacherPort();//教师端void teacherRegister();//教师端账号注册void teacherLogin();//教师端登录int Password_Text_Find();//密码验证Manager* Manager_check();//账号核对void teacherPort();//教师端void tutorMenu();//教师管理菜单void teacherFunction();//教师端功能应用void insertStudentData();//学生信息录入void showStudentData();//学生信息展示void searchStudentData();//学生信息查询void changeStudentData();//学生信息修改Tutor* deleteStudentData();//学生信息删除Tutor* initTeacherList();//链表初始化Tutor* createNode();//创建结点void readInfoFromFile();void writeInfoToFile();int main(void){ int choice = 0; while (1) { mainMenu();//主菜单 printf("\t请输入选择:"); scanf("%d", &choice); switch (choice) { case 1: teacherPort(); break; case 2: studentPort(); break; case 3: printf("您已退出系统!\n"); system("pause"); exit(0); default: printf("您的输入有误,请重新输入!\n"); break; } system("pause"); system("cls"); }}void mainMenu(){ system("color f0"); printf("-------------------------------------------------\n"); printf("*欢迎使用教务管理系统*\n"); printf("\t1.教师端\n"); printf("\t2.学生端\n"); printf("\t3.退出系统\n"); printf("-------------------------------------------------\n");}void studentPort(){ system("cls"); system("color b0"); printf("\n\n\n\n\n\n\n\t\t\t\t学生端暂时未写,有兴趣可以接着写!!!\n\n\n\n\n\n\n\n");}void showTeacherPort(){ system("CLS"); printf("\n\n\n\t\t\t\t 教师端"); printf("\n\t\t\t---------------------------------\n\n"); printf("\t\t\t\t1)注册\n"); printf("\t\t\t\t2)登录\n"); printf("\t\t\t\t0)返回\n"); printf("\n\t\t\t---------------------------------\n\n");}void tutorMenu(){ system("cls"); system("color 70"); printf("-------------------------------------------------\n"); printf("*欢迎进入教师端*\n"); printf("\t1.学生信息录入\n"); printf("\t2.学生信息展示\n"); printf("\t3.学生信息查询\n"); printf("\t4.学生信息修改\n"); printf("\t5.学生信息删除\n"); printf("\t6.学生数据保存\n"); printf("\t0.返回主菜单\n"); printf("-------------------------------------------------\n");}void teacherRegister(){ Manager* p = (Manager*)malloc(sizeof(Manager)); p->next = NULL; printf("请输入注册账号:"); scanf("%s", p->manAcc); printf("请输入账号密码:"); scanf("%s", p->manPassw); if (managerHead == NULL) { managerHead = p; } else { p->next = managerHead; managerHead = p; } printf("注册成功!\n");}Manager* Manager_check(char* Manager_num){ Manager* t = managerHead; while (t) { if (strcmp(Manager_num, t->manAcc) != 0) { t = t->next; continue; } return t; } return t;}int Password_Text_Find(char* Password){ char password_tem[20]=""; int tem = 0; int n = 0; //检测输入次数 while (n != 3) { scanf("%s", password_tem); if (strcmp(password_tem, Password) == 0) { tem = 1; break; } else { n++; printf("\n\t\t输入错误,请重新输入,你还有%d次机会:", 3 - n); } } return tem;}void teacherLogin(){ char ID[10]; Manager* t; printf("请输入账号:"); scanf("%s",ID); t = Manager_check(ID); if (!t) { printf("\t\t抱歉,账号不存在\n"); system("pause"); return; } printf("请输入密码:"); if (Password_Text_Find(t->manPassw) == 0) { printf("\n\t\t已经错误输入密码三次,将退出登录系统···\n"); system("pause"); return; } printf("\t\t登录成功···\n"); system("pause"); teacherFunction();}void teacherPort(){ while (1) { showTeacherPort(); char ch = getch(); switch(ch) { case '1': teacherRegister(); break; case '2': teacherLogin(); break; case '0': return; default: printf("\t\t输入错误,请重新输入\n"); break; } system("pause"); system("cls"); }}void teacherFunction(){ Tutor* T = initTeacherList(); teacher data; int choice = 0; readInfoFromFile(T); while (1) { tutorMenu();//教师菜单 printf("\t请输入选择:"); scanf("%d", &choice); switch (choice) { case 1: printf("\t1.学生信息录入\n"); printf("学生姓名:"); scanf("%s", data.name); printf("学生学号:"); scanf("%s", data.iD); printf("学生成绩:"); scanf("%f", &data.score); insertStudentData(T, data);//录入学生信息 break; case 2: showStudentData(T); break; case 3: searchStudentData(T); break; case 4: changeStudentData(T); break; case 5: T=deleteStudentData(T); break; case 6: writeInfoToFile(T); break; case 0: return; default: printf("您的输入有误,请重新输入!\n"); break; } system("pause"); system("cls"); }}Tutor* initTeacherList(){ Tutor* headNode = (Tutor*)malloc(sizeof(Tutor)); headNode->next = NULL; return headNode;}Tutor* createNode(teacher data){ Tutor* newNode = (Tutor*)malloc(sizeof(Tutor)); newNode->data = data; newNode->next = NULL; return newNode;}void insertStudentData(Tutor* headNode,teacher data){ Tutor* newNode = createNode(data); newNode->next = headNode->next; headNode->next = newNode; printf("\t录入成功!\n");}void showStudentData(Tutor* headNode){ Tutor* P = headNode->next; printf("姓名\t学号\t成绩\t\n"); while (P) { printf("%s\t%s\t%f\n", P->data.name, P->data.iD, P->data.score); P = P->next; }}void searchStudentData(Tutor* headNode){ Tutor* P = headNode->next; char ID[10] = " "; printf("请输入查找的学生学号:"); scanf("%s", ID); while (P) { if (strcmp(P->data.iD, ID) != 0) { P = P->next; continue; } else { printf("姓名\t学号\t成绩\n"); printf("%s\t%s\t%f\n", P->data.name, P->data.iD, P->data.score); return; } } printf("\t目前不存在该学生信息!\n"); return;}void changeStudentData(Tutor* headNode){ Tutor* P = headNode->next; char ID[10] = " "; printf("请输入修改的学生学号:"); scanf("%s", ID); while (P) { if (strcmp(P->data.iD, ID) != 0) { P = P->next; continue; } else { printf("\t请进行修改\n"); printf("学生姓名:"); scanf("%s", P->data.name); printf("学生学号:"); scanf("%s", P->data.iD); printf("学生成绩:"); scanf("%f", &P->data.score); printf("已完成修改!\n"); return; } } printf("\t目前不存在该学生信息!\n"); return;}Tutor* deleteStudentData(Tutor* headNode){ Tutor* head= headNode; Tutor* node= head->next; char ID[10] = " "; if (headNode->next == NULL) { printf("\t当前数据为空!\n"); return headNode; } printf("请输入要删除的学生学号:"); scanf("%s", ID); while (node!=NULL) { if (strcmp(node->data.iD, ID) != 0) { head = node; node = node->next; continue; } else { head->next = node->next; free(node); printf("\t删除成功!\n"); return headNode; } } printf("\t未找到该学生的相关信息!\n"); return headNode;}//文件读操作void readInfoFromFile(Tutor* headNode){ FILE* fp; struct Teacher data; fp = fopen("1.txt", "r"); if (fp == NULL) { fp = fopen("1.txt", "w+"); } //2.读文件 fscanf(fp, "姓名\t学号\t成绩\n");//fscanf--格式化读取数据 while (fscanf(fp, "%s\t%s\t%f\n", data.name, data.iD, &data.score) != EOF) { insertStudentData(headNode, data); } fclose(fp);}//文件写操作void writeInfoToFile(Tutor* headNode){ FILE* fp; fp = fopen("1.txt", "w"); Tutor* pMove = headNode->next; fprintf(fp, "姓名\t学号\t成绩\n"); //fprintf--写入格式化数据 while (pMove) { fprintf(fp, "%s\t%s\t%f\n", pMove->data.name,pMove->data.iD, pMove->data.score); pMove = pMove->next; } fclose(fp);}
到此,关于“C语言如何实现教务管理系统”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!