实验室预约系统

设计内容
实验室预约系统,计算机学院单位实验室实行全天开放,学生可以根据自己的学习进度自行安排实验时间,但是每个实验有一个限定的时间,例如某实验要在近两周内完成。假设近期将要做的实验可以有周一下午、周三下午、周五下午三个时间(可以根据实际情况进行调整),不妨称为时间一、时间二、时间三,这三个时间做实验的学生可以用队列来存储。
功能要求:
(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[20
  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
主要界面预览:http://blog.csdn.net/xiaozaq/article/details/78399316 系统主要功能介绍: 实验室预约管理系统主要有2个使用角色:管理员和学生 管理员模块: 1.学生信息管理。添加了学生用户,学生才能使用工号和初始密码登录系统。首次登录系统后需要修改密码。 实体主要属性:学生id,学号,学生姓名,性别,班级。 2.教师信息管理。添加教师信息,与实验项目批次关联。教师与实验项目批次是一对多的关系。 实体主要属性:教师id,教师姓名,性别,所属院系。 3.管理员信息管理。添加管理员用户。管理员用户有管理员模块的所有操作权限。 实体主要属性:管理员id,姓名,性别,所属院系。 4.学期管理。学期和实验项目是一对多的关系。 实体主要属性:学期名称,开始时间,结束时间,是否可用。 5.课程管理。课程和实验项目是一对多的关系。 实体主要属性:课程id,课程名称。 6.实验项目管理。与课程是多对一关系,与学期是多对一关系 实体主要属性:实验项目id,实验项目名称,所属课程id,所属学期。 7.实验项目批次管理。一个实验项目可能有多个批次,由不同的老师指导。每个批次对应一个老师。 实体主要属性:实验批次id,实验项目id,教师id,实验地点,容纳人数,实验日期,节次,是否确认。 8.学生预约申请管理管理员审核学生预约申请,如容纳人数已满等情况则拒绝学生的预约申请,并填写相应的原因告知学生。 实体主要属性:学生id,实验批次id,申请时间,审核结果,原因,考勤签到。 9.考勤管理。学生预约成功后,管理员根据实验批次学生参与情况进行考勤。便于以后统计。 学生模块: 1.预约实验室。学生预约已确认的项目批次。申请后添加一条学生预约申请记录。 2.取消预约。学生预约申请后,如管理员还未审核,则可以取消预约。审核成功后不能取消。 3.查看我的预约。查看自己的预约申请记录。 说明: 1.该系统是基于ofbiz 16.11.02版本开发的。 2.系统使用的数据库是mysql。(可以使用其他数据库,只要根据搭建ofbiz系统时配置决定。) 安装运行步骤: 1.搭建好ofbiz系统。具体搭建步骤见:http://blog.csdn.net/xiaozaq/article/details/72763123 2.将解压的文件夹booking复制到apache-ofbiz-16.11.02\hot-deploy目录下。 3.将解压的文件夹lib里的文件复制到apache-ofbiz-16.11.02\lib目录下。 常见问题解决办法: 1.中文乱码等问题解决办法可以查看:ofbiz实战——实验室预约系统导航页 http://blog.csdn.net/xiaozaq/article/details/78400088
项目背景:全校开放性实验室预约系统是一个让学生通过网上报名预约实验的系统。由于学生对实验的需求很多,而教师人数有限,这使得学生做实验时遇到问题不能得到及时解决,从而导致实验很难继续下去,这样实验难以达到预期目的。因此,必须准确地了解学生对实验的内容和时间等的要求,才能有效地安排教师辅导。“全校开放性实验室预约系统”通过学生网上预约实验的方式,为实验室妥善安排提供可靠的依据。 使用说明: 学期管理 管理员可以添加、修改、删除学期。 特别注意:只能有一个学期为活动学期,学生只能预约这个学期的实验项目;老师只能查看、编辑这个学期的实验批次。 实验项目管理 一个学期可以有不同的实验科目,一个实验科目又有不同的实验项目。管理员可以添加、修改、删除实验项目。 特别注意:在输入实验项目时,遇到没有在实验科目列表中出现的实验科目,直接手动输入,保存后就自动添加到列表中。 实验项目批次 一个实验项目可以分为不同的实验批次进行。管理员可以针对某个实验项目进行实验批次的添加、修改、删除。一个实验批次,可以有多个学生参与,但不能超过实验批次的容量。管理员可以对某个实验批次里的学生进行添加、评分、删除操作。 老师管理 管理员可以添加、修改、删除老师信息。 特别注意:老师的平台账号不能为空而且不能重复,因为老师登入系统就是用这个账号。 学生管理 管理员可以添加、修改、删除学生信息。 特别注意:学号不能为空而且不能重复.学生登入时候使用学号登入.
软件名称:实验室仪器预约管理系统 软件版本号:2.9.8 软件类型:(国产) 软件语言:(中文) 软件属性:(安装版) 软件授权:(免费) 软件大小:(9500kb) 应用平台:(windwos,ios...) 联系方式:(QQ21398125) 官方网站:(www.25175.com) 官方下载连接:http://www.25175.com/UploadFile/1/Files/20150816/25175Release20150816225311-0922.rar 软件系列 :25175实验室仪器预约管理系统(v2.9.8) 开发公司: 慈溪市顺通网络技术有限公司 公司网址:http://www.shuntun.com 在线演示:http://saas.25175.com 更新时间:2015/8/7 在线下载:http://www.25175.com/UploadFile/1/Files/20150816/25175Release20150816225311-0922.rar 1.本套软件适合于人员在5000人以内的学校预约管理。没有复杂的操作,普通人员都很容易上手实践。并且在软件上不需要投入很多的人力培训进行操作。 2.推荐使用操作系统:win2008及以上 调试平台:IIS7.0及以上 推荐环境:asp.net4.5+sql2008 3.第一次使用务必请先注册,http://您的地址/MAA/login/Register.aspx ,请输入正确的信息并提交,就可以使用了,如果信息不正确或非法有可能无法使用。 兼容浏览器:IE8+ FireFox, Safari, Chrome, Opera and more. 官方网站:http://www.shuntun.com/ 程序演示:http://www.25175.com/ 软件视频:http://edu.25175.com 软件开发部:王工 开发 页面设计:25175 设计 简介: 该实验室在线预约系统,采用了BS架构开发,利用.NET技术和sqlserver数据库进行了系统的开发,系统是一款专业的实验室预约管理软件。灵活调度手段可以即时进行预订,并且自动通知和与会者确认。所有用户无需安装和繁琐的配置,因为我们的预约管理运行在服务器上.使用时所有要做的就是登录系统。 管理调度软件可以提高您预约的生产力和效率。对于学校来说,时间就是金钱 - 生产率的提高,可以促使节约更多的成本。 使用说明: 一,登陆。 普通学生/老师 注册审核通过后就可以预约。 填入用户名跟密码后进入下面 点击网上预约后进入下面 接下来选择你要预约的仪器,点击(我要预约),进入下面的页面 所有预约的列表 预约公告 二、管理员登录 管理员内部预约 仪器设置
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值