📄 menu.h
字号:
/*menu.h:header file for menu2.c and menu3.c*/
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <ctype.h>
#include <string.h>
#include<time.h>
/*每个字符串数据多一位,用来存储'\0'*/
/*院系结构体*/
typedef struct Node_D
{
char DNO[3];
char DN[21];
char D_DATE[8];
char D_HEAD[11];
char D_ADDRESS[21];
char D_PHONE[13];
struct Node_D *next;
}DEPARTMENT;
/*教师结构体*/
typedef struct Node_T
{
char TNO[11];
char TN [21];
char T_SEX[3];
char T_PROF[11];
char T_BIRTHDAY[11];
char T_DATE[8];
double T_SALARY;
char DNO[3];
struct Node_T *next;
}TEACHER;
/*班级结构体*/
typedef struct Node_C
{
char CNO[11];
char CN[11];
char C_DATE[8];
char C_CLASSROOM[15];
int C_NUM;
char DNO[3];
char TNO[11];
struct Node_C *next;
}CLASS;
/*专业结构体*/
typedef struct Node_SP
{
char SP_NO[3];
char SP_N[21];
char SP_DATE[8];
int SP_NUM;
char DNO[3];
struct Node_SP *next;
}SPECIALITY;
/*学生结构体*/
typedef struct Node_S
{
char SNO[11];
char SN[21];
char S_SEX[3];
char S_BIRTHDAY[11];
char S_DATE[8];
char S_SCHOOL[31];
double S_GRADE;
char S_PHONE[13];
char S_ADDRESS[31];
char SP_NO[3];
char CNO[11];
char CH_NO[6];
struct Node_S *next;
}STUDENT;
/*课程结构体*/
typedef struct Node_CO
{
char CO_NO[11];
char CO_N[21];
int CO_T_TIME;
int CO_E_TIME;
int CO_S;
char CO_BOOK[25];
char DNO[3];
struct Node_CO *next;
}COURSE;
/*活动结构体*/
typedef struct Node_A
{
char ANO[4];
char AN[31];
char A_DATE[8];
struct Node_A *next;
}ACTIVITY;
/*寝室结构体*/
typedef struct Node_CH
{
char CH_NO[6];
char CH_ADDRESS[31];
int CH_NUM;
struct Node_CH *next;
}CHAMBER;
/*入校注册结构体*/
typedef struct Node_R
{
char RNO[6];
char DNO[3];
int R_COST;
struct Node_R *next;
}REGISTER;
/*选修结构体*/
typedef struct Node_SC
{
char SNO[11];
char CO_NO[11];
char SC_CLASS[7];
double SC_GRADE;
char TNO[11];
char SC_DATE[8];
struct Node_SC *next;
}SC;
/*教学计划结构体*/
typedef struct Node_PROJECT
{
char SP_NO[3];
char CO_NO[11];
char CLASS[11];
struct Node_PROJECT *next;
}PROJECT;
/*讲授结构体*/
typedef struct Node_TC
{
char TNO[11];
char CO_NO[11];
char TC_T_DATETIME[21];
char TC_T_ADDRESS[10];
char TC_E_DATETIME[21];
char TC_E_ADDRESS[11];
struct Node_TC *next;
}TC;
/*参加活动结构体*/
typedef struct Node_J
{
char ANO[4];
double J_GRADE;
char J_OTHER[21];
char SNO[11];
struct Node_J *next;
}JOINACTIVITY;
/*入学报道结构体*/
typedef struct Node_L
{
char RNO[6];
char SNO[11];
char L_DATE[8];
struct Node_L *next;
}LOGON;
typedef struct
{
STUDENT *studenthead;
TEACHER *teacherhead;
COURSE *coursehead;
SPECIALITY *specialityhead;
DEPARTMENT *departmenthead;
CLASS *classhead;
PROJECT *projecthead;
REGISTER *registerhead;
SC *schead;
TC *tchead;
JOINACTIVITY *joinactivityhead;
LOGON *logonhead;
ACTIVITY *activityhead;
CHAMBER *chamberhead;
char str1[50],str2[50];
}sys;
typedef struct tm TM; //简写时间结构
//新生报到结构体
typedef struct studentinformation //学生信息节点
{
char SNO[11]; //学号
TM arrtime; //到达时间
TM logtime; //完成时间
TM waitime; //等待时间
int winnum; //报名窗口号
struct studentinformation *next; //指向下一个结点
}STUINFO;
#define MAXSIZE 1000
struct tm;
//声明系统时间结构
typedef struct tm TM; //简写时间结构
typedef struct waitingqueue //窗口队列
{
STUINFO *front,*rear;
int nodeno; //结点个数
}QUEUE;
typedef struct transaction //事件信息结构
{
char obj[11]; //事件对象
TM haptime; //事件发生时间
int acttype; //事件类型,到达为1,完成为2
int num; //事件窗口号码
int nodeno; //此时节点个数
TM waitime;
}TRANSA;
/*纠错函数*/
int Force(void);
int IsDate(char temp[15],int flag);
//menu2.c
void delete_sys(int choice,sys find,sys *all);
sys Input(int n[3],int i,sys *all);
//menu3.c
sys find(int choice[3],char ch1[50],char ch2[50],sys *all);
void findmore(int choice[3],char ch[50],sys *all,sys reply[100]);
void display(int table,int choice[13],sys dis);
void sort(int table,sys sort_grade[100]);
STUINFO *transport(sys *all);
/*end of menu.h*/
QUEUE *createqueue();
//创建窗口队列
int selectqueue(QUEUE *a[],int i);
//参数为窗口头数组名及窗口个数,返回最少人数窗口,无窗口返回0
int isempty(QUEUE *q);
//判断链队列q是否为空,为空返回1,否则返回0
STUINFO *front(QUEUE *q);
//返回链队列q的队头元素的地址
int dequeue(QUEUE *q);
//将链队列q的队头元素出队列,成功返回1,失败返回0
int dequeue(QUEUE *q);
//将链队列q的队头元素出队列,成功返回1,失败返回0
TM addtime(TM x,int y);
//处理时间的加法函数 ,y限制为分钟数
TM getwaitime(TM arrtime,TM logtime);
//获取等待时间
int cmptime(TM x,TM y);
//对两个时间进行比较,如果左边大于右边返回1,否则返回0
void dequeueall(QUEUE *a[],TM y,int i,int j);
int enqueue(QUEUE *a[],int i,int j,STUINFO x);
//将元素x放入链队列q的队尾,成功返回1,失败返回0
int setnull(QUEUE *q);
//初始化队列
void swap();
//将事件按时间进行排序
int gethour();
//判断小时的合法性
int getmin();
//判断分钟的合法性
int registmenu(sys *all);
//新生报名主函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -