当前位置: 首页 > news >正文

建站吗官方网站线上营销方案

建站吗官方网站,线上营销方案,乐清市做淘宝网站公司,wordpress中英文模板大学第一个设计,代码量3700行,本课设仅供参考 1 【课程设计】教务信息管理系统 Time Limit:1000MS Memory Limit:65535K 题型: 人工评判题 语言: 无限制 描述 设计一个教务信息管理系统,该程序具有以下功能: (1)录入如…

大学第一个设计,代码量3700+行,本课设仅供参考
1 【课程设计】教务信息管理系统
Time Limit:1000MS Memory Limit:65535K
题型: 人工评判题 语言: 无限制
描述
设计一个教务信息管理系统,该程序具有以下功能:
(1)录入如下信息:
学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。
课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。
如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的情况。

(2)录入选课信息
(3)录入学生成绩
(3)按班统计学生选课情况及考试成绩。
(4)按课程统计学生名单及考试成绩。
(5)统计并输出每个同学已修学分及不及级课程。
(6)实现单词组合查询课程名,例如输入“JAVA+设计”查询,可以查到如下课程
《JAVA语言与程序设计》
《JAVA程序设计》
《JAVA语言与算法设计》
注:因为上面课程名中均包含“设计”和“教程”两个单词
同理,输入“JAVA+算法+设计”查询,则只能查到《JAVA语言与算法设计》
任务要求:
(1)按照分析、设计、编码、调试和测试过程完成应用程序;
(2)学习并使用流程图等工具,并在撰写报告中使用;
(3)程序的各项功能在程序运行时,以菜单方式选择并执行;
(4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等
(5)所有的信息存储在文件中,并实现文件读写操作。
(6)记录添加删除操作时,先从文件载入数据,用链表存放,批量操作完后,数据从链表写入文件。
(7)【加分选做】根据学生的选课,能够生成一个学生的课表(形式与我校教务处系统中的课表相似),并将时间有冲突的课程标记为红色
输入格式

提示
(1)学生基本信息可以设计一个结构体类型
(2)自己构思并增加的除规定功能之外的新功能,酌情加分。

结构体及函数声明

#define _CRT_SECURE_NO_WARNINGS
#include <Stdio.h>
#include <iostream>
#include  <string> 
using namespace std;
#include<malloc.h> 
#pragma once
#define InitStudentNum 1000
typedef struct Grade {//学生学号int StudentNum;//学生是否选课  1为选 0为不选int Judge = 0;//重修   0为不用重修 1为重修int Retake=0;//平时成绩double OrdinaryGrade=0;//考试成绩double TestGrade=0;//总成绩double TotalGrade=0;
};//单个课程结构
typedef struct Course {//课程编号int SubNum;//课程名字char SubName[20];//任课老师string Teacher;//任课地点string Position;//任课时间string Time;//评价char Evaluation[10][200] = {'0'};//课程学分int SubCredits = 0;int Capacity = 0;struct Grade Grade[InitStudentNum];struct Course* next;
}Course,*LinkCourse;//学生个人信息结构体(完成)
typedef struct PersonalInformation {//学生学号int StudentNum;//学生姓名string StudentName;//学生性别string StudentSex;//学生年龄string StudentAge;//学生宿舍号码string StudentDorm;//学生电话号码string StudentPhone;
};//学生结构
typedef struct Student {struct PersonalInformation PersonalInformation;//学生学分int StudentCredits = 0;//下一个学生struct Student* next;
}Student, * LinkStudent; //学生账号
typedef struct UserStudent {int StudentNum;string Account;string Password;struct UserStudent* next;
}UserStudent,*LinkUserStudent;
//教师账号
typedef struct UserTeacher {string Account;string Password;struct UserTeacher* next;
}UserTeacher,*LinkUserTeacher;
//管理员账号
typedef struct UserAdministrator {string Account;string Password;struct UserAdministrator* next;
}UserAdministrator,*LinkUserAdministrator;//通过学号找到学生函数
LinkStudent SearchStudent(int StudentNum, LinkStudent StudentHead);
//复制课程链表
LinkCourse copyCourse(LinkCourse CourseHead);
//通过name字符关键词筛选CopyHead中符合条件的节点
LinkCourse NameCourse(LinkCourse CopyHead, char name[]);
//通过课程编号查找课程
LinkCourse SearchCourseID(int SubNum, LinkCourse CourseHead);
//课程关键字搜索得到复制的课程指针
LinkCourse SearchCourse_byword(LinkCourse CourseHead);
//通过关键词或编号得到课程
LinkCourse GetCourse(LinkCourse CourseHead);
//录入管理员账号
LinkUserAdministrator EntryAdministrator(LinkUserAdministrator AdministratorHead);
//录入教师账号
LinkUserTeacher EntryTeacher(LinkUserTeacher UserTeacherHead);
//录入学生账号
LinkUserStudent EntryStudent(LinkUserStudent UserStudentHead);
//删除账号
void AccountSystem_Delete(LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);
//删除学生账号
LinkUserStudent StudentAccount_Delete(LinkUserStudent UserStudentHead);
//删除教师账号
LinkUserTeacher TeacherAccount_Delete(LinkUserTeacher UserTeacherHead);
//删除管理员账号
LinkUserAdministrator AdministratorAccount_Delete(LinkUserAdministrator UserAdministratorHead);
//修改密码
void Account_ChangePassword(LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);
//修改学生密码
LinkUserStudent StudentAccount_ChangePassword(LinkUserStudent UserStudentHead);
//修改教师密码
LinkUserTeacher TeacherAccount_ChangePassword(LinkUserTeacher UserTeacherHead);
//修改管理员密码
LinkUserAdministrator AdministratorAccount_ChangePassword(LinkUserAdministrator UserAdministratorHead);
//保存账号
void AccountStore(LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);
//读取账号
LinkUserAdministrator Administrator_AccountRead(LinkUserAdministrator UserAdministratorHead);
LinkUserTeacher Teacher_AccountRead(LinkUserTeacher UserTeacherHead);
LinkUserStudent Student_AccountRead(LinkUserStudent UserStudentHead);
//登录函数
char login(LinkUserAdministrator AdministratorHead, LinkUserStudent UserStudentHead, LinkUserTeacher UserTeacherHead);
//学生界面菜单
void Student_Begin();
//个人成绩查看
void PersonalGrade_Search(LinkStudent One, LinkCourse CourseHead);
//不及格课程查看
void SearchPersonalFailCourse(LinkStudent One, LinkCourse CourseHead);
//个人学分查看
void PersonalCreadits_Search(LinkStudent One);
//个人信息查看
void PersonalInformation_Search(LinkStudent One);
//个人课程查看
void PersonalCourse_Search(LinkStudent One, LinkStudent StudentHead, LinkCourse CourseHead);
//选课中心
void PersonalCourse_Choose(LinkStudent One, LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserStudent UserStudentHead, LinkUserTeacher UserTeacherHead);
//个人信息修改
void ModifyPersonalInformation(LinkStudent One);
//学生输入界面
void Input_Student(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserTeacher UserTeacherHead, LinkUserAdministrator UserAdministratorHead, LinkUserStudent UserStudentHead);
//教师界面菜单
void Teacher_Begin();
//教师界面输入
void Input_Teacher(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserTeacher UserTeacherHead, LinkUserAdministrator UserAdministratorHead, LinkUserStudent UserStudentHead);
//添加学生个人
void PushStudent(LinkStudent StudentHead);
//修改学生个人信息
LinkStudent ModifyStudent(LinkStudent StudentHead);
//新建学生链表
LinkStudent CreateStudentList(LinkStudent StudentHead);
//存取学生链表数据
void StoreStudentList(LinkStudent StudentHead);
//删除学生函数
LinkStudent DeleteStudent(LinkStudent StudentHead);
//学生个人信息查看
void SearchInformation(LinkStudent StudentHead);
//学生个人信息录入
LinkStudent PnInformation(LinkStudent StudentHead);
//学生课程链表初始化,设置课程数量且将学号录入
LinkCourse InitCourse(LinkCourse CourseHead, LinkStudent StudentHead);
//添加课程
void AddCourse(LinkCourse CourseHead, LinkStudent StudentHead);
//删除课程函数
LinkCourse DeleteCoursse(LinkCourse CourseHead);
//修改课程信息
void ModifyCourse(LinkCourse CourseHead);
//课程评价
void CourseEvaluation_Operate(LinkCourse CourseHead);
//课程评价查看
void CourseEvaluation_Search(LinkCourse CourseHead);
//按班级录入选课信息
LinkCourse CourseSelection_entry(LinkCourse CourseHead);
//选课学生信息查看
void CourseSelection_view(LinkCourse CourseHead, LinkStudent StudentHead);
//查询学生的选课情况
void SearchStudentCourse(LinkCourse CourseHead, LinkStudent StudentHead);
//查询一个班级的选课情况
void SearchClassCourse(LinkStudent StudentHead, LinkCourse CourseHead);
//查看课程信息
void CourseInformation_View(LinkCourse CourseHead);
//通过编号查看课程信息
void searchcourse(LinkCourse coursehead);
//存取课程链表数据(完成)
void StoreCourseList(LinkCourse CourseHead);
//学生课程成绩录入
void GradeInput(LinkCourse CourseHead, LinkStudent StudentHead);
//学生学分查询
void Creadits_Search(LinkStudent StudentHead);
//查询重修学生的课程
void SearchFailCourse(LinkCourse CourseHead, LinkStudent StudentHead);
//查询课程重修
void Search_CourseRetake(LinkCourse CourseHead, LinkStudent StudentHead);
//按课程录入学生考试成绩。
void GradeInput_ThroughCourse(LinkCourse CourseHead, LinkStudent StudentHead);
//获取课程评价
void GetCourseEvaluation(LinkCourse Course);
//读取课程数据函数
LinkCourse ReadCourseList(LinkStudent StudentHead);
//菜单
void Begin();
//成绩系统菜单
void GradeSystem_Begin(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);
//课程系统菜单
void CourseSystem_Begin(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);
//信息系统菜单
void InformationSystem_Begin(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);
//帐号系统菜单
void AccountSystem_Begin(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);
//初始化菜单
void Initialization(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);
//读取学生文件数据函数
LinkStudent ReadStudentList();
//查询一个班级的成绩
void SearchClassGrade(LinkStudent StudentHead, LinkCourse CourseHead);
//查询成绩
void SearchCourse(LinkStudent StudentHead, LinkCourse CourseHead);
//数据保存
void StoreData(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserStudent UserStudentHead, LinkUserTeacher UserTeacherHead);
//管理员菜单
void Input_Administrator(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead);

函数定义

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include "结构体.h"
#include <iostream>
#include  <string> 
#include<malloc.h> 
#include<conio.h>
using namespace std;
#define PATH1 "StudentData.text"
#define PATH2 "CourseData.text"
#define PATH3 "Teacher_Account.text"
#define PATH4 "Administrator_Account.text"
#define PATH5 "Student_Account.text"
#define InitStudentNum 1000
#define AddStudent 30;
//**************************************基础函数块**************************************//通过学号找到学生函数
LinkStudent SearchStudent(int StdNum, LinkStudent StudentHead) {LinkStudent p;p = StudentHead;while (p) {p = p->next;//先判定是否为空再判定是否是这个学号!if (!p) {cout << "学号不存在!" << endl;system("pause");system("cls");//如果不存在返回NULL标志错误return NULL;}if (p->PersonalInformation.StudentNum == StdNum)break;//如果找到该学号即返回p}return p;
}//复制课程链表
LinkCourse copyCourse(LinkCourse CourseHead) {LinkCourse q, p, head1, tem = CourseHead;head1 = new Course;*head1 = *tem;p = head1;q = p;tem = tem->next;while (tem) {p = new Course;*p = *tem;p->next = NULL;q->next = p;q = p;tem = tem->next;}return head1;
}//通过name字符关键词筛选CopyHead中符合条件的节点
LinkCourse NameCourse(LinkCourse CopyHead, char name[]) {LinkCourse q, p = CopyHead;q = p;p = p->next;int length = strlen(name);int i = 0, tem, j = 0;int vis = 0;//循环整个copy链表while (p) {//循环节点的20个字符while (j < 20) {//如果和name[0]相同即开始比对if (name[0] == p->SubName[j]) {//定一个临时值存放   不修改jtem = j;for (i = 0; i < length; i++) {//比对不成功即退出if (name[i] != p->SubName[tem++]) {break;}}//如果全部比对成功标记为1,留在链表中if (i == length - 1) { vis = 1; }}//比对后 让i归位i = 0;//j++继续比对j++;//如果到了尽头就退出if (p->SubName[j] == '\0')break;}if (vis == 0) {//标记为0  去除p节点q->next = p->next;p = q->next;}else {//标记为1  进行下一个搜索			q = p;p = p->next;}vis = 0;//归位j = 0;i = 0;}return CopyHead;
}//通过课程编号查找课程
LinkCourse SearchCourseID(int SubNum, LinkCourse CourseHead) {LinkCourse p;p = CourseHead;while (p) {p = p->next;if (!p) {cout << "编号不存在!" << endl;system("pause");system("cls");//如果不存在返回NULL标志错误return NULL;}//如果找到该编号即返回pif (p->SubNum == SubNum)break;}return p;
}//课程关键字搜索得到复制的课程指针
LinkCourse SearchCourse_byword(LinkCourse CourseHead) {system("cls");LinkCourse p = CourseHead->next;cout << "请输入操作的课程关键字:" << endl;char name[20];//输入关键字cin >> name;int tnum = 0;int length = strlen(name);int i, j = 0;//查找有多少个 +for (i = 0; i < length; i++) {if (name[i] == '+')tnum++;}tnum += 1;i = 0;//copy链表LinkCourse copyhead = copyCourse(CourseHead);//循环tnum+1次while (tnum--) {char tem[20];//如果没等于'+'或者'\0'则录入temwhile (name[i] != '+' && name[i] != '\0') {tem[j++] = name[i++];}//tem录入完后要在后面加一个'\0';j++;tem[j] = '\0';//查找tem的链表copyhead = NameCourse(copyhead, tem);j = 0;if (name[i] == '+') { i += 1; }}system("cls");p = copyhead->next;length = 0;while (p) {length++;p = p->next;}copyhead->SubNum = length;system("cls");cout << "查询到有" << copyhead->SubNum << "个相关课程" << endl;if (copyhead->SubNum == 0) {system("pause");system("cls");return NULL;}int num = 1;p = copyhead->next;while (p) {cout << "序号: " << num++ << endl;cout << "课程编号: " << p->SubNum << endl;cout << "课程名称: " << p->SubName << endl;cout << "课程学分: " << p->SubCredits << endl;cout << "————————————————————" << endl;p = p->next;}if (copyhead->SubNum != 1) {cout << "请通过课程序号选择" << endl;cin >> num;system("cls");}else {num = 1;}p = copyhead;while (num--) {p = p->next;if (p == NULL) { cout << "课程不存在!" << endl; return NULL; }}return p;
}//通过关键词或编号得到课程
LinkCourse GetCourse(LinkCourse CourseHead) {system("cls");char judge;char name[20];int tnum, num;int length;int i, j, id;LinkCourse copyhead = NULL, p = NULL;while (1) {cout << "您想要通过什么方式找到课程?" << endl;cout << "a:按关键词搜索课程" << endl;cout << "b:按编号搜索课程" << endl;cout << "#:返回上一层" << endl;cin >> judge;switch (judge){case'b':cout << "查看的课程编号是" << endl;int SubNum;cin >> SubNum;p = SearchCourseID(SubNum, CourseHead);if (p == NULL) { return NULL; }system("cls");cout << "查看的课程是: " << endl;cout << "课程名称: " << p->SubName << endl;cout << "课程学分: " << p->SubCredits << endl;cout << "课程容量: " << p->Capacity<<"/60" << endl;cout << "————————————————————" << endl;return p;case'a':p = SearchCourse_byword(CourseHead);if (p == NULL)break;id = p->SubNum;p = SearchCourseID(id, CourseHead);system("cls");cout << "查看的课程是: " << endl;cout << "课程名称: " << p->SubName << endl;cout << "课程学分: " << p->SubCredits << endl;cout << "————————————————————" << endl;return p;case'#':return NULL;default:cout << "请正确输入!" << endl;system("pause");system("cls");}}
}//**************************************程序登录功能块**************************************//录入管理员账号
LinkUserAdministrator EntryAdministrator(LinkUserAdministrator AdministratorHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return AdministratorHead;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");LinkUserAdministrator q = AdministratorHead, p = new UserAdministrator;p->next = NULL;while (1) {if (q->next == NULL)break;q = q->next;}q->next = p;cout << "管理员成员创建成功!" << endl;cout << "请设置账号" << endl;cin >> p->Account;cout << "请设置密码" << endl;cin >> p->Password;system("pause");system("cls");return AdministratorHead;
}
//录入教师账号
LinkUserTeacher EntryTeacher(LinkUserTeacher UserTeacherHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return UserTeacherHead;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");LinkUserTeacher q = UserTeacherHead, p = new UserTeacher;p->next = NULL;while (1) {if (q->next == NULL)break;q = q->next;}q->next = p;cout << "教师成员创建成功!" << endl;cout << "请设置账号" << endl;cin >> p->Account;cout << "请设置密码" << endl;cin >> p->Password;system("pause");system("cls");return UserTeacherHead;
}
//录入学生账号
LinkUserStudent EntryStudent(LinkUserStudent UserStudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return UserStudentHead;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");LinkUserStudent q = UserStudentHead, p = new UserStudent;p->next = NULL;while (1) {if (q->next == NULL)break;q = q->next;}q->next = p;cout << "学生成员创建成功!" << endl;cout << "请输入您的学号" << endl;cin >> p->StudentNum;cout << "请设置账号" << endl;cin >> p->Account;cout << "请设置密码" << endl;cin >> p->Password;system("pause");system("cls");return UserStudentHead;
}//删除账号
void AccountSystem_Delete(LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");char judge;while (1) {cout << "————————————————————" << endl;cout << "|       请选择删除账号类型             |" << endl;cout << "|———————————————————|" << endl;cout << "|          a.学生                      |" << endl;cout << "|          b.教师                      |" << endl;cout << "|          c.管理员                    |" << endl;cout << "————————————————————" << endl;cin >> judge;switch (judge){case'A':case'a':UserStudentHead = StudentAccount_Delete(UserStudentHead);return;case'b':case'B':UserTeacherHead = TeacherAccount_Delete(UserTeacherHead);return;case'c':case'C':UserAdministratorHead = AdministratorAccount_Delete(UserAdministratorHead);return;default:break;}}}//删除学生账号
LinkUserStudent StudentAccount_Delete(LinkUserStudent UserStudentHead) {system("cls");cout << "请输入要删除的账号" << endl;string Account;cin >> Account;LinkUserStudent pre, One = UserStudentHead->next;pre = UserStudentHead;while (1) {if (!One->Account.compare(Account)) {break;}pre = One;One = One->next;if (One == NULL) {cout << "不存在该账户!" << endl;system("pause");return UserStudentHead;}}cout << "请输入要删除的账号密码" << endl;string Password;cin >> Password;if (!One->Password.compare(Password)) {pre->next = One->next;cout << "删除成功!" << endl;system("pause");return UserStudentHead;}else {cout << "密码错误!" << endl;system("pause");return UserStudentHead;}
}
//删除教师账号
LinkUserTeacher TeacherAccount_Delete(LinkUserTeacher UserTeacherHead) {system("cls");cout << "请输入要删除的账号" << endl;string Account;cin >> Account;LinkUserTeacher pre, One = UserTeacherHead->next;pre = UserTeacherHead;while (1) {if (!One->Account.compare(Account)) {break;}pre = One;One = One->next;if (One == NULL) {cout << "不存在该账户!" << endl;system("pause");return UserTeacherHead;}}cout << "请输入要删除的账号密码" << endl;string Password;cin >> Password;if (!One->Password.compare(Password)) {pre->next = One->next;cout << "删除成功!" << endl;system("pause");return UserTeacherHead;}else {cout << "密码错误!" << endl;system("pause");return UserTeacherHead;}
}
//删除管理员账号
LinkUserAdministrator AdministratorAccount_Delete(LinkUserAdministrator UserAdministratorHead) {system("cls");cout << "请输入要删除的账号" << endl;string Account;cin >> Account;LinkUserAdministrator pre, One = UserAdministratorHead->next;pre = UserAdministratorHead;while (1) {if (!One->Account.compare(Account)) {break;}pre = One;One = One->next;if (One == NULL) {cout << "不存在该账户!" << endl;system("pause");return UserAdministratorHead;}}cout << "请输入要删除的账号密码" << endl;string Password;cin >> Password;if (!One->Password.compare(Password)) {pre->next = One->next;cout << "删除成功!" << endl;system("pause");return UserAdministratorHead;}else {cout << "密码错误!" << endl;system("pause");return UserAdministratorHead;}
}//修改密码
void Account_ChangePassword(LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return;default:cout << "请重新输入!" << endl;system("pause");system("cls");break;}if (Flag == 1)break;}system("cls");char judge;while (1) {cout << "————————————————————" << endl;cout << "|           请选择账号类型             |" << endl;cout << "|———————————————————|" << endl;cout << "|          a.学生                      |" << endl;cout << "|          b.教师                      |" << endl;cout << "|          c.管理员                    |" << endl;cout << "————————————————————" << endl;cin >> judge;switch (judge){case'A':case'a':UserStudentHead = StudentAccount_ChangePassword(UserStudentHead);return;case'b':case'B':UserTeacherHead = TeacherAccount_ChangePassword(UserTeacherHead);return;case'c':case'C':UserAdministratorHead = AdministratorAccount_ChangePassword(UserAdministratorHead);return;default:break;}}}//修改学生密码
LinkUserStudent StudentAccount_ChangePassword(LinkUserStudent UserStudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return UserStudentHead;default:cout << "请重新输入!" << endl;system("pause");system("cls");break;}if (Flag == 1)break;}system("cls");cout << "请输入您的账号" << endl;string Account;cin >> Account;LinkUserStudent  One = UserStudentHead->next;while (1) {if (!One->Account.compare(Account)) {break;}One = One->next;if (One == NULL) {cout << "不存在该账户!" << endl;system("pause");return UserStudentHead;}}cout << "请输入要原账户的账号密码:" << endl;string Password;cin >> Password;if (!One->Password.compare(Password)) {cout << "请输入新的账号密码:" << endl;cin >> One->Password;cout << "修改成功!" << endl;system("pause");}else {cout << "密码错误!" << endl;system("pause");return UserStudentHead;}
}
//修改教师密码
LinkUserTeacher TeacherAccount_ChangePassword(LinkUserTeacher UserTeacherHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return UserTeacherHead;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");cout << "请输入您的账号" << endl;string Account;cin >> Account;LinkUserTeacher  One = UserTeacherHead->next;while (1) {if (!One->Account.compare(Account)) {break;}One = One->next;if (One == NULL) {cout << "不存在该账户!" << endl;system("pause");return UserTeacherHead;}}cout << "请输入要原账户的账号密码:" << endl;string Password;cin >> Password;if (!One->Password.compare(Password)) {cout << "请输入新的账号密码:" << endl;cin >> One->Password;cout << "修改成功!" << endl;system("pause");}else {cout << "密码错误!" << endl;system("pause");return UserTeacherHead;}
}
//修改管理员密码
LinkUserAdministrator AdministratorAccount_ChangePassword(LinkUserAdministrator UserAdministratorHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return UserAdministratorHead;default:cout << "请重新输入!" << endl;system("pause");system("cls");break;}if (Flag == 1)break;}system("cls");cout << "请输入您的账号" << endl;string Account;cin >> Account;LinkUserAdministrator  One = UserAdministratorHead->next;while (1) {if (!One->Account.compare(Account)) {break;}One = One->next;if (One == NULL) {cout << "不存在该账户!" << endl;system("pause");return UserAdministratorHead;}}cout << "请输入要原账户的账号密码:" << endl;string Password;cin >> Password;if (!One->Password.compare(Password)) {cout << "请输入新的账号密码:" << endl;cin >> One->Password;cout << "修改成功!" << endl;system("pause");}else {cout << "密码错误!" << endl;system("pause");return UserAdministratorHead;}
}//保存账号
void AccountStore(LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {LinkUserAdministrator p = UserAdministratorHead;LinkUserTeacher q = UserTeacherHead;LinkUserStudent r = UserStudentHead;cout << "正在存储数据" << endl;if (UserAdministratorHead->next == NULL) { cout << "管理员账户数据不存在!" << endl; return; }if (UserTeacherHead->next == NULL) { cout << "教师账户数据不存在!" << endl; return; }if (UserStudentHead->next == NULL) { cout << "学生账户数据不存在!" << endl; return; }FILE* fp = fopen(PATH4, "wb");if (fp == NULL) { cout << "储存管理员数据失败!" << endl; return; }//写入时也要把头节点写进去while (p != NULL) {fwrite(p, sizeof(UserAdministrator), 1, fp);p = p->next;}cout << "存储管理员数据成功!" << endl;fclose(fp);fp = fopen(PATH3, "wb");if (fp == NULL) { cout << "储存教师数据失败!" << endl; return; }//写入时也要把头节点写进去while (q != NULL) {fwrite(q, sizeof(UserTeacher), 1, fp);q = q->next;}cout << "存储教师数据成功!" << endl;fclose(fp);fp = fopen(PATH5, "wb");if (fp == NULL) { cout << "储存学生数据失败!" << endl; return; }//写入时也要把头节点写进去while (r != NULL) {fwrite(r, sizeof(UserStudent), 1, fp);r = r->next;}cout << "存储学生数据成功!" << endl;fclose(fp);fp = NULL;system("pause");
}//读取账号
LinkUserAdministrator Administrator_AccountRead(LinkUserAdministrator UserAdministratorHead) {cout << "正在读取管理员数据!" << endl;LinkUserAdministrator p1, p2;UserAdministratorHead = new UserAdministrator;p2 = UserAdministratorHead;UserAdministratorHead->next = NULL;FILE* fp = fopen(PATH4, "rb");int i;if (fp == NULL) {cout << "管理员数据文件不存在!" << endl;cout << "将为您初始化,请根据信息进行输入!" << endl;UserAdministratorHead = EntryAdministrator(UserAdministratorHead);system("cls");}else {//读取时先读取第一个头节点fread(UserAdministratorHead, sizeof(*UserAdministratorHead), 1, fp);p1 = new UserAdministrator;i = 0;while ((fread(p1, sizeof(*p1), 1, fp)) == 1) {i++;p1->next = NULL;p2->next = p1;p2 = p1;p1 = new UserAdministrator;}if (i == 0) { cout << "空文件!" << endl; return UserAdministratorHead; }delete(p1);fclose(fp);cout << "读取管理员数据成功!" << endl;}return UserAdministratorHead;
}
LinkUserTeacher Teacher_AccountRead(LinkUserTeacher UserTeacherHead) {cout << "正在读取教师数据!" << endl;LinkUserTeacher p3, p4;UserTeacherHead = new UserTeacher;p4 = UserTeacherHead;UserTeacherHead->next = NULL;FILE* fp = fopen(PATH3, "rb");if (fp == NULL) {cout << "教师数据文件不存在!" << endl;cout << "将为您初始化,请根据信息进行输入!" << endl;UserTeacherHead = EntryTeacher(UserTeacherHead);system("cls");}else {//读取时先读取第一个头节点fread(UserTeacherHead, sizeof(*UserTeacherHead), 1, fp);p3 = new UserTeacher;int i = 0;while ((fread(p3, sizeof(*p3), 1, fp)) == 1) {i++;p3->next = NULL;p4->next = p3;p4 = p3;p3 = new UserTeacher;}if (i == 0) { cout << "空文件!" << endl; return UserTeacherHead; }delete(p3);fclose(fp);cout << "读取教师数据成功!" << endl;}return UserTeacherHead;
}
LinkUserStudent Student_AccountRead(LinkUserStudent UserStudentHead) {cout << "正在读取学生账户数据!" << endl;LinkUserStudent p5, p6;UserStudentHead = new UserStudent;p6 = UserStudentHead;UserStudentHead->next = NULL;FILE* fp = fopen(PATH5, "rb");int i;if (fp == NULL) {cout << "学生账户数据文件不存在!" << endl;cout << "将为您初始化,请根据信息进行输入!" << endl;system("pause");UserStudentHead = EntryStudent(UserStudentHead);system("cls");return UserStudentHead;}else {//读取时先读取第一个头节点fread(UserStudentHead, sizeof(*UserStudentHead), 1, fp);p5 = new UserStudent;i = 0;while ((fread(p5, sizeof(*p5), 1, fp)) == 1) {i++;p5->next = NULL;p6->next = p5;p6 = p5;p5 = new UserStudent;}if (i == 0) { cout << "空文件!" << endl; return UserStudentHead; }delete(p5);fclose(fp);cout << "读取学生数数据成功!" << endl;}system("pause");system("cls");return UserStudentHead;
}//登录函数
char login(LinkUserAdministrator AdministratorHead, LinkUserStudent UserStudentHead, LinkUserTeacher UserTeacherHead) {char judge;while (1) {char cAccount[20], cPassword[20];string Account, Password;char flag;int i;cout << "————————————————————" << endl;cout << "|        欢迎使用学生教务系统          |" << endl;cout << "|        请选择账户类型登录            |" << endl;cout << "|———————————————————|" << endl;cout << "|          a.学生                      |" << endl;cout << "|          b.教师                      |" << endl;cout << "|          c.管理员                    |" << endl;cout << "————————————————————" << endl;cin >> judge;char ch;if (judge == 'a' || judge == 'A') {cout << "请输入账号: ";getchar();i = 0;while ((ch = _getch()) != '\r' && i <= 20) {if (ch == '\b') {if (i > 0) {i--;cout << "\b \b";}else {putchar(7);}}else {cAccount[i++] = ch;cout << "*";}}cAccount[i] = '\0';cout << endl;cout << "请输入密码: ";i = 0;while ((ch = _getch()) != '\r' && i <= 20) {if (ch == '\b') {if (i > 0) {i--;cout << "\b \b";}else {putchar(7);}}else {cPassword[i++] = ch;cout << "*";}}cPassword[i] = '\0';Password = cPassword;Account = cAccount;cout << endl;LinkUserStudent p = UserStudentHead->next;while (1) {if (!p->Account.compare(Account)) {if (!p->Password.compare(Password)) {cout << "登录成功!" << endl;//将该学生学号返回到头指针学号UserStudentHead->StudentNum = p->StudentNum;system("pause");system("cls");flag = 'a';return flag;}}p = p->next;if (!p) {cout << "账户或密码错误!" << endl;flag = '#';return flag;}}}else if (judge == 'b' || judge == 'B') {cout << "请输入账号: ";getchar();i = 0;while ((ch = _getch()) != '\r' && i <= 20) {if (ch == '\b') {if (i > 0) {i--;cout << "\b \b";}else {putchar(7);}}else {cAccount[i++] = ch;cout << "*";}}cAccount[i] = '\0';cout << endl;cout << "请输入密码: ";i = 0;while ((ch = _getch()) != '\r' && i <= 20) {if (ch == '\b') {if (i > 0) {i--;cout << "\b \b";}else {putchar(7);}}else {cPassword[i++] = ch;cout << "*";}}cPassword[i] = '\0';Password = cPassword;Account = cAccount;cout << endl;LinkUserTeacher p = UserTeacherHead->next;while (1) {if (!p->Account.compare(Account)) {if (!p->Password.compare(Password)) {cout << "登录成功!" << endl;system("pause");system("cls");flag = 'b';return flag;}}p = p->next;if (!p) {cout << "账户或密码错误!" << endl;flag = '#';return flag;}}}else if (judge == 'c' || judge == 'C') {cout << "请输入账号: ";getchar();i = 0;while ((ch = _getch()) != '\r' && i <= 20) {if (ch == '\b') {if (i > 0) {i--;cout << "\b \b";}else {putchar(7);}}else {cAccount[i++] = ch;cout << "*";}}cAccount[i] = '\0';cout << endl;cout << "请输入密码: ";i = 0;while ((ch = _getch()) != '\r' && i <= 20) {if (ch == '\b') {if (i > 0) {i--;cout << "\b \b";}else {putchar(7);}}else {cPassword[i++] = ch;cout << "*";}}cPassword[i] = '\0';Password = cPassword;Account = cAccount;cout << endl;LinkUserAdministrator p = AdministratorHead->next;while (1) {if (!p->Account.compare(Account)) {if (!p->Password.compare(Password)) {cout << "登录成功!" << endl;system("pause");system("cls");flag = 'c';return flag;}}p = p->next;if (!p) {cout << "账户或密码错误!" << endl;flag = '#';return flag;}}}cout << "请重新输入!" << endl;system("pause");system("cls");}
}//**************************************学生权限功能块**************************************//学生界面菜单
void Student_Begin() {cout << "————————————————————" << endl;cout << "|        请输入数字进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:个人成绩查看                |" << endl;cout << "|        b:个人不及格课程查看          |" << endl;cout << "|        c:个人学分查看                |" << endl;cout << "|        d:个人课程查看                |" << endl;cout << "|        e:个人信息查看                |" << endl;cout << "|        f:个人信息修改                |" << endl;cout << "|        g:查询课程信息                |" << endl;cout << "|        h:选课中心                    |" << endl;cout << "|        i:课程评价                    |" << endl;cout << "|        j:课程评价查看                |" << endl;cout << "|        k:个人账户密码修改            |" << endl;cout << "|        @:保存数据                    |" << endl;cout << "|        #:退出程序                    |" << endl;cout << "————————————————————" << endl;}//个人成绩查看
void PersonalGrade_Search(LinkStudent One, LinkCourse CourseHead) {system("cls");LinkCourse p = CourseHead;int i;int StdNum = One->PersonalInformation.StudentNum;int Subcase = CourseHead->SubNum;cout << "————————————————————" << endl;cout << "学号: " << One->PersonalInformation.StudentNum << endl;cout << "姓名: " << One->PersonalInformation.StudentName << endl;cout << "————————————————————" << endl;while (Subcase--) {p = p->next;for (i = 0; i < InitStudentNum; i++) {if (p->Grade[i].StudentNum == StdNum) {break;}}if (p->Grade[i].Judge == 1) {cout << "课程名称: " << p->SubName << endl;cout << "课程学分: " << p->SubCredits << endl;cout << "重修次数: " << p->Grade[i].Retake << endl;cout << "平时成绩为" << p->Grade[i].OrdinaryGrade << endl;cout << "考试成绩为" << p->Grade[i].TestGrade << endl;cout << "总成绩为" << p->Grade[i].TotalGrade << endl;cout << "————————————————————" << endl;}}system("pause");system("cls");
}//查询重修学生的课程
void SearchFailCourse(LinkCourse CourseHead,LinkStudent StudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");cout << "请输入查询的学生学号: " << endl;int StdNum;cin >> StdNum;LinkStudent One;One = SearchStudent(StdNum, StudentHead);//如果搜索不到学生if (One == NULL)return;SearchPersonalFailCourse(One, CourseHead);
}//查询个人的重修课程
void SearchPersonalFailCourse(LinkStudent One, LinkCourse CourseHead) {LinkCourse p = CourseHead;int i;int StdNum = One->PersonalInformation.StudentNum;int Subcase = CourseHead->SubNum;cout << "————————————————————" << endl;cout << "学号: " << One->PersonalInformation.StudentNum << endl;cout << "姓名: " << One->PersonalInformation.StudentName << endl;cout << "————————————————————" << endl;while (Subcase--) {p = p->next;for (i = 0; i < InitStudentNum; i++) {if (p->Grade[i].StudentNum == StdNum) {break;}}if (p->Grade[i].TestGrade < 60 && p->Grade[i].Judge == 1) {cout << "课程名称: " << p->SubName << endl;cout << "课程学分: " << p->SubCredits << endl;cout << "重修次数: " << p->Grade[i].Retake << endl;cout << "平时成绩为" << p->Grade[i].OrdinaryGrade << endl;cout << "考试成绩为" << p->Grade[i].TestGrade << endl;cout << "总成绩为" << p->Grade[i].TotalGrade << endl;cout << "————————————————————" << endl;}}system("pause");system("cls");
}
//个人学分查看
void PersonalCreadits_Search(LinkStudent One) {system("cls");cout << "————————————————————" << endl;cout << "您所获得的学分是: " << One->StudentCredits << endl;cout << "————————————————————" << endl;system("pause");
};//个人信息查看
void PersonalInformation_Search(LinkStudent One) {system("cls");cout << "————————————————————" << endl;cout << "         学生学号:" << One->PersonalInformation.StudentNum << endl;cout << "         学生姓名:" << One->PersonalInformation.StudentName << endl;cout << "         学生性别:" << One->PersonalInformation.StudentSex << endl;cout << "         学生年龄:" << One->PersonalInformation.StudentAge << endl;cout << "         学生宿舍地址:" << One->PersonalInformation.StudentDorm << endl;cout << "         学生手机号码:" << One->PersonalInformation.StudentPhone << endl;cout << "————————————————————" << endl;system("pause");system("cls");
}//个人课程查看
void PersonalCourse_Search(LinkStudent One, LinkStudent StudentHead, LinkCourse CourseHead) {int StudentNum = StudentHead->PersonalInformation.StudentNum;int StudentId = One->PersonalInformation.StudentNum;system("cls");cout << "————————————————————" << endl;cout <<StudentId<< "拥有的课程: " << endl;cout << "————————————————————" << endl;LinkCourse p = CourseHead->next;int num = 1;while (1) {for (int j = 0; j < StudentNum; j++) {if (p->Grade[j].StudentNum == StudentId) {if (p->Grade[j].Judge == 1) {cout << num++ << ". " << p->SubName << endl;cout << "————————————————————" << endl;cout << "编号为" << p->SubNum << "的课程:" << endl;cout << "课程学分:" << p->SubCredits << endl;cout << "任课老师:" << p->Teacher << endl;cout << "任课地点:" << p->Position << endl;cout << "任课时间:" << p->Time << endl;cout << "————————————————————" << endl;}}}p = p->next;if (!p)break;}system("pause");
};//选课中心
void PersonalCourse_Choose(LinkStudent One, LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserStudent UserStudentHead, LinkUserTeacher UserTeacherHead) {//学生总人数int StudentNum = StudentHead->PersonalInformation.StudentNum;//学生个人IDint StudentId = One->PersonalInformation.StudentNum;system("cls");LinkCourse p = NULL;char choose;while (1) {system("cls");cout << "————————————————————" << endl;cout << "当前学生总数:" << StudentHead->PersonalInformation.StudentNum << endl;cout << "当前课程总数:" << CourseHead->SubNum << endl;cout << "————————————————————" << endl;cout << "|        请选择选课模式                |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:搜索单门课程进行选课        |" << endl;cout << "|        b:对所有课程依次进行选课      |" << endl;cout << "|        @:数据保存                    |" << endl;cout << "|        #:返回上一层                  |" << endl;cout << "————————————————————" << endl;cin >> choose;int flag = 0;switch (choose) {case '#'://返回上一层return;case '@'://保存数据StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;case 'a': case 'A':system("cls");cout << "您想要通过什么方式找到课程?" << endl;cout << "a:课程关键词搜索" << endl;cout << "b:课程编号搜索" << endl;char judge;int id;cin >> judge;switch (judge){case'a':case'A':p = SearchCourse_byword(CourseHead);if (p == NULL)return;id = p->SubNum;p = SearchCourseID(id, CourseHead);break;case'b':case'B':system("cls");cout << "请输入课程编号:" << endl;int coursenum;cin >> coursenum;p = SearchCourseID(coursenum, CourseHead);if (p == NULL)return;break;default:cout << "请正确输入!" << endl;break;}while (1) {cout << "编号为" << p->SubNum << "的课程:" << endl;cout << "课程名称:" << p->SubName << endl;cout << "课程学分:" << p->SubCredits << endl;cout << "任课老师:" << p->Teacher << endl;cout << "任课地点:" << p->Position << endl;cout << "任课时间:" << p->Time << endl;cout << "课程容量: " << p->Capacity << "/60" << endl;cout << "是否选择该课程:Y/N" << endl;cin >> judge;switch (judge) {case'Y':case'y':for (int j = 0; j < StudentNum; j++) {if (p->Grade[j].StudentNum == StudentId) {if (p->Grade[j].Judge == 0) {if (p->Capacity > 60) {cout << "当前课程容量已满!" << endl;system("pause");return;}p->Grade[j].Judge = 1;p->Capacity++;cout << "选课成功!" << endl;system("pause");return;}else {cout << "您已选择该课程,请勿重新选择!" << endl;system("pause");return;}}}return;case'n':case'N':return;default:cout << "请重新输入!" << endl;system("pause");system("cls");break;}}case 'b': case 'B':system("cls");cout << "请对可选课程进行选择: " << endl;p = CourseHead->next;while (1) {while (1) {cout << "编号为" << p->SubNum << "的课程:" << endl;cout << "课程名称:" << p->SubName << endl;cout << "课程学分:" << p->SubCredits << endl;cout << "任课老师:" << p->Teacher << endl;cout << "任课地点:" << p->Position << endl;cout << "任课时间:" << p->Time << endl;cout << "课程容量: " << p->Capacity << "/60" << endl;cout << "是否选择该课程:Y/N" << endl;char judge;cin >> judge;switch (judge) {case'Y':for (int j = 0; j < StudentNum; j++) {if (p->Grade[j].StudentNum == StudentId) {if (p->Grade[j].Judge == 0) {if (p->Capacity > 60) {cout << "当前课程容量已满!" << endl;system("pause");flag = 1;break;}p->Grade[j].Judge = 1;cout << "选课成功!" << endl;p->Capacity++;system("pause");system("cls");flag = 1;break;}else {cout << "您已选择该课程,请勿重新选择!" << endl;system("pause");system("cls");flag = 1;break;}}}case'N':system("cls");flag = 1;break;default:cout << "请重新输入!" << endl;system("pause");break;}if (flag == 1) {flag = 0;break;}}p = p->next;if (!p)break;}break;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}system("pause");
}//个人信息修改
void ModifyPersonalInformation(LinkStudent One) {char judge;PersonalInformation_Search(One);while (1) {system("cls");cout << "————————————————————" << endl;cout << "请输入需要修改的选项" << endl;cout << "————————————————————" << endl;cout << "|             a:学生名字               |" << endl;cout << "|             b:学生性别               |" << endl;cout << "|             c:学生年龄               |" << endl;cout << "|             d:学生宿舍               |" << endl;cout << "|             e:学生手机号码           |" << endl;cout << "|             #:返回上一层             |" << endl;cout << "————————————————————" << endl;cin >> judge;switch (judge){case '#'://返回上一层return;case'a':cin >> One->PersonalInformation.StudentName;cout << "修改成功!" << endl;system("pause");system("cls");return;case'b':cin >> One->PersonalInformation.StudentSex;cout << "修改成功!" << endl;system("pause");system("cls");return;case'c':cin >> One->PersonalInformation.StudentAge;cout << "修改成功!" << endl;system("pause");system("cls");return;case'd':cin >> One->PersonalInformation.StudentDorm;cout << "修改成功!" << endl;system("pause");system("cls");return;case'e':cin >> One->PersonalInformation.StudentPhone;cout << "修改成功!" << endl;system("pause");system("cls");return;default:system("cls");cout << "请按格式正确输入!" << endl;break;}}
}//学生输入界面
void Input_Student(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserTeacher UserTeacherHead, LinkUserAdministrator UserAdministratorHead, LinkUserStudent UserStudentHead) {system("cls");LinkUserStudent UserOne = UserStudentHead;LinkStudent One = SearchStudent(UserOne->StudentNum, StudentHead);char choose;while (1) {system("cls");cout << "————————————————————" << endl;cout << "           欢迎您!" << One->PersonalInformation.StudentName << "                  " << endl;Student_Begin();cin >> choose;switch (choose) {case '#'://退出程序cout << "退出成功欢迎下次使用!" << endl;return;case 'a':case'A'://个人成绩查看PersonalGrade_Search(One, CourseHead);break;case 'b': case 'B'://查询学生重修课程system("cls");SearchPersonalFailCourse(One, CourseHead);break;case 'c':case'C'://个人学分查看PersonalCreadits_Search(One);break;case 'd':case'D'://个人课程查看PersonalCourse_Search(One, StudentHead, CourseHead);break;case 'e':case'E'://个人信息查看PersonalInformation_Search(One);break;case 'f':case 'F'://个人信息修改ModifyPersonalInformation(One);break;case 'g':case'G'://查看课程信息CourseInformation_View(CourseHead);break;case 'h':case'H'://选课中心PersonalCourse_Choose(One, StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;case 'i':case'I'://课程评价CourseEvaluation_Operate(CourseHead);break;case 'j':case'J'://课程评价查看CourseEvaluation_Search(CourseHead);break;case 'k':case'K'://学生个人账户密码修改StudentAccount_ChangePassword(UserStudentHead);break;case '@'://数据保存StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}
}//**************************************教师权限功能块**************************************//教师界面菜单
void Teacher_Begin() {cout << "————————————————————" << endl;cout << "|        请输入数字进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:学生成绩录入                |" << endl;cout << "|        b:学生成绩查看                |" << endl;cout << "|        c:查询学生重修课程            |" << endl;cout << "|        d:查询课程重修学生            |" << endl;cout << "|        e:学生个人信息查看            |" << endl;cout << "|        f:课程信息修改                |" << endl;cout << "|        g:查看选课信息          |" << endl;cout << "|        h:查看课程信息                |" << endl;cout << "|        i:查看课程评价                |" << endl;cout << "|        j:修改账户密码                |" << endl;cout << "|        @:保存数据                    |" << endl;cout << "|        #:退出程序                    |" << endl;cout << "————————————————————" << endl;
}
//教师界面输入
void Input_Teacher(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserTeacher UserTeacherHead, LinkUserAdministrator UserAdministratorHead, LinkUserStudent UserStudentHead) {char choose;while (1) {system("cls");cout << "————————————————————" << endl;cout << "当前学生总数:" << StudentHead->PersonalInformation.StudentNum << endl;cout << "当前课程总数:" << CourseHead->SubNum << endl;Teacher_Begin();cin >> choose;switch (choose) {case '#'://退出程序cout << "退出成功欢迎下次使用!" << endl;return;case 'a': case 'A'://学生成绩录入GradeInput(CourseHead, StudentHead);break;case 'b': case 'B'://学生成绩查看SearchCourse(StudentHead, CourseHead);break;case 'c': case 'C'://查询学生重修课程SearchFailCourse(CourseHead, StudentHead);break;case 'd': case 'D'://查询课程重修学生Search_CourseRetake(CourseHead, StudentHead);break;case 'e': case 'E'://学生个人信息查看SearchInformation(StudentHead);break;case 'F':case 'f'://课程信息修改ModifyCourse(CourseHead);break;case 'g':case 'G'://查看选课信息CourseSelection_view(CourseHead, StudentHead);break;case 'h':case'H'://查看课程信息CourseInformation_View(CourseHead);break;case 'i':case'I'://查看课程评价CourseEvaluation_Search(CourseHead);break;case 'j':case'J'://教师个人账户密码修改TeacherAccount_ChangePassword(UserTeacherHead);break;case '@'://保存(完成)StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}
}//**************************************学生信息基础功能块**************************************//添加学生个人
void PushStudent(LinkStudent StudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");LinkStudent std, p = StudentHead;std = new Student;//首先定义next要置空std->next = NULL;int Class;cout << "请输入该学生所在班级:" << endl;cin >> Class;//找到最后该班学号最后一个while (p->next->PersonalInformation.StudentNum < (100 * (Class + 1))) {p = p->next;if (p->next == NULL) {//如果到了尽头,即判断最后一个是否满足//如果不满足即不存在该班级if (p->PersonalInformation.StudentNum < (100 * Class)) {cout << "添加失败,该班级不存在!" << endl;system("pause");system("cls");return;}else {//满足就连接到链表末尾std->PersonalInformation.StudentNum = p->PersonalInformation.StudentNum + 1;//学生总数+1StudentHead->PersonalInformation.StudentNum++;printf("已设置该学生学号为: %04d\n", std->PersonalInformation.StudentNum);p->next = std;break;}}}//插入链表if (p->next != std) {std->PersonalInformation.StudentNum = p->PersonalInformation.StudentNum + 1;std->next = p->next;p->next = std;//学生总数+1StudentHead->PersonalInformation.StudentNum++;printf("已设置该学生学号为: %04d\n", std->PersonalInformation.StudentNum);}cout << "请填写该学生姓名(张三):" << endl;cout << "请填写该学生性别(男/女):" << endl;cout << "请填写该学生年龄:" << endl;cout << "请填写该学生宿舍地址(泰山区xx栋xxx):" << endl;cout << "请填写该学生手机号码:" << endl;cin >> std->PersonalInformation.StudentName;cin >> std->PersonalInformation.StudentSex;cin >> std->PersonalInformation.StudentAge;cin >> std->PersonalInformation.StudentDorm;cin >> std->PersonalInformation.StudentPhone;cout << "填写成功!记得保存信息哦!" << endl;system("pause");system("cls");
}//修改学生个人信息
LinkStudent ModifyStudent(LinkStudent StudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return StudentHead;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");LinkStudent p;cout << "请输入需要修改的学生学号" << endl;int studentNum;cin >> studentNum;if ((p = SearchStudent(studentNum, StudentHead)) == NULL)return StudentHead;while (1) {system("cls");cout << "————————————————————" << endl;cout << "|        请输入选项进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:学生名字                    |" << endl;cout << "|        b:学生性别                    |" << endl;cout << "|        c:学生年龄                    |" << endl;cout << "|        d:学生宿舍                    |" << endl;cout << "|        e:学生手机号码                |" << endl;cout << "————————————————————" << endl;char judge;cin >> judge;switch (judge){case'a':cin >> p->PersonalInformation.StudentName;cout << "修改成功!" << endl;system("pause");system("cls");return StudentHead;case'b':cin >> p->PersonalInformation.StudentSex;cout << "修改成功!" << endl;system("pause");system("cls");return StudentHead;case'c':cin >> p->PersonalInformation.StudentAge;cout << "修改成功!" << endl;system("pause");system("cls");return StudentHead;case'd':cin >> p->PersonalInformation.StudentDorm;cout << "修改成功!" << endl;system("pause");system("cls");return StudentHead;case'e':cin >> p->PersonalInformation.StudentPhone;cout << "修改成功!" << endl;system("pause");system("cls");return StudentHead;default:system("cls");cout << "请按格式正确输入!" << endl;break;}}
}//新建学生链表
LinkStudent CreateStudentList(LinkStudent StudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return StudentHead;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");int n;int ClassStdNum;cout << "请输入学生总数和每班人数" << endl;cin >> n >> ClassStdNum;LinkStudent q = StudentHead, p;//Student的头节点学号存放学生总数StudentHead->PersonalInformation.StudentNum = n;int num = 1, hundred = 100;for (int i = 1; i <= n; i++) {p = new Student;p->next = NULL;//学号直接初始化p->PersonalInformation.StudentNum = num + hundred;//将学生链表连接起来q->next = p;q = p;//如果num到达该班人数则num++;if (num > ClassStdNum) {num = 1;hundred += 100;}}cout << "学生信息初始化完成" << endl;system("pause");system("cls");return StudentHead;
}//存取学生链表数据
void StoreStudentList(LinkStudent StudentHead) {system("cls");cout << "正在存储学生数据" << endl;if (StudentHead->next == NULL) { cout << "该学生信息表不存在!" << endl; return; }LinkStudent p;p = StudentHead;FILE* fp = fopen(PATH1, "wb");if (fp == NULL) { cout << "储存文件失败!" << endl; return; }//写入时也要把头节点写进去while (p != NULL) {fwrite(p, sizeof(Student), 1, fp);p = p->next;}cout << "存储学生数据成功!" << endl;fclose(fp);fp = NULL;system("pause");system("cls");
}//删除学生函数
LinkStudent DeleteStudent(LinkStudent StudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return StudentHead;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");cout << "请输入要删除的学生学号" << endl;int StdNum;cin >> StdNum;LinkStudent q, p;q = p = StudentHead;while (p) {q = p;p = p->next;if (!p) {cout << "学号不存在!" << endl;system("pause");system("cls");//如果不存在返回NULL标志错误return NULL;}//如果找到该学号即返回pif (p->PersonalInformation.StudentNum == StdNum)break;}q->next = p->next;//p->next = NULL;//delete(p);  StudentHead->PersonalInformation.StudentNum--;cout << "删除成功!" << endl;system("pause");system("cls");return StudentHead;
}//学生个人信息查看
void SearchInformation(LinkStudent StudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");cout << "查看的学生学号是" << endl;int StdNum;cin >> StdNum;LinkStudent p;if ((p = SearchStudent(StdNum, StudentHead)) == NULL) {return;}cout << "该学生姓名:" << p->PersonalInformation.StudentName << endl;cout << "该学生性别:" << p->PersonalInformation.StudentSex << endl;cout << "该学生年龄:" << p->PersonalInformation.StudentAge << endl;cout << "该学生宿舍地址:" << p->PersonalInformation.StudentDorm << endl;cout << "该学生手机号码:" << p->PersonalInformation.StudentPhone << endl;system("pause");system("cls");
}//学生个人信息录入
LinkStudent PnInformation(LinkStudent StudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return StudentHead;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");int StdNum;cout << "请输入录入个人信息的学生学号" << endl;cin >> StdNum;LinkStudent p;if ((p = SearchStudent(StdNum, StudentHead)) == NULL) {return StudentHead;}cout << "请填写该学生姓名(张三):" << endl;cout << "请填写该学生性别(男/女):" << endl;cout << "请填写该学生年龄:" << endl;cout << "请填写该学生宿舍地址(泰山区xx栋xxx):" << endl;cout << "请填写该学生手机号码:" << endl;cin >> p->PersonalInformation.StudentName;cin >> p->PersonalInformation.StudentSex;cin >> p->PersonalInformation.StudentAge;cin >> p->PersonalInformation.StudentDorm;cin >> p->PersonalInformation.StudentPhone;cout << "填写成功!记得保存信息哦!" << endl;system("pause");system("cls");return StudentHead;
}
//**************************************课程基础功能块**************************************//学生课程链表初始化,设置课程数量且将学号录入
LinkCourse InitCourse(LinkCourse CourseHead, LinkStudent StudentHead) {system("cls");cout << "您是否要进行课程初始化?(Y/N)" << endl;cout << "课程初始化前一定要设置好学生名单哦!" << endl;char judge;cin >> judge;if (judge == 'N' || judge == 'n')return CourseHead;system("cls");cout << "请输入开设课程数量:" << endl;int Num;cin >> Num;//课程头节点存放课程数量CourseHead->SubNum = Num;LinkCourse p2, p1;p2 = CourseHead;system("cls");for (int i = 1; i <= Num; i++) {p1 = new Course;p1->next = NULL;p1->SubNum = i;cout << "系统已分配课程编号为  " << p1->SubNum << endl;cout << "请设置开设课程编号名称:  " << endl;cin >> p1->SubName;cout << "请设置该课程的学分:  " << endl;cin >> p1->SubCredits;p2->next = p1;p2 = p1;system("cls");}p2 = CourseHead->next;LinkStudent ps = StudentHead->next;int n = StudentHead->PersonalInformation.StudentNum;int i = 0;while (p2) {while (ps) {p2->Grade[i].StudentNum = ps->PersonalInformation.StudentNum;ps = ps->next;i++;}ps = StudentHead->next;p2 = p2->next;i = 0;}cout << "课程初始化成功!" << endl;system("pause");system("cls");return CourseHead;
}//添加课程
void AddCourse(LinkCourse CourseHead, LinkStudent StudentHead) {system("cls");char Judge;int Flag = 0;while (1) {cout << "是否要进行操作?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");LinkCourse newcourse = new Course;newcourse->next = NULL;LinkCourse p = SearchCourseID(CourseHead->SubNum, CourseHead);p->next = newcourse;CourseHead->SubNum++;newcourse->SubNum = CourseHead->SubNum;cout << "已分配该课程编号为: " << CourseHead->SubNum << endl;cout << "————————————————————" << endl;cout << "请输入添加课程的名字:" << endl;cin >> newcourse->SubName;cout << "请输入添加课程的学分:" << endl;cin >> newcourse->SubCredits;cout << "请输入添加课程的任课老师:" << endl;cin >> newcourse->Teacher;cout << "请输入添加课程的任课地点:" << endl;cin >> newcourse->Position;cout << "请输入添加课程的任课时间:" << endl;cin >> newcourse->Time;//分配成绩的学号LinkStudent ps = StudentHead;int i = 0;while (ps) {newcourse->Grade[i].StudentNum = ps->PersonalInformation.StudentNum;ps = ps->next;i++;}cout << "添加成功!" << endl;system("pause");system("cls");
}//删除课程函数
LinkCourse DeleteCoursse(LinkCourse CourseHead) {LinkCourse q, p;q = p = CourseHead;system("cls");cout << "您想要通过什么方式找到课程?" << endl;cout << "a:课程关键词搜索" << endl;cout << "b:课程编号搜索" << endl;cout << "#:返回上一层" << endl;char judge;int id;int flag = 0;while (1) {cin >> judge;switch (judge){case'a':p = SearchCourse_byword(CourseHead);if (p == NULL)return NULL;id = p->SubNum;p = SearchCourseID(id, CourseHead);while (q->next != p) {q = q->next;}flag = 1;break;case'b':cout << "请输入要删除的课程编号" << endl;int SubNum;cin >> SubNum;LinkCourse q, p;q = p = CourseHead;while (p) {q = p;p = p->next;if (!p) {cout << "编号不存在!" << endl;system("pause");system("cls");//如果不存在返回NULL标志错误return NULL;}//如果找到该编号即返回pif (p->SubNum == SubNum)break;}flag = 1;break;case'#':return CourseHead;default:cout << "请正确输入!" << endl;break;}if (flag == 1)break;}q->next = p->next;p = q->next;//重新按序排序课程编号int subnum;if (q == CourseHead) {subnum = 1;}else {subnum = q->SubNum + 1;}while (p) {p->SubNum = subnum++;p = p->next;}//删除后课程数量-1CourseHead->SubNum--;cout << "删除成功!" << endl;system("pause");system("cls");return CourseHead;
}//修改课程信息
void ModifyCourse(LinkCourse CourseHead) {LinkCourse p = CourseHead;int flag = 0, id;char judge;while(1){system("cls");cout << "您想要通过什么方式找到课程?" << endl;cout << "a:课程关键词搜索" << endl;cout << "b:课程编号搜索" << endl;cout << "#:返回上一层" << endl;cin >> judge;switch (judge){case'#':return;case'a':case'A':p = SearchCourse_byword(CourseHead);if (p == NULL)return;id = p->SubNum;p = SearchCourseID(id, CourseHead);flag = 1;break;case'b':case'B':system("cls");cout << "请输入查看的课程编号:" << endl;int coursenum;cin >> coursenum;p = SearchCourseID(coursenum, CourseHead);if (p == NULL)return;flag = 1;break;default:cout << "请正确输入!" << endl;break;}if (flag == 1)break;
}while (1) {cout << "————————————————————" << endl;cout << "编号为" << p->SubNum << "的课程:" << endl;cout << "课程名称:" << p->SubName << endl;cout << "课程学分:" << p->SubCredits << endl;cout << "任课老师:" << p->Teacher << endl;cout << "任课地点:" << p->Position << endl;cout << "任课时间:" << p->Time << endl;system("pause");system("cls");cout << "编号为" << p->SubNum << "的课程:" << endl;cout << "请选择需要修改的信息:" << endl;cout << "————————————————————" << endl;cout << "a:课程名称" << endl;cout << "b:课程学分:" << endl;cout << "c:任课老师:" << endl;cout << "d:任课地点:" << endl;cout << "e:任课时间:" << endl;cin >> judge;switch (judge){case'a':cout << "请输入课程名称" << endl;cin >> p->SubName;cout << "修改成功!记得保存信息哦!" << endl;system("pause");system("cls");return;case'b':cout << "请输入课程学分" << endl;cin >> p->SubCredits;cout << "修改成功!记得保存信息哦!" << endl;system("pause");system("cls");return;case'c':cout << "请输入任课老师" << endl;cin >> p->Teacher;cout << "修改成功!记得保存信息哦!" << endl;system("pause");system("cls");return;case'd':cout << "请输入任课地点" << endl;cin >> p->Position;cout << "修改成功!记得保存信息哦!" << endl;system("pause");system("cls");return;case'e':cout << "请输入任课时间" << endl;cin >> p->Time;cout << "修改成功!记得保存信息哦!" << endl;system("pause");system("cls");return;default:cout << "请正确输入!" << endl;system("pause");system("cls");break;}}
}//课程评价
void CourseEvaluation_Operate(LinkCourse CourseHead) {LinkCourse p = CourseHead;int flag=0, id;char judge;while (1) {system("cls");cout << "您想要通过什么方式找到课程?" << endl;cout << "a:课程关键词搜索" << endl;cout << "b:课程编号搜索" << endl;cout << "#:返回上一层" << endl;cin >> judge;switch (judge){case'#':return;case'a':case'A':p = SearchCourse_byword(CourseHead);if (p == NULL)return;id = p->SubNum;p = SearchCourseID(id, CourseHead);flag = 1;break;case'b':case'B':system("cls");cout << "请输入查看的课程编号:" << endl;int coursenum;cin >> coursenum;p = SearchCourseID(coursenum, CourseHead);if (p == NULL)return;flag = 1;break;default:cout << "请正确输入!" << endl;system("pause");break;}if (flag == 1)break;}cout << "————————————————————" << endl;cout << "编号为" << p->SubNum << "的课程:" << endl;cout << "课程名称:" << p->SubName << endl;cout << "课程学分:" << p->SubCredits << endl;cout << "任课老师:" << p->Teacher << endl;cout << "任课地点:" << p->Position << endl;cout << "任课时间:" << p->Time << endl;system("pause");system("cls");cout << "请输入您的评价:" << endl;cout << "————————————————————" << endl;int i = 0;while (p->Evaluation[i][0]!='\0') {i++;if (i == 10) {break;}}if (i == 10) {cout << "评价已满!" << endl;system("pause");return;}cin >> p->Evaluation[i];cout << "感谢您的评价!" << endl;system("pause");}//课程评价查看
void CourseEvaluation_Search(LinkCourse CourseHead) {LinkCourse p = CourseHead;system("cls");cout << "您想要通过什么方式找到课程?" << endl;cout << "a:课程关键词搜索" << endl;cout << "b:课程编号搜索" << endl;cout << "#:返回上一层" << endl;char judge;int id;int flag = 0;while (1) {cin >> judge;switch (judge){case'#':return;case'a':case'A':p = SearchCourse_byword(CourseHead);if (p == NULL)return;id = p->SubNum;p = SearchCourseID(id, CourseHead);flag = 1;break;case'b':case'B':system("cls");cout << "请输入查看的课程编号:" << endl;int coursenum;cin >> coursenum;p = SearchCourseID(coursenum, CourseHead);if (p == NULL)return;flag = 1;break;default:cout << "请正确输入!" << endl;system("pause");break;}if (flag == 1)break;}cout << "————————————————————" << endl;cout << "编号为" << p->SubNum << "的课程:" << endl;cout << "课程名称:" << p->SubName << endl;cout << "课程学分:" << p->SubCredits << endl;cout << "任课老师:" << p->Teacher << endl;cout << "任课地点:" << p->Position << endl;cout << "任课时间:" << p->Time << endl;cout << "————————————————————" << endl;cout << "课程评价:" << endl;int i = 1;while (p->Evaluation[i][0]!= '\0') {cout << p->Evaluation[i] << endl;;cout << "————————————————————" << endl;i++;}system("pause");
}//按班级录入选课信息
LinkCourse CourseSelection_entry(LinkCourse CourseHead) {int i, j;LinkCourse p;p = GetCourse(CourseHead);if (p == NULL) { return CourseHead; }cout << "请输入录入选课的班级: " << endl;cin >> i;i *= 100;j = 0;while (p->Grade[j].StudentNum < i) {j++;}while (p->Grade[j].StudentNum > i && p->Grade[j].StudentNum < i + 100) {int select;while (1) {cout << "学号: " << p->Grade[j].StudentNum << endl;cout << "该学生是否选择课程,1为选择,0为未选择" << endl;cin >> select;if (select == 1) {if (p->Grade[j].Judge == 1) {cout << "该学生已选课" << endl;break;}else {if (p->Capacity > 60) {cout << "当前课程容量已满!" << endl;system("pause");break;}p->Grade[j].Judge = 1;p->Capacity++;cout << "选课成功!" << endl;system("pause");break;}}else if (select == 0) {if (p->Grade[j].Judge == 1) {cout << "该学生将退选课程!" << endl;p->Grade[j].Judge = 0;p->Capacity--;system("pause");break;}break;}else {cout << "请正确输入!" << endl;}}j++;}cout << "输入成功!" << endl;system("pause");system("cls");return CourseHead;
}//查询选课情况
void CourseSelection_view(LinkCourse CourseHead, LinkStudent StudentHead) {system("cls");char judge;int j=0,num = StudentHead->PersonalInformation.StudentNum;LinkCourse p;LinkStudent One;int StudentNum;while (1) {cout << "请选择查询模式" << endl;cout << "a.查询课程选课的学生" << endl;cout << "b.查询学生的选课情况" << endl;cout << "#.返回上一层" << endl;cin >> judge;int flag = 0;switch (judge) {case'a':case'A':p = GetCourse(CourseHead);if (p == NULL)return;cout << "————————————————————" << endl;while (num--) {if (p->Grade[j].Judge == 1) {cout << "学号: " << p->Grade[j].StudentNum << endl;One = SearchStudent(p->Grade[j].StudentNum, StudentHead);cout << "姓名: " << One->PersonalInformation.StudentName << endl;cout << "————————————————————" << endl;}j++;}system("pause");system("cls");flag = 1;return;case'b':case'B'://查询学生的选课情况SearchStudentCourse(CourseHead, StudentHead);return;case'#':return;default:break;}if (flag == 1)break;}return;
}//查询学生的选课情况
void SearchStudentCourse(LinkCourse CourseHead, LinkStudent StudentHead) {system("cls");char judge;int j = 0, num = StudentHead->PersonalInformation.StudentNum;LinkCourse p;LinkStudent One;int StudentNum;while (1) {cout << "请选择查询模式" << endl;cout << "a.按班查询学生选课情况" << endl;cout << "b.查询学生个人选课情况" << endl;cout << "#.返回上一层" << endl;cin >> judge;int flag = 0;switch (judge) {case'a':case'A':SearchClassCourse(StudentHead, CourseHead);return;case'b':case'B':system("cls");int StdNum;cout << "请输入查询的学生学号: " << endl;cin >> StdNum;One = SearchStudent(StdNum, StudentHead);if (One == NULL)return;PersonalCourse_Search(One, StudentHead, CourseHead);return;case'#':return;default:break;}if (flag == 1)break;}
}//查看课程信息
void CourseInformation_View(LinkCourse CourseHead) {LinkCourse p = CourseHead;system("cls");cout << "您想要通过什么方式找到课程?" << endl;cout << "a:课程关键词搜索" << endl;cout << "b:课程编号搜索" << endl;cout << "#:返回上一层" << endl;char judge;int id;cin >> judge;switch (judge){case'a':case'A':p = SearchCourse_byword(CourseHead);if (p == NULL)return;id = p->SubNum;p = SearchCourseID(id, CourseHead);break;case'b':case'B':system("cls");cout << "请输入查看的课程编号:" << endl;int coursenum;cin >> coursenum;p = SearchCourseID(coursenum, CourseHead);if (p == NULL)return;break;case'#':return;default:cout << "请正确输入!" << endl;break;}cout << "————————————————————" << endl;cout << "编号为" << p->SubNum << "的课程:" << endl;cout << "课程名称:" << p->SubName << endl;cout << "课程学分:" << p->SubCredits << endl;cout << "任课老师:" << p->Teacher << endl;cout << "任课地点:" << p->Position << endl;cout << "任课时间:" << p->Time << endl;cout << "课程容量: " << p->Capacity << "/60" << endl;system("pause");system("cls");}//通过编号查看课程信息
void searchcourse(LinkCourse coursehead) {system("cls");cout << "请输入查看的课程编号:" << endl;int coursenum;cin >> coursenum;LinkCourse p;p = SearchCourseID(coursenum, coursehead);if (p == NULL)return;cout << "编号为" << coursenum << "的课程:" << endl;cout << "课程名称:" << p->SubName << endl;cout << "课程学分:" << p->SubCredits << endl;system("pause");system("cls");
}//存取课程链表数据(完成)
void StoreCourseList(LinkCourse CourseHead) {cout << "正在存储课程数据" << endl;if (CourseHead->next == NULL) { cout << "课程信息表不存在!" << endl; return; }LinkCourse p;p = CourseHead;FILE* fp = fopen(PATH2, "wb");if (fp == NULL) { cout << "储存文件失败!" << endl; return; }//写入时也要把头节点写进去while (p != NULL) {fwrite(p, sizeof(Course), 1, fp);p = p->next;}cout << "存储课程数据成功!" << endl;fclose(fp);fp = NULL;system("pause");system("cls");
}//学生课程成绩录入
void GradeInput(LinkCourse CourseHead, LinkStudent StudentHead) {LinkCourse p = CourseHead;char judge;int id;int flag = 0;while (1) {system("cls");cout << "您想要通过什么方式录入成绩?" << endl;cout << "a:按课程对全部选课学生进行录入" << endl;cout << "b:按课程对个别选课学生进行录入" << endl;cout << "#:返回上一层" << endl;cin >> judge;switch (judge){case'a':case 'A'://按课程对全部选课学生进行录入GradeInput_ThroughCourse(CourseHead, StudentHead);return;case'b':case 'B':flag = 1;break;case'#':return;default:cout << "请正确输入!" << endl;system("pause");system("cls");}if (flag == 1)break;}system("cls");flag = 0;while (1) {cout << "您想要通过什么方式找到课程?" << endl;cout << "a:课程关键词搜索" << endl;cout << "b:课程编号搜索" << endl;cin >> judge;switch (judge){case'a':p = SearchCourse_byword(CourseHead);if (p == NULL)break;id = p->SubNum;p = SearchCourseID(id, CourseHead);flag = 1;break;case'b':system("cls");cout << "请输入查看的课程编号:" << endl;cin >> id;p = SearchCourseID(id, CourseHead);if (p == NULL)return;system("cls");flag = 1;break;default:cout << "请正确输入!" << endl;system("pause");system("cls");}if (flag == 1)break;}cout << "您正在查看的课程: " << p->SubName << endl;cout << "请输入要操作课程的学生学号" << endl;int StudentNum;cin >> StudentNum;int i = 0;LinkStudent Student = SearchStudent(StudentNum, StudentHead);//学号不存在if (Student == NULL)return;while (p->Grade[i].StudentNum != StudentNum) {i++;if (i == StudentHead->PersonalInformation.StudentNum) {cout << "学号不存在!" << endl;system("pause");return;}}if (p->Grade[i].Judge == 0) {cout << "该学生未选课!" << endl;system("pause");return;}if (p->Grade[i].TotalGrade != 0) {system("cls");char Judge;int Flag = 0;while (1) {cout << "该学生成绩已录入!" << endl;cout << "该学生成绩是否需要重新录入?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':return;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}system("cls");}cout << "学号: " << p->Grade[i].StudentNum << endl;Student = SearchStudent(p->Grade[i].StudentNum, StudentHead);cout << "姓名: " << Student->PersonalInformation.StudentName << endl;cout << "平时成绩: " << endl;cin >> p->Grade[i].OrdinaryGrade;cout << "考试成绩: " << endl;cin >> p->Grade[i].TestGrade;p->Grade[i].TotalGrade = p->Grade[i].OrdinaryGrade * 0.4 + p->Grade[i].TestGrade * 0.6;if (p->Grade[i].TestGrade < 60) {p->Grade[i].Retake = 1;}else {if (p->Grade[i].Retake != 0) {p->Grade[i].TotalGrade = 60;}Student->StudentCredits += p->SubCredits;}cout << "学生成绩输入完成" << endl;system("pause");system("cls");
}//学生学分查询
void Creadits_Search(LinkStudent StudentHead) {char judge;int i, j;LinkStudent One = StudentHead;int flag;while (1) {system("cls");cout << "请选择查询成绩功能" << endl;cout << "a.按班统计学生学分" << endl;cout << "b.按学生学号查询学分" << endl;cout << "#:返回上一层" << endl;cin >> judge;switch (judge){case'a':system("cls");cout << "请输入查询学分的班级: " << endl;cin >> i;i *= 100;while (One->PersonalInformation.StudentNum < i) {One = One->next;}while (One->PersonalInformation.StudentNum > i && One->PersonalInformation.StudentNum < i + 100) {cout << "学号: " << One->PersonalInformation.StudentNum << endl;cout << "学分: " << One->StudentCredits << endl;cout << "***************************************************************" << endl;One = One->next;}system("pause");system("cls");return;case'b':cout << "查看的学生学号是" << endl;int StdNum;cin >> StdNum;One = SearchStudent(StdNum, StudentHead);if (One == NULL)return;cout << "学号: " << One->PersonalInformation.StudentNum << endl;cout << "学分: " << One->StudentCredits << endl;cout << "***************************************************************" << endl;system("pause");system("cls");return;case'#':return;default:cout << "请重新输入!" << endl;system("pause");break;}}
};//查询课程重修
void Search_CourseRetake(LinkCourse CourseHead, LinkStudent StudentHead) {system("cls");char judge;int flag = 0;LinkCourse copyhead = NULL, p = NULL;int id, i;while (1) {cout << "请选择查询课程功能" << endl;cout << "a.按关键词搜索课程" << endl;cout << "b.按编号搜索课程" << endl;cout << "#:返回上一层" << endl;cin >> judge;switch (judge){case'a':case'A':p = SearchCourse_byword(CourseHead);if (p == NULL)return;id = p->SubNum;p = SearchCourseID(id, CourseHead);flag = 1;break;case'b':case'B':cout << "查看的课程编号是" << endl;int SubNum;cin >> SubNum;p = SearchCourseID(SubNum, CourseHead);if (p == NULL)  return;id = p->SubNum;p = SearchCourseID(id, CourseHead);flag = 1;break;case'#':return;default:cout << "请重新输入!" << endl;system("pause");system("cls");break;}if (flag == 1)break;}system("cls");cout << "课程是: " << endl;cout << "课程名称: " << p->SubName << endl;cout << "课程学分: " << p->SubCredits << endl;cout << "————————————————————" << endl;LinkStudent q;for (i = 0; i < StudentHead->PersonalInformation.StudentNum; i++) {if (p->Grade[i].Judge == 1 && p->Grade[i].Retake > 0) {cout << "学号: " << p->Grade[i].StudentNum << endl;q = SearchStudent(p->Grade[i].StudentNum, StudentHead);cout << "姓名: " << q->PersonalInformation.StudentName << endl;cout << "重修次数" << p->Grade[i].Retake << endl;cout << "平时成绩: " << p->Grade[i].OrdinaryGrade << endl;cout << "考试成绩: " << p->Grade[i].TestGrade << endl;;cout << "综合成绩: " << p->Grade[i].TotalGrade << endl;;cout << "————————————————————" << endl;}}system("pause");system("cls");};//按课程录入学生考试成绩。
void GradeInput_ThroughCourse(LinkCourse CourseHead, LinkStudent StudentHead) {char judge;LinkCourse copyhead = NULL, p = NULL;int id, i,flag=0;while (1) {system("cls");cout << "请选择查询课程功能" << endl;cout << "a.按关键词搜索课程" << endl;cout << "b.按编号搜索课程" << endl;cin >> judge;switch (judge){case'b':case'B':cout << "查看的课程编号是" << endl;cin >> id;p = SearchCourseID(id, CourseHead);if (p == NULL)  return;flag = 1;break;case'a':case'A':p = SearchCourse_byword(CourseHead);if (p == NULL)return;id = p->SubNum;p = SearchCourseID(id, CourseHead);flag = 1;break;default:break;}if (flag == 1)break;}cout << "课程名称: " << p->SubName << endl;cout << "课程学分: " << p->SubCredits << endl;cout << "————————————————————" << endl;system("pause");system("cls");LinkStudent q;int nxt = 0;cout << "请依次对选课学生成绩进行填写" << endl;for (i = 0; i < StudentHead->PersonalInformation.StudentNum; i++) {if (p->Grade[i].Judge == 1) {cout << "学号: " << p->Grade[i].StudentNum << endl;q = SearchStudent(p->Grade[i].StudentNum, StudentHead);cout << "姓名: " << q->PersonalInformation.StudentName << endl;if (p->Grade[i].TotalGrade != 0) {char Judge;int Flag = 0;while (1) {cout << "该学生成绩已录入!" << endl;cout << "该学生成绩是否需要重新录入?(Y/N)" << endl;cin >> Judge;switch (Judge){case 'Y':case 'y':Flag = 1;break;case 'N':case 'n':nxt = 1;Flag = 1;break;default:cout << "请重新输入!" << endl;system("pause");break;}if (Flag == 1)break;}if (nxt) {nxt = 0;system("cls");continue;}system("cls");}else {cout << "平时成绩: " << endl;cin >> p->Grade[i].OrdinaryGrade;cout << "考试成绩: " << endl;cin >> p->Grade[i].TestGrade;p->Grade[i].TotalGrade = p->Grade[i].OrdinaryGrade * 0.4 + p->Grade[i].TestGrade * 0.6;}if (p->Grade[i].TestGrade < 60) {p->Grade[i].Retake = 1;}else {if (p->Grade[i].Retake != 0) {p->Grade[i].TotalGrade = 60;}q->StudentCredits += p->SubCredits;}cout << "学生成绩输入完成" << endl;cout << "————————————————————" << endl;}}system("pause");system("cls");
};//获取该课课程评价
void GetCourseEvaluation(LinkCourse Course) {int i = 0;cout << "————————————————————" << endl;cout << "|                课程评价              |" << endl;cout << "|———————————————————|" << endl;while (strlen(Course->Evaluation[i]) > 0) {cout << i + 1 << "." << Course->Evaluation[i] << endl;cout << "|———————————————————|" << endl;i++;}
}//读取课程数据函数
LinkCourse ReadCourseList(LinkStudent StudentHead) {cout << "正在读取课程数据!" << endl;LinkCourse p1, p2, CourseHead = new Course;p2 = CourseHead;CourseHead->next = NULL;FILE* fp = fopen(PATH2, "rb");if (fp == NULL) {cout << "数据文件不存在!" << endl;cout << "将为您初始化,请根据信息进行输入!" << endl;system("pause");CourseHead = InitCourse(CourseHead, StudentHead);return CourseHead;}//读取时先读取第一个头节点fread(CourseHead, sizeof(*CourseHead), 1, fp);p1 = new Course;int i = 0;while ((fread(p1, sizeof(*p1), 1, fp)) == 1) {i++;p1->next = NULL;p2->next = p1;p2 = p1;p1 = new Course;}if (i == 0) { cout << "空文件!" << endl; return CourseHead; }delete(p1);fclose(fp);cout << "读取文件数据成功!" << endl;system("pause");system("cls");return CourseHead;
}//菜单
void Begin() {cout << "————————————————————" << endl;cout << "|        请输入数字进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:成绩系统                    |" << endl;cout << "|        b:课程系统                    |" << endl;cout << "|        c:信息系统                    |" << endl;cout << "|        d:账号系统                    |" << endl;cout << "|        e:初始化                      |" << endl;cout << "|        @:数据保存                    |" << endl;cout << "|        #:退出程序                    |" << endl;cout << "————————————————————" << endl;
}
//成绩系统菜单
void GradeSystem_Begin(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {char choose;while (1) {system("cls");cout << "————————————————————" << endl;cout << "当前学生总数:" << StudentHead->PersonalInformation.StudentNum << endl;cout << "当前课程总数:" << CourseHead->SubNum << endl;cout << "————————————————————" << endl;cout << "|        请输入数字进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:学生成绩录入                |" << endl;cout << "|        b:学生成绩查询                |" << endl;cout << "|        c:查询课程重修学生            |" << endl;cout << "|        d:查询学生不及格课程          |" << endl;cout << "|        e:查询学生学分                |" << endl;cout << "|        @:数据保存                    |" << endl;cout << "|        #:返回上一层                  |" << endl;cout << "————————————————————" << endl;cin >> choose;switch (choose) {case '#'://返回上一层return;case 'a': case 'A'://学生成绩录入GradeInput(CourseHead, StudentHead);break;case 'b': case 'B'://学生成绩查看SearchCourse(StudentHead, CourseHead);break;case 'c': case 'C'://查询课程重修学生Search_CourseRetake(CourseHead, StudentHead);break;case 'd': case 'D'://查询学生不及格课程system("cls");cout << "请输入查询的学生学号: " << endl;int StdNum;cin >> StdNum;LinkStudent One;One = SearchStudent(StdNum, StudentHead);if (One == NULL)return;SearchPersonalFailCourse(One, CourseHead);break;case 'e': case 'E'://查询学分Creadits_Search(StudentHead);break;case '@'://保存数据StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}
}//课程系统菜单
void CourseSystem_Begin(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {char choose;while (1) {system("cls");cout << "————————————————————" << endl;cout << "当前学生总数:" << StudentHead->PersonalInformation.StudentNum << endl;cout << "当前课程总数:" << CourseHead->SubNum << endl;cout << "————————————————————" << endl;cout << "|        请输入数字进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:课程初始化                  |" << endl;cout << "|        b:修改课程信息                |" << endl;cout << "|        c:添加课程                    |" << endl;cout << "|        d:删除课程                    |" << endl;cout << "|        e:按班级录入选课信息          |" << endl;cout << "|        f:查询选课情况                |" << endl;cout << "|        g:查询课程信息                |" << endl;cout << "|        h:课程重修查看                |" << endl;cout << "|        i:课程评价                    |" << endl;cout << "|        j:课程评价查看                |" << endl;cout << "|        @:数据保存                    |" << endl;cout << "|        #:返回上一层                  |" << endl;cout << "————————————————————" << endl;cin >> choose;switch (choose) {case '#'://返回上一层return;case 'a': case 'A'://课程初始化InitCourse(CourseHead, StudentHead);break;case 'b': case 'B'://修改课程ModifyCourse(CourseHead);break;case'c':case'C'://添加课程AddCourse(CourseHead, StudentHead);break;case'd':case'D'://删除课程函数DeleteCoursse(CourseHead);break;case'e':case'E'://按班级录入选课信息CourseSelection_entry(CourseHead);break;case'f':case'F'://选课信息查看CourseSelection_view(CourseHead, StudentHead);break;case'g':case'G'://查看课程信息CourseInformation_View(CourseHead);break;case'h':case'H'://课程重修查看Search_CourseRetake(CourseHead, StudentHead);break;case'i':case'I'://课程评价CourseEvaluation_Operate(CourseHead);break;case'j':case'J'://课程评价查看CourseEvaluation_Search(CourseHead);break;case '@'://保存数据StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}
}//信息系统菜单
void InformationSystem_Begin(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {char choose;while (1) {system("cls");cout << "————————————————————" << endl;cout << "当前学生总数:" << StudentHead->PersonalInformation.StudentNum << endl;cout << "当前课程总数:" << CourseHead->SubNum << endl;cout << "————————————————————" << endl;cout << "|        请输入数字进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:学生个人信息录入            |" << endl;cout << "|        b:学生个人信息查看            |" << endl;cout << "|        c:学生个人添加                |" << endl;cout << "|        d:学生个人删除                |" << endl;cout << "|        e:学生个人修改                |" << endl;cout << "|        @:数据保存                    |" << endl;cout << "|        #:返回上一层                  |" << endl;cout << "————————————————————" << endl;cin >> choose;switch (choose) {case '#'://返回上一层return;case 'a': case 'A'://学生个人信息录入StudentHead = PnInformation(StudentHead);break;case 'b': case 'B'://学生个人信息查看SearchInformation(StudentHead);break;case'c':case 'C'://学生个人添加PushStudent(StudentHead);break;case'd':case 'D'://学生个人删除DeleteStudent(StudentHead);break;case'e':case 'E'://学生个人修改ModifyStudent(StudentHead);break;case '@'://保存数据StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}
}//帐号系统菜单
void AccountSystem_Begin(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {char choose;while (1) {system("cls");cout << "————————————————————" << endl;cout << "当前学生总数:" << StudentHead->PersonalInformation.StudentNum << endl;cout << "当前课程总数:" << CourseHead->SubNum << endl;cout << "————————————————————" << endl;cout << "|        请输入数字进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:读取账号                    |" << endl;cout << "|        b:添加管理员帐号              |" << endl;cout << "|        c:添加教师账号                |" << endl;cout << "|        d:添加学生账号                |" << endl;cout << "|        e:删除账号                    |" << endl;cout << "|        f:修改密码                    |" << endl;cout << "|        @:数据保存                    |" << endl;cout << "|        #:返回上一层                  |" << endl;cout << "————————————————————" << endl;cin >> choose;switch (choose) {case '#'://返回上一层return;case'a':case'A'://读取账号UserStudentHead = Student_AccountRead(UserStudentHead);UserTeacherHead = Teacher_AccountRead(UserTeacherHead);UserAdministratorHead = Administrator_AccountRead(UserAdministratorHead);return;case'b':case'B'://录入管理员账号EntryAdministrator(UserAdministratorHead);return;case'c':case'C'://录入教师账号EntryTeacher(UserTeacherHead);return;case'd':case'D'://录入学生账号EntryStudent(UserStudentHead);return;case'e':case'E'://删除账号AccountSystem_Delete(UserAdministratorHead, UserTeacherHead, UserStudentHead);return;case'f':case'F'://修改密码Account_ChangePassword(UserAdministratorHead, UserTeacherHead, UserStudentHead);return;case '@'://保存数据StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);return;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}
}//初始化菜单
void Initialization(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {system("cls");char choose;while (1) {cout << "————————————————————" << endl;cout << "当前学生总数:" << StudentHead->PersonalInformation.StudentNum << endl;cout << "当前课程总数:" << CourseHead->SubNum << endl;cout << "————————————————————" << endl;cout << "|        请输入数字进行操作            |" << endl;cout << "|———————————————————|" << endl;cout << "|        a:初始化学生数据              |" << endl;cout << "|        b:初始化课程数据              |" << endl;cout << "|        @:保存数据                    |" << endl;cout << "|        #:返回上一层                  |" << endl;cout << "————————————————————" << endl;cin >> choose;switch (choose) {case '#'://返回上一层return;case 'a': case 'A'://初始化学生信息StudentHead = CreateStudentList(StudentHead);break;case'b':case 'B'://课程初始化InitCourse(CourseHead, StudentHead);break;case '@'://保存数据StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}
}//读取学生文件数据函数
LinkStudent ReadStudentList() {cout << "正在读取学生数据!" << endl;LinkStudent p1, p2, StudentHead = new Student;p2 = StudentHead;StudentHead->next = NULL;FILE* fp = fopen(PATH1, "rb");if (fp == NULL) {cout << "数据文件不存在!" << endl;cout << "将为您初始化,请根据信息进行输入!" << endl;StudentHead = CreateStudentList(StudentHead);return StudentHead;}//读取时先读取第一个头节点fread(StudentHead, sizeof(*StudentHead), 1, fp);p1 = new Student;int i = 0;while ((fread(p1, sizeof(*p1), 1, fp)) == 1) {i++;p1->next = NULL;p2->next = p1;p2 = p1;p1 = new Student;}if (i == 0) { cout << "空文件!" << endl; return StudentHead; }delete(p1);fclose(fp);cout << "读取文件数据成功!" << endl;system("pause");system("cls");return StudentHead;
}//查询一个班级的成绩
void SearchClassGrade(LinkStudent StudentHead, LinkCourse CourseHead) {system("cls");cout << "您想要查看哪一班级的成绩?" << endl;int Class;cin >> Class;Class *= 100;int AllStdNum = StudentHead->PersonalInformation.StudentNum;LinkStudent One, p = StudentHead->next;while (p) {if (p->PersonalInformation.StudentNum > Class) {break;}p = p->next;}for (int i = 0; i < AllStdNum; i++) {if (p->PersonalInformation.StudentNum > Class + 100)break;PersonalGrade_Search(p, CourseHead);p = p->next;}
}//查询一个班级的选课情况
void SearchClassCourse(LinkStudent StudentHead, LinkCourse CourseHead) {system("cls");cout << "您想要查看哪一班级的选课情况?" << endl;int Class;cin >> Class;Class *= 100;int AllStdNum = StudentHead->PersonalInformation.StudentNum;LinkStudent p = StudentHead->next;while (p) {if (p->PersonalInformation.StudentNum > Class) {break;}p = p->next;}for (int i = 0; i < AllStdNum; i++) {if (p->PersonalInformation.StudentNum > Class + 100)break;PersonalCourse_Search(p,StudentHead,CourseHead);p = p->next;}
}//查询成绩
void SearchCourse(LinkStudent StudentHead, LinkCourse CourseHead) {char judge;char name[20];int tnum, num;int length;int i, j, id;LinkCourse copyhead = NULL, p = NULL;LinkStudent One;int flag = 0;while (1) {system("cls");cout << "您想要通过什么方式查看成绩?" << endl;cout << "a:查看学生个人所有课程成绩" << endl;cout << "b:按课程查看全部选课学生成绩" << endl;cout << "c:按班级查看学生成绩" << endl;cout << "#:返回上一层" << endl;cin >> judge;switch (judge){case'a':case 'A'://查看学生个人所有课程成绩system("cls");int StdNum;cout << "请输入查询的学生学号: " << endl;cin >> StdNum;One = SearchStudent(StdNum, StudentHead);if (One == NULL)return;PersonalGrade_Search(One, CourseHead);return;case'b':case 'B':while (1) {system("cls");cout << "请选择查询课程功能" << endl;cout << "a.按关键词搜索课程" << endl;cout << "b.按编号搜索课程" << endl;cin >> judge;switch (judge){case'b':cout << "查看的课程编号是" << endl;int SubNum;cin >> SubNum;p = SearchCourseID(SubNum, CourseHead);if (p == NULL) { return; }flag = 1;break;case'a':p = SearchCourse_byword(CourseHead);if (p == NULL)break;id = p->SubNum;p = SearchCourseID(id, CourseHead);flag = 1;break;default:cout << "请正确输入!" << endl;system("pause");system("cls");}if (flag == 1)break;}system("cls");cout << "查看的课程是: " << endl;cout << "课程名称: " << p->SubName << endl;cout << "课程学分: " << p->SubCredits << endl;cout << "————————————————————" << endl;for (i = 0; i < StudentHead->PersonalInformation.StudentNum; i++) {if (p->Grade[i].Judge == 1) {cout << "学号: " << p->Grade[i].StudentNum << endl;One = SearchStudent(p->Grade[i].StudentNum, StudentHead);cout << "姓名: " << One->PersonalInformation.StudentName << endl;cout << "平时成绩: " << p->Grade[i].OrdinaryGrade << endl;cout << "考试成绩: " << p->Grade[i].TestGrade << endl;cout << "总成绩: " << p->Grade[i].TotalGrade << endl;cout << "————————————————————" << endl;}}system("pause");return;case'c':case 'C':system("cls");SearchClassGrade(StudentHead, CourseHead);return;case'#':return;default:cout << "请正确输入!" << endl;system("pause");system("cls");}if (flag == 1)break;}system("cls");flag = 0;
}//数据保存
void StoreData(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserStudent UserStudentHead, LinkUserTeacher UserTeacherHead) {StoreStudentList(StudentHead);StoreCourseList(CourseHead);AccountStore(UserAdministratorHead, UserTeacherHead, UserStudentHead);
};//管理员菜单
void Input_Administrator(LinkStudent StudentHead, LinkCourse CourseHead, LinkUserAdministrator UserAdministratorHead, LinkUserTeacher UserTeacherHead, LinkUserStudent UserStudentHead) {char choose;while (1) {system("cls");cout << "————————————————————" << endl;cout << "当前学生总数:" << StudentHead->PersonalInformation.StudentNum << endl;cout << "当前课程总数:" << CourseHead->SubNum << endl;Begin();cin >> choose;switch (choose) {case '#'://退出程序cout << "退出成功欢迎下次使用!" << endl;return;case 'a': case 'A'://成绩系统GradeSystem_Begin(StudentHead, CourseHead, UserAdministratorHead, UserTeacherHead, UserStudentHead);break;case 'b': case 'B'://课程系统CourseSystem_Begin(StudentHead, CourseHead, UserAdministratorHead, UserTeacherHead, UserStudentHead);break;case 'c': case 'C'://信息系统InformationSystem_Begin(StudentHead, CourseHead, UserAdministratorHead, UserTeacherHead, UserStudentHead);break;case 'd': case 'D'://账户系统AccountSystem_Begin(StudentHead, CourseHead, UserAdministratorHead, UserTeacherHead, UserStudentHead);break;case 'e': case 'E'://初始化Initialization(StudentHead, CourseHead, UserAdministratorHead, UserTeacherHead, UserStudentHead);break;case '@'://保存数据StoreData(StudentHead, CourseHead, UserAdministratorHead, UserStudentHead, UserTeacherHead);break;default:system("cls");cout << "请按正确格式输入" << endl;system("pause");system("cls");break;}}
}

函数调用

#define _CRT_SECURE_NO_WARNINGS
#include <Stdio.h>
#include "结构体.h"
#include  <string> 
#include <iostream>
#include<conio.h>
using namespace std;
#include<malloc.h> 
#define OK 1
#define ERROR 0
#define InitStudentNum 1000
#define PATH1 "StudentData.text"
#define PATH2 "CourseData.text"
#define PATH3 "Teacher_Account.text"
#define PATH4 "Administrator_Account.text"
#define PATH5 "Student_Account.text"int main() {ios::sync_with_stdio(0), cin.tie(0);LinkStudent q,p,StudentHead;LinkCourse CourseHead = new Course;LinkUserAdministrator UserAdministratorHead=new UserAdministrator;LinkUserStudent UserStudentHead=new UserStudent;LinkUserTeacher UserTeacherHead=new UserTeacher;UserStudentHead->next = NULL;UserTeacherHead->next = NULL;UserAdministratorHead->next = NULL;//启动程序时先读取文件StudentHead=ReadStudentList();CourseHead = ReadCourseList(StudentHead);UserAdministratorHead=Administrator_AccountRead(UserAdministratorHead);UserTeacherHead=Teacher_AccountRead(UserTeacherHead);UserStudentHead=Student_AccountRead(UserStudentHead);//输入操作char loginJudge;while (1) {loginJudge=login(UserAdministratorHead, UserStudentHead, UserTeacherHead);if (loginJudge == 'a') {Input_Student(StudentHead, CourseHead, UserTeacherHead, UserAdministratorHead, UserStudentHead);return 1;}else if (loginJudge == 'b') {Input_Teacher(StudentHead, CourseHead,UserTeacherHead,UserAdministratorHead,UserStudentHead);return 1;}else if (loginJudge == 'c' ) {Input_Administrator(StudentHead, CourseHead, UserAdministratorHead, UserTeacherHead, UserStudentHead);return 1;}else if (loginJudge == '#') {cout << "请重新输入!" << endl;system("pause");system("cls");}}return 0;
}
http://www.hrbkazy.com/news/6305.html

相关文章:

  • 泰州网站设计公司seo服务工程
  • 凡科建站网页版网络营销策划案例
  • 域名新闻网站营销网站建设的因素
  • 站群搭建百度推广登录入口下载
  • 网站建设服务器什么意思百度网站
  • 建设网站ppt营销最好的方法
  • 网站运营工作是干什么的石家庄网络推广平台
  • 做网站的必要条件网站排名优化制作
  • 做任务赚q红包的网站南宁在哪里推广网站
  • 网站建设 上海网cpa广告联盟平台
  • 北京营销型网站建设哪家好360优化大师官方免费下载
  • 委托网站开发所有权归属深圳全网推广效果如何
  • 坑人的网站链接怎么做常见的网络营销策略都有哪些
  • 中国企业网查询系统官网全国seo搜索排名优化公司
  • 网站开发与应用论文百度快照推广一年要多少钱
  • 免费 企业网站管理系统百度关键词搜索排行
  • 中财盛建设集团公司网站今天的国际新闻
  • 网站建设合同标的互联网营销师培训学校
  • 深圳专业网站设计公司地址网站优化排名操作
  • 汽车金融网站怎么做最近在线直播免费观看
  • 丰台做网站佛山百度快照优化排名
  • 推广网站刷排名企业网站建设目标
  • 哪些网站可以免费做产品推广广州百度推广优化
  • 申请免费网站主页空间seo刷关键词排名免费
  • 嘉祥网站建设哪家便宜蚌埠seo外包
  • 网站建设公司 信科便宜网络广告是什么
  • 做网站不需要原件吧全国疫情高峰感染高峰进度查询
  • 做手机网站尺寸大小虚拟主机搭建网站
  • 下载软件应用惠州百度关键词优化
  • 如何查询网站域名备案信息seoyoon