实验室预约系统

设计内容
实验室预约系统,计算机学院单位实验室实行全天开放,学生可以根据自己的学习进度自行安排实验时间,但是每个实验有一个限定的时间,例如某实验要在近两周内完成。假设近期将要做的实验可以有周一下午、周三下午、周五下午三个时间(可以根据实际情况进行调整),不妨称为时间一、时间二、时间三,这三个时间做实验的学生可以用队列来存储。
功能要求:
(1)插入:将预约做实验的学生插入到合适的时间队列中;
(2)删除:时间队列中前5位学生可以在该时间做实验;
(3)查询:教师可以随时查询某个时间队列中学生的预约情况;
(4)修改:在没做实验之前,学生可以对预约的时间进行修改;
(5)输出:输出每个时间队列中预约的学生名单。
代码如下

#include <stdio.h>
#include <stdlib.h>//其中包含system函数
#include <conio.h>//定义了通过控制台进行 数据输入 和数据输出的函数,如getch函数。
#include <string.h>//定义字符数组
#include <math.h>
#include<memory.h> 
#define LEN sizeof(struct land)//有关登录系统的结构体

struct Tland//老师登录信息
{
   
   
	int zhanghao;//账号 
	char password[20];//密码 
	struct Tland*next;
};

struct land//学生登录信息
{
   
   
	int zhanghao;	//账号 
	char password[20];	//密码 
	struct land*next;
};

typedef struct QNode//有关学生信息的结构体 
{
   
    
  char name[10];//名字 
   char banji[10];//班级 
  int  number;//班级 
  struct QNode*next;
}student;

typedef struct//有关时间点的结构体 
{
   
   
 QNode *front;
 QNode *rear;
}linkqueue;

void lmenu();      //显示学生登录菜单函数 
void main1();      // 学生端实验室预约界面函数 
void land();      //学生登录功能系统函数 
int xinjian(int,char[]);   //学生创建账号密码函数 
void xgmm();           //学生修改密码函数 
void lmain();      //学生登录界面函数
void Tlmenu();    //教师端显示登录菜单函数 
void main2();    // 教师端实验室预约界面函数 
void Tland();    //教师端登录功能系统函数 
int Txinjian(int,char[] );    //教师端创建账号密码函数 
void Txgmm();    //教师端修改密码函数 
void Tlmain();    //教师端登录界面函数
void shenfen();   //选择身份函数 

int Ttj()
//统计老师账号密码文本个数
{
   
   
FILE *fp;
//文件指针 
int zhao=0, n;
char mm[20]={
   
   '\0'};
fp=fopen("Tland.txt","r");
//打开文件
for (n=0;!feof(fp);n++)
//逐个读文件
fscanf(fp,"%d %s",&zhao,mm);
n--;
fclose(fp);
//关闭文件
return (n);
//返回个数
}

void Tlmenu()
//显示教师端登录菜单函数 
{
   
   
printf("\n\n\t欢迎使用教师端实验室预约登录系统\n\n");
printf("**********************************************\n");
printf("**********************************************\n");
printf("\n\n\t\t1.登录系统\n\n");
printf("\n\n\t\t2.创建账号\n\n");
printf("\n\n\t\t3.修改密码\n\n");
printf("\n\n\t\t4.退出登录系统\n\n");
printf("\n\n\t    请按键选择,回车确定\n");
printf("**********************************************\n");
printf("**********************************************\n");
printf("\n\t\t请选择(1-4)"); 
return ;
}  

void Tlmain()
//登录功能函数
{
   
   
	void Tland();
	//登录功能系统函数 
	void Txinjian();
	//新建账号密码函数 
	char choose;
	Tlmenu();
	scanf(" %c",&choose);
	switch(choose) 
	//功能函数
  {
   
   
	  case'1':
	    Tland();
	    break;
	  case'2':
	  	Txinjian();
	  	break;
	  	case'3':
	  	Txgmm();
	  	break;
	  case'4':
	  	system("cls");
	  	//清屏函数 
    getch();
  	exit(0);
  	//正常退出 
  	system ("cls");
	break;
  }
}

