功能待逐渐实现:
已实现内容:
1:页面设计。
2:学生账号注册的2/3.。
3:关于教务管理系统界面。
4:帮助页面。
5:登录系统2/3。
6:登录以后的界面。
7:界面中的操作没有实现。
8:综合分析,这个框架并不适合教务管理系统,有些许问题,但可能还有一些函数有用,供大家参考,在写新的blog,实际上由于时间原因,还有很多高端操作可惜不能完成了。
//头文件区上分界线
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<conio.h>
#include<cstdlib>
#include<windows.h>
using namespace std;
#define ture 1
#define false 0
//头文件区下分界线
char sa[200];
//goto 用到D
// 结构体区上分界线
/*
刚开始的时候,先不要求要有太高级的操作,所以简化操作。
现在是主干是两条带有两个尾指针的链表,一条是学生信息链,一条是课程信息链。
有一些功能在初次代码中将不会去实现,之后有时间就去完善。
1:在这里,简化了老师这一人物,将它看成了课程,如果要加上老师这一人物,将会变为带有三个尾节点的链表。
2:在这里,我没有用数组二分查找加快查找过程。
3:在这里,我没有用模糊查询。
4:以后可以考虑加密保等方式加强安全性。
5:这里先不存在文件中
6:没有花里狐臊的页面
*/
//成绩
typedef struct GPA{
double uaual_score; //平时成绩
double test_score; //期末成绩
double rate; //期末成绩占比0到1
double overall_score; //综合成绩
} GPA,*Ptr_GPA;
//主干学生节点,这个学生节点是作为主干来的
typedef struct STU1{
char id[20]; //学号:统一12位,考虑到现实情况学号没有过长的。
char code[30]; //密码用字符型方便隐私。
char clname[100]; //班级:全称。
char name[30]; //姓名:汉字,一个汉字占两个字节 。
int sex; //性别:1表示男性,2表示女性,0表示不详。
int age; //年龄:
long long dorid; //宿舍号:一般不会太长。
long long pnum; //电话号码:电话号码统一11位。
struct STU1 *next; //学生指针,指向下一个节点。
struct CLASS2 *cla; //课程节点指向课程 。
//还有各种各样的功能,如平均成绩已经等等待补充的
} STU1,*Ptr_STU1;
//分支学生节点,这个学生节点是作为分支来的。
typedef struct STU2{
char id[20]; //学号:统一12位,考虑到现实情况学号没有过长的。
char name[30]; //姓名:汉字,一个汉字占两个字节
char clname[100]; //班级:全称。
GPA gpa; //最新分数:包含3种分数
int rebuild; //重修次数:0表示没有,非0表示次数
long long pnum; //电话号码:电话号码统一11位
struct STU2 *next; //学生指针,指向下一个节点学生节点
} STU2,*Ptr_STU2;
//主干课程节点,这个课程节点是作为主干来的
typedef struct CLASS1{
char id[20]; //课程编号:统一15位
char name[100]; //课程名称
char code[30]; //本科目管理员密码
int test_aver_score; //考试平均成绩
GPA avergpa; //最新分数:包含3种平均分数
int credit; //学分
int rebuild; //重修人数,重修人名以后写,是一个函数
struct STU2 *stu; //选课学生,可以做很多事通过这个
struct CLASS1 *next; //课程指针,指向其他课程
} CLASS1,*Ptr_CLA1;
//分支课程节点,这个课程节点是作为分支来的
typedef struct CLASS2{
char id[20]; //课程编号:统一15位
char name[100]; //课程名称
GPA gpa; //最新分数:包含3种分数
int credit; //学分
int rebuild; //重修次数:0表示没有,非0表示次数
struct CLASS2 *next; //课程指针,指向其他课程
} CLASS2,*Ptr_CLA2;
//结构体区下分界线
//函数声明区上分界线
Ptr_STU1 Open_or_Init(Ptr_STU1 L); //从文件中读取信息
Ptr_STU1 Insert1(Ptr_STU1 L,STU1 stu); //按学号字典序插入,创建新的学生节点
Ptr_STU1 Search1(Ptr_STU1 L,char id[]); //遍历查找账号
void Page1(); //最开始的登录界面
Ptr_STU1 Page1_1(Ptr_STU1 L); //学生登录页面
void Page1_1_in(Ptr_STU1 L); //学生操作页面
int Page1_1_choice(Ptr_STU1 L); //学生界面功能选择区(管控功能分支的)
int Page1_1_1_mod(Ptr_STU1 L); //学生信息查看与修改
void Page1_4(STU1 *Ptr_stu1); //学生注册页面
void Page1_6(); //关于教务管理系统页面
void Page1_7(); //帮助页面
//函数声明区下分界线
//页面区上分界线
//主页面
void Page1(){
//登入页面
printf("**********************************************************************************************************************\n");
printf("* *\n");
printf("* 欢迎使用华南农业大学教务管理系统 *\n");
printf("* --设计师:陈绪栋 *\n");
printf("* *\n");
printf("**********************************************************************************************************************\n");
printf("* 请您选择需要的操作 *\n");
printf("* --------------------------------------- *\n");
printf("* *| |* *\n");
printf("* *| |* *\n");
printf("* *| 1:学生账号登录 |* *\n");
printf("* *| |* *\n");
printf("* *| 2:教师账号登录 |* *\n");
printf("* *| |* *\n");
printf("* *| 3:管理员账号登录 |* *\n");
printf("* *| |* *\n");
printf("* *| 4:学生账号注册 |* *\n");
printf("* *| |* *\n");
printf("* *| 5:教师账号注册 |* *\n");
printf("* *| |* *\n");
printf("* *| 6:关于新教务系统 |* *\n");
printf("* *| |* *\n");
printf("* *| 7:帮助 |* *\n");
printf("* *| |* *\n");
printf("* *| |* *\n");
printf("*