SCAU课程课设教务信息管理系统
题目:
设计一个教务信息管理系统,该程序具有以下功能:
(1)录入如下信息:
学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。
课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。如果重修,需要考虑重
修学期、重修成绩,并且要考虑多次重修的情况。
(2)录入选课信息
(3)录入学生成绩
(3)按班统计学生选课情况及考试成绩。
(4)按课程统计学生名单及考试成绩。
(5)统计并输出每个同学已修学分及不及级课程。
(6)实现单词组合查询课程名,例如输入“JAVA+设计”查询,可以查到如下课程
《JAVA语言与程序设计》
《JAVA程序设计》
《JAVA语言与算法设计》
注:因为上面课程名中均包含“设计”和“教程”两个单词
同理,输入“JATA+算法+设计”查询,则只能查到《JAVA语言与算法设计》
任务要求:
(1) 按照分析、设计、编码、调试和测试过程完成应用程序;
(2)学习并使用流程图等工具,并在撰写报告中使用;
(3)程序的各项功能在程序运行时,以菜单方式选择并执行;
(4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等
(5)所有的信息存储在文件中,并实现文件读写操作。
(6)记录添加删除操作时,先从文件载入数据,用链表存放,批量操作完后,数据从链表写入文件。
(7)[加分选做]根据学生的选课,能够生成一个学生的课表(形式与我校教务处系统中的课表相似),并将时间有冲突的课程标记为红色
代码:
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<string.h>
#include <windows.h>
using namespace std;
/*
************************************************************************
管理员账号:admin#教师账号:课程编号(1,2,3...)#教师密码及管理员密码:666
************************************************************************
课程编号 课程名称
01 大学语文
02 高等数学
03 大学英语
04 大学物理
05 数据结构
06 大学体育
07 物理实验
08 程序设计
09 近代史纲
10 军事理论
11 JAVA课程
12 计算智能
13 算法入门
************************************************************************
*/
#define MANAGER_NAME "admin"
#define MANAGER_PASSWORD "666"
typedef struct Course
{
char course_id[5];//课程编号
char course_name[50];//课程名称
int test_score;//考试分数
int usual_score;//平时分数
int final_score;//综合分数
int school_score;//学分
int term;//学期
int restudy_score;//分数
int times;//次数
} COU;
typedef struct Student
{
char id[50];//学号
char name[50];//姓名
char sex[50];//性别
char age[10];//年龄
char schoolhouse_id[50];//宿舍号
char number[50];//电话号
int course_number;//课程数量
COU course[10];
struct Student *pNext;
} STU,*PSTU;
size_t iCount = 0;//学生总数
PSTU pHead = NULL; //信息学生头结点
PSTU pNew = NULL; //待添加学生信息
char UserName[10];
char UserWord[10];
char Class[13][100]= {
"大学语文","高等数学","大学英语","大学物理","数据结构","大学体育","物理实验","程序设计",
"近代史纲","军事理论","JAVA课程","计算智能","算法入门"
};//课程初始化
char name[13][50];
//函数声明
void Init();
void MainMenu();
void ReadData();
void SaveData();
void Quit();
void Lessons_Information();
void Show_Information();
void Add_Information();
void Delete_Information();
void Search_Information();
int Classify_Number(char number[]);
void Class_List(PSTU pHead);
void Quit2();
void SchoolMenu();
void Add_Score(PSTU pHead);
void Course_List(PSTU pHead);
void StudentMenu();
void TeacherMenu();
void Teacher_option();
void Student_option();
void SchoolMenu();
void Encryption(char a[]);
void School_option();
void Add_Course(PSTU pHead);
void Change_Information();
int isLogin1();
int isLogin2();
int isLogin3();
void Find_Class();
void Menu();
void Gather_Class();
int COLOR_PRINT(const char* s, int color);
void Help();
void head();
void head()
{
cout<<"\t\t\t\t\t╭ ╮ ╭ ```╮ "<<endl;
cout<<"\t\t\t\t\t(@^o^@) 教务信息管理系统 (⌒:⌒)"<<endl;
cout<<"\t\t\t\t\t(~):(~) (~)v(~) "<<endl;
cout<<endl;
}
void Help()
{
cout<<endl;
head();
cout<< "\t\t\t\t系统简介:"<<endl;
cout<< "\t\t\t\t本程序为教务信息管理系统,通过输入学生地相关信息"<<endl;
cout<<"\t\t\t\t对数据进行处理和统计,并按需要输入统计处理后地数据到文件中"<<endl;
cout<<"\t\t\t\t从而实现可写可读的功能。"<<endl;
cout<<endl;
cout<< "\t\t\t\t开发人员:郑少"<<endl;
cout<<endl;
}
int isLogin1()//管理员登录
{
cout<<" \t\t\t\t请输入您的账号:"<<endl;
cout<<" \t\t\t\t";
cin>>UserName;
cout<<" \t\t\t\t密码:"<<endl;
cout<<" \t\t\t\t";
Encryption(UserWord);
cout<<endl;
if(strcmp(UserName, MANAGER_NAME) == 0 && strcmp(UserWord, MANAGER_PASSWORD) == 0)
return 1;
else
{
cout<<"\t\t\t\t\t!!账号或密码输入错误,请重新登录!!"<<endl;
Quit();
}
}
int isLogin2()//教师登录
{
char Name0[50],Name1[50];
int i;
cout<<" \t\t\t\t请输入您的账号:"<<endl;
cout<<" \t\t\t\t";
cin>>Name0;
cout<<" \t\t\t\t密码:"<<endl;
cout<<" \t\t\t\t";
Encryption(Name1);
cout<<endl;
PSTU pCurrent = pHead->pNext; //指向第一个节点 如果链表为 NULL pCurrent为 NULL
if(pCurrent==NULL)
{
cout<<"\t\t\t\t\t!!系统中未存入任何教师信息!!"<<endl;
Quit();
}
while (pCurrent != NULL) //遍历所有学生
{
for(i=0; i<pCurrent->course_number; i++)
{
if (strcmp(pCurrent->course[i].course_id,Name0 ) == 0)
{
if(strcmp(Name1,MANAGER_PASSWORD)==0)return 1;
else
{
cout<<"\t\t\t\t\t!!账号或密码输入错误,请重新登录!!"<<endl;
Quit();
}
}
}
pCurrent=pCurrent->pNext;//下一个学生
}
pCurrent = NULL;
cout<<"\t\t\t\t\t!!该账号不存在,请重新登录!!"<<endl;
Quit();
}
int isLogin3()//学生登录
{
char Name0[50],Name1[50];
cout<<" \t\t\t\t请输入您的账号:"<<endl;
cout<<" \t\t\t\t";
cin>>Name0;
cout<<" \t\t\t\t密码:"<<endl;
cout<<" \t\t\t\t";
Encryption(Name1);
cout<<endl;
PSTU pCurrent = pHead->pNext; //指向第一个节点 如果链表为 NULL pCurrent为 NULL
if(pCurrent==NULL)
{
cout<<"\t\t\t\t\t!!系统中未存入任何学生信息!!"<<endl;
Quit();
}
else if(strcmp(Name0,Name1)!=0)
{
cout<<"\t\t\t\t\t!!账号或密码输入错误,请重新登录!!"<<endl;
Quit();
}
else
{
while (pCurrent != NULL) //遍历所有学生
{
if (strcmp(pCurrent->id,Name0 ) == 0)return 1;
pCurrent=pCurrent->pNext;//下一个学生
}
pCurrent = NULL;
cout<<"\t\t\t\t\t!!该账号不存在,请重新登录!!"<<endl;
Quit();
}
}
void Encryption(char a[])//密码加密
{
int i=0;
while((a[i]=getch())!='\r')
{
if(a[i]=='\b')//此处'\b'指退格键
{
printf("\b \b");
i--;
}
else
{
printf("*");
i++;
}
}
a[i]='\0';//’\0’是判定字符数组结束的标识,表示这串字符到结尾了('\0'是占有位置的的)
}
int main()
{
pHead = (PSTU)malloc(sizeof(STU));
pHead->pNext = NULL;
ReadData();
Menu();
MainMenu();
}
void School_option()//管理员的选项
{
int opt;
while(1)
{
Menu();
SchoolMenu();
cout<<" \t\t\t\t请输入数字:";
cin >> opt;
switch(opt)
{
case 1:
system("cls");
Menu();
Add_Information();
Quit2();
break;
case 2