void Txinjian()
//新建账户密码函数 
{
   
   
	FILE *fp;
	int zhanghao;
	//账号 
	char password[20];
	//密码 
	char password1[20];
	//二次确认密码 
	char hit=0;
	if ((fp=fopen("Tland.txt","r"))==NULL)
	//打开文件只读 
	{
   
   
      fp=fopen("Tland.txt","w");
      //建立新的文件,只允许写入数据 
      fclose(fp);
      //关闭文件 
    }
    system("cls");
    //清屏函数 
	fp=fopen("Tland.txt","a");
	//打开"land"文件,并且在文件末尾写入数据 
	for(;;)
	//输入两次密码确认,两次相同才能确认
	{
   
   
	   printf("\n请按以下格式输入账户:\n学号 密码\n");
	   printf("请输入:");
	   scanf("%d %s",&zhanghao,password);
       printf("再次输入密码:\n");
	   scanf("%s",password1);
	   if(strcmp(password,password1)==0)
	   //比较输入的两个密码是否一致 
	   {
   
   
	       fprintf(fp,"%d %s\n",zhanghao,password);
	       //将数据写入文件 
		   break;
       }
       else
	   {
   
   
	     printf("\n\t\t***************************************************");
         printf("\n\t\t***************************************************"); 
         printf("\n\t\t***两次输入密码不一致,继续创建按回车,退出按ESC***");
         printf("\n\t\t***************************************************");
         printf("\n\t\t***************************************************");
	       hit=getch();
		   if(hit=27)
		   //如果按ESC键 
		   system("cls");
		   //清屏函数 
		   Tlmain();
	   }
   }
   fclose(fp);
   //关闭文件 
         printf("\n\t\t****************************");
         printf("\n\t\t****************************"); 
         printf("\n\t\t***创建成功,按任意键返回***");
         printf("\n\t\t****************************");
         printf("\n\t\t****************************");
         getch();
         system("cls");
         Tlmain();
}

int Tmatch(int m,char a[20])
//匹配数据库中的账号密码函数 
{
   
   
	FILE*fp;
	//文件指针 
	int n=0,i=0,zhanghao;
	char password[20];
	if ((fp=fopen("Tland.txt","r"))==NULL)
	//不存在老师信息文件
	  {
   
   
         system ("cls");
		 printf("\n ");
		 printf("\n\t\t*****************************");
         printf("\n\t\t*****************************"); 
         printf("\n\t\t***还未存在用户!请新建账户***");
         printf("\n\t\t*****************************");
         printf("\n\t\t*****************************");
		 getch();
	 	system("cls");
		Tlmain();
      }
        for(;!feof(fp);)
      {
   
   
        fscanf(fp,"%d%s",&zhanghao,password);
        //从文件读数据 
        if(m==zhanghao)
        {
   
   
        	if(strcmp(a,password)==0)
        	//比较密码是否相同 
			return 1;
			else
			{
   
   
			return -1;
		   }
	    }
	  }
	  return 0;
 }

void Tland()
//输入账户密码的登录函数
{
   
   
	int zhanghao;
	char password[20];
	int i=2, j, k, n;
	char hit=0;
	system("cls");
	do
	{
   
   
	   printf("\n请输入账号:\n");
       scanf("%d",&zhanghao);
         printf("\n\t\t***************************************");
         printf("\n\t\t***************************************");
         printf("\n\t\t***确认输入请按回车,重新输入请按ECS***");
         printf("\n\t\t***************************************");
         printf("\n\t\t***************************************");
       hit=getch();
	   //暂停程序当i接收后继续下一条指令
       for (;hit!=13&&hit!=27;)
	   //保证只能是CR和ESC才能退出循环,输入其他字符无用,暂停程序,按'CR'继续。
       {
   
   
	        hit=getch();
	   }
    }
    while(hit==27);
	 printf("\n请输入密码:\n");
	 scanf("%s",password);
     i=Tmatch(zhanghao,password);
     //调用"match"函数是否账号和密码是否相关联 
     if(i==1)
	 {
   
   
         printf("\n\t\t***************************");
         printf("\n\t\t***************************");
         printf("\n\t\t***登陆成功!按任意键继续***");
         printf("\n\t\t***************************");
         printf("\n\t\t***************************");
	   getch();
	   system ("cls");
	   //清屏函数 
	   main1();
	   Tlmain();
	 }
	 else
	 {
   
   
	 	if(i==-1)
		 {
   
   
		 printf("\n\t\t************************");
         printf("\n\t\t************************"); 
         printf("\n\t\t***不好意思,密码错误***");
         printf("\n\t\t************************");
         printf("\n\t\t************************");
		 getch();
         Tland();
		 }
		 if(i==0)
		 printf("\n\t\t****************************************");
         printf("\n\t\t****************************************"); 
         printf("\n\t\t***不存在此用户,确认账号密码再来登陆***");
         printf("\n\t\t****************************************");
         printf("\n\t\t****************************************\n\n\n");
		 getch();
		 system("cls");
		 Tlmain();
	 }
}

void Txg(int z,char m[
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值