C语言——上机管理系统(包含对上机时间的处理)

最近接了个c语言的课设作业,写完了在这码着吧,说不定哪天自己还能用到(滑稽)。
假设某机房共有51台计算机,其中50台(编号1~50)供学生自由上机使用,1台(编号51)为管理机。模拟网络环境,为管理机编写软件,以实现对计算机以及上机学生的管理。软件主要功能如下:

  • (1) 学生上机。即,输入学生学号,可以随机申请到一台空闲且无故障的计算机。
  • (2) 学生下机。即,输入学生学号,能够将计算机的状态由“占用”变为“空闲”,同时显示学生上机持续的时间长度(单位秒)。
  • (3) 数据统计。即,不但可以显示当前时刻机器占用情况,也可以显示当前时刻所有故障机器的编号。
  • 软件至少应具有“学生上机”、“学生下机”、“占用统计”、“故障统计”、“退出”5项菜单。

话不多说,上代码

//Time:2020/6/3
//Author:SIrcle
//学生上机系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<windows.h>
using namespace std;
int com_num=0;
struct computer//电脑类
{
	int flag;
	char stu_num[15];
	int start_h;
	int start_m;
	int start_s;
}com[51];
void ready()//初始化
{
	for(int i=1;i<51;i++)
	{
		com[i].flag=0;
	}
}
int timecalculate(int h1,int m1,int s1,int h2,int m2,int s2)//计算上机时间函数
{
	int h=(h2-h1)*3600;
	int m=(m2-m1)*60;
	int s=s2-s1;
	return h+m+s;
}

void up_computer()//学生上机函数
{
	printf("--------请输入您的学号来申请一台电脑---------\n");
	char xuehao[15];
	int num,f1=0;
	scanf("%s",xuehao);
	for(int i=1;i<51;i++)
	{
		if(com[i].flag==0)
		{
			num=i;
			f1=1;
			printf("--------上机成功--------\n");
			break;
		}
	}
	if(f1==0)
		printf("----------电脑已全被预约,请稍后再来---------");
	SYSTEMTIME sys;
	GetLocalTime(&sys);
	com[num].flag=1;
	strcpy(com[num].stu_num,xuehao);
	com[num].start_h=sys.wHour;
	com[num].start_m=sys.wMinute;
	com[num].start_s=sys.wSecond;
	com_num++;
}
void down_computer()//学生下机函数
{
	int h,m,s,f=0,stu_time;
	printf("--------请您输入您的学号来退出机器--------\n");
	SYSTEMTIME sys;
	GetLocalTime(&sys);
	char xuehao[15];
	scanf("%s",xuehao);
	for(int i=1;i<com_num;i++)
	{
		if(com[i].flag==1)
		{
			if(strcmp(com[i].stu_num,xuehao)==0)
			{
				com[i].flag=0;
				h=sys.wHour;
				m=sys.wMinute;
				s=sys.wSecond;
				stu_time=timecalculate(com[i].start_h,com[i].start_m,com[i].start_s,h,m,s);
				f=1;
			}
		}
	}
	if(f==0)
	{
		printf("--------您输入的学号有误--------\n");
		return;
	}
	printf("--------退出机器成功,您本次上机时长 %d 秒 --------\n",stu_time);
}
void tongji()//占用统计
{
	for(int i=1;i<51;i++)
	{
		printf("电脑%d  ",i);
		if(com[i].flag==0)
			printf("空闲\n");
		if(com[i].flag==1)
			printf("占用\n");
		if(com[i].flag==-1)
			printf("故障\n");
	}
}
void guzhang()//故障统计
{
	for(int i=1;i<51;i++)
	{
		if(com[i].flag==-1)
			printf("机器 %d \n",i);
	}
}
void addguzhang()//增加、记录故障机器
{
	printf("----------请输入故障机的机号-----------\n");
	int n;
	scanf("%d",&n);
	com[n].flag=-1;
	printf("------------故障机添加成功-------------\n");
}
int main()//主函数
{
	system("color 0A");
	ready();
	printf("--------欢迎使用学生上机管理系统--------\n");
	printf("|-----------按1进行学生上机------------|\n");
	printf("|-----------按2进行学生下机------------|\n");
	printf("|-----------按3进行占用统计------------|\n");
	printf("|-----------按4进行故障统计------------|\n");
	printf("|----------按5进行故障机添加-----------|\n");
	printf("----------------按6退出-----------------\n");
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		switch(n)
		{
		case 1:up_computer();break;
		case 2:down_computer();break;
		case 3:tongji();break;
		case 4:guzhang();break;
		case 5:addguzhang();break;
		default:printf("-----------退出系统成功-----------\n");return 0;
		}
	}
	return 0;
}
		

对代码有疑问可以私信作者哦,虽然不一定回复。转载标明出处,如果对您有用希望点个赞~~

报告链接:报告

--== 微机室上机记录管理系统 V1.3 ==-- 程序更新(2014年5月26日) 1、修正管理员编辑记录时任教师无法修改的问题; 2、调整管理员后台记录显示为多重条件显示,按照上机时间降序,节次降序,机号升序显示,这样按照机号顺序可以及时查看哪台机器未提交记录。 --== 微机室上机记录管理系统 V1.2 ==-- 程序更新(2010年5月25日) 修正管理员编辑记录时节次无法修改的问题。 --== 微机室上机记录管理系统 V1.1 ==-- 程序更新(2009年12月14日) 修正管理员编辑记录时班级显示错误与提交错误的问题。 --== 微机室上机记录管理系统 V1.0 ==-- 1、本程序为ASP系统,需配置本机支持IIS,将本程序复制到WEB目录并修改数据库路径。 2、设计思路: 学校机房学生填写上机记录,因为缺乏有效管理,记录经常缺失或者个别学生胡乱填写,故参照相关程序设计该程序。程序需开机自启动,启动后为全屏无菜单栏、工具栏等相关按钮,学生必须填写提交后方可关闭窗口继续操作,因此添加了一个“启动 Internet Explorer 浏览器”的快捷方式,并设置启动参数为开机全屏,将其添加到启动菜单即可实现该功能。 3、同时鉴于学生填写时出现错误问题的情况,添加了教师后台,教师后台可以编辑或删除不符合要求的记录。教师可通过数据库添加或修改管理员用户名和密码。 4、使用说明: 学生填写部分:本软件采用Macromedia Dreamweaver MX 2004+access编写而成,首页是要求学生填写的内容,其中姓名一是必须填写的,其他为可选项,学生提交后,会提示成功信息,并列出最近填写的前10名名单(主要为了增加学生填写兴趣)。填写成功学生就可以点击关闭链接关闭浏览器继续操作。 5、数据库部分: 本程序数据库为access.mdb,且已备份一个原始空数据库,数据库路径可用记事本程序打开Connections目录下shuju.asp文件,修改“H:\flash_homes\0-JILU\ACCESS.MDB”为本机路径即可。 6、程序使用方法: 程序根目录下有一个“启动 Internet Explorer 浏览器”的快捷方式,该快捷方式可设置为客户机自启动,IE启动后为全屏并打开上机记录系统程序,填写完毕后才出现关闭链接,避免学生不填写记录进入操作。修改该快捷方式属性为本机地址即可。 7、教师管理部分: 在Index.asp首页页面上单击“教师管理”链接,进入教师管理登录页面,输入用户名:admin,密码: admin,进入管理页面,会自动列出最近40个填写的名单,教师可以根据需要修改或者删除不合格的填写记录。教师也可以根据机号查询一台计算机上机记录填写情况,根据需要打印。 8、服务器端获取客户机计算机名的运行命令行: cscript C:\Inetpub\AdminScripts\adsutil.vbs set/w3svc/EnableReverseDNS "TRUE" 在服务器端选择“程序\运行”,运行上述命令即可。 制作:淄博市博山八中 王训波 网址:http://www.5uol.cn QQ:20702537
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值