机房机位预约模拟管理系统设计源代码

合集下载

java仓库管理系统课程设计源代码

java仓库管理系统课程设计源代码

一、项目背景介绍1.1 仓库管理系统的重要性仓库管理系统是一种对仓库内物品进行全面管理和监控的信息系统。

在现代物流管理中,仓库管理系统扮演着至关重要的角色,可以提高仓库的利用率、降低存货成本、提高物流效率,为企业节省大量人力和物力资源,是企业管理中不可或缺的一部分。

1.2 项目意义本课程设计拟设计并实现一套基于Java语言的仓库管理系统,旨在通过应用软件技术和信息管理技术,实现对进销存等多类业务流程的自动化管理,并在实际操作中验证其运行效果和实用性,为学生提供一种将所学知识应用于实践的机会。

二、系统功能需求2.1 基本功能1) 系统登入:要求用户输入用户名和密码进行登入验证;2) 信息录入:包括商品信息、入库信息、出库信息等的录入;3) 信息查询:可以根据商品编号、名称、类别等条件查询商品信息;4) 库存管理:可以实时查看库存状况,并进行库存的盘点与调剂;5) 报表输出:可以输出商品进销存报表,方便管理人员进行决策;6) 权限管理:不同用户具有不同的权限,管理员具有对系统进行设置的权限。

2.2 进一步功能1) 供应商管理:可以录入供应商信息,并进行供应商的评价和选择;2) 客户管理:可以录入客户信息,并对客户进行分类管理;3) 交易管理:支持交易的生成、记录和统计。

三、技术选型和开发环境3.1 技术选型本系统采用Java语言作为主要开发语言,使用MySQL作为数据库,前端采用Swing技术进行界面设计,后端采用JDBC进行数据传输和交互。

3.2 开发工具1) 开发环境:Eclipse2) 数据库工具:Navicat3) 版本管理工具:Git4) 项目管理工具:Maven四、系统设计4.1 系统架构设计本系统采用MVC(Model-View-Controller)架构,将业务逻辑、数据表示和用户界面分离,使得系统更加易于维护和升级。

4.2 数据库设计1) 商品表:包括商品编号、名称、类别、进价、售价、库存等字段;2) 入库表:包括入库单号、商品编号、数量、日期等字段;3) 出库表:包括出库单号、商品编号、数量、日期等字段;4) 用户表:包括用户名、密码、权限等字段。

非编网络机房管理系统的设计及实现

非编网络机房管理系统的设计及实现


0 技术 在 史 记 录 另 外 编辑 工 作 站 采 用 的 是 C U P + G P U + I ,

由 于 人 多机 位 有 限


而 早 先 占到机 位 的 人 又 可 能 会 长 时
节 目编 辑 时

系 统 资 源 消耗本 身 就 比 较 大

如 果 再 运 行其 他

间 占用 机 器 从 而 经 常 发 生 当 曰 要 播 出 的节 目没 有 机 位进 行 编辑 的情 况 外


也 缩减 了 机 器

系 统 的整体 结 构 功 能 如 图

所示

我们
的使 用 寿 命
近 年来


随着 频 道 的发 展

人 员 显 著增 加


的总体 原 则是 尽 量 利 用 A u t o

n e
t
现 有资 源


尽 可 能地 减小 系

种状况就 尤为突出
鉴于此

我们决定 开 发

套 机 房 管理 系
例 如 规 则 的制定


检测人 员 当

据规 则对 上 机 人 员 在 机 器 的操 作 方 面 进 行 限 制
的 目的 在 结 构 上



以达 到 管 理
前 的上 机 是 否 符 合 规 则
程 关机


给 客户端 发 送 指令

实 时监 控

该 系 统 属 于 典 型 的 C S 结 构 所 有 编辑 工

计算机机房机房管理系统源程序(C++)

计算机机房机房管理系统源程序(C++)

#include<stdio.h>#include<string.h>#include<time.h>#include<stdlib.h> /*颜色控制*/#define MaxSize 100/*定义1符号常量*/FILE *fp;struct student_info{ int seat; //机号char name[10]; //姓名char zhuangtai[30];long stu_num; //学号int time;char kaishi[10];}StudentList[MaxSize];void denglu();void Search();void Show();void xiugai();void xiaji();void satutation();void luru();void exiit();//主菜单void main(){int i,j;system("color 4D"); //字体和背景颜色for(j=1;j<=100;j++){StudentList[j].time=0; //给所有机子上机时间赋值为0,代表空机 StudentList[j].seat=j; //给所有机子编号 }do{printf("\t\t\t★★★★★★★★★★★★★★★★★\n\n");//显示一个简易菜单printf("\t\t\t ◆◆欢迎使用机房管理系统◆◆ \n\n");printf("\t\t\t★★★★★★★★★★★★★★★★★\n\n");printf("\n");printf("☆¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤☆\n");printf("☆\t\t\t1-- -登陆计算机(denglu)☆\n"); printf("☆\t\t\t2----查询单个上机信息(Search)☆\n");printf("☆\t\t\t3----显示所有使用者信息(Show)☆\n");printf("☆\t\t\t4----修改电脑使用者信息(xiugai)☆\n");printf("☆\t\t\t5----下机(xiaji)☆\n");printf("☆\t\t\t6----查询某计算机位置(satutation) ☆\n");printf("☆\t\t\t7----计算机信息录入 (luru) ☆\n");printf("☆\t\t\t8----退出(Exiit)☆\n");printf("☆¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤☆\n");printf("请输入要选择功能的代码:\n");scanf("%d",&i); //接受用户的选择switch(i){case 1:denglu(); //调用学生信息输入函数break;case 2:Search(); //调用上机信息查询函数break ;case 3:Show(); //调用上机信息全显示函数break;case 4:xiugai(); //调用上机信息修改函数break;case 5:xiaji(); //调用计费函数break;case 6:satutation();break;case 7:luru();break;case 8: exiit();break;default:printf("错误选择!请重选");break;}}while(i!=8);}/*模块一登陆计算机*/void denglu(){int i,k=0; /*全局变量*/for(i=1;i<=100;i++){if(StudentList[i].time==0) //检测机房是否有空机位 k=0;elsek=1;}if(k!=0){printf("机房已满!");return;}elseprintf("请输入机号:");scanf("%d",&i);if(i>100){printf("请输入小于等于100的数");return;}if(StudentList[i].time!=0){printf("已经有人正在操作此机:");return;}elseprintf("请输入上机者姓名:");scanf("%s",StudentList[i].name);printf("请输入上机者学号:");scanf("%ld",&StudentList[i].stu_num);printf("请输入上机时刻:");scanf("%s",&StudentList[i].kaishi);printf("请输入上机时间:");scanf("%d",&StudentList[i].time);printf("\n\n");FILE *fp;fp=fopen("c:\\上机信息.doc","w");for (i=0;i<100;i++){ if (fwrite(&StudentList[i],sizeof(struct student_info),1,fp)!=1)printf("file write error\n");}fclose(fp);}//模块二查询单个上机信息void Search(){int i;printf("请输入要查询的机号:");scanf("%d",&i);if(StudentList[i].time!=0) //是否上机{printf("姓名:%s\t\t",StudentList[i].name);printf("学号:%ld\t\t",StudentList[i].stu_num);printf("上机时刻:%s\t\t",StudentList[i].kaishi);printf("上机时间:%d\t\t",StudentList[i].time);printf("状态:计算机正在使用");}elseprintf("计算机未使用");printf("\n\n");}//模块三显示所有使用者信息void Show(){int i;printf("\n");printf("机号\t姓名\t学号\t上机时刻\t上机时间\t计算机状态\n");for(i=1;i<=100;i++)if(StudentList[i].time!=0) //判断标准,检索到则输出 {printf("%d\t",StudentList[i].seat);printf("%s\t",StudentList[i].name);printf("%ld\t",StudentList[i].stu_num);printf("%s\t",StudentList[i].kaishi);printf("%d\t\t",StudentList[i].time);printf(" 计算机正在使用\n");}else{printf("%d\t",i);printf("无\t");printf("无\t");printf("无\t\t");printf("无\t\t");printf(" 计算机未使用\n");} printf("\n\n");}//模块四修改上机信息void xiugai(){int i;printf("请输入要修改数据的机号:");scanf("%d",&i);if(StudentList[i].time!=0){printf("请输入姓名:");scanf("%s",StudentList[i].name);printf("请输入学号:");scanf("%d",&StudentList[i].stu_num);printf("请输入上机时刻:");scanf("%s",&StudentList[i].kaishi);("请输入上机时间:");scanf("%d",&StudentList[i].time);}elseprintf("计算机未使用");printf("\n\n");}//模块五下机void xiaji(){int j,m; char a;printf("您是否要下机?\n");L1:;printf("请输入输入y下机,输入其他返回\n");scanf("%s",&a);if(a=='y'||a=='Y'){printf("\n\t请输入您所使用的计算机的序号(1--100):");scanf("%d",&m);for(j=1;j<=100;j++){if(j==m)StudentList[j].time=0; }printf("\n\n");}elsegoto L1;printf("\n\n");}//模块六查询计算机位置void satutation(){ int i,j,k,m=1;char a[20][5];for (i=0;i<20;i++)for (j=0;j<5;j++){a[i][j]=m;m=++m;}printf("请输入查询的机号:");scanf("%d",&k);if(k>100)printf("请输入小于等于100的数");else{ for (i=0;i<20;i++)for (j=0;j<5;j++)if(a[i][j]==k)printf ("该机号对应的计算机在第%d行,第%d列",i+1,j+1);} printf("\n\n");}//模块七计算机信息录入与显示void luru(){int i;int a;printf("\n您是要重新录入计算机信息,还是要查询计算机信息?\t\n"); printf("1: 重新录入计算机信息,\n2: 查询计算机信息\n");scanf("%d",&a);switch(a){case 1:for(i=1;i<=100;i++){ StudentList[i].seat=i;printf("计算机序号:%d",StudentList[i].seat);printf("\n请输入上机者姓名:\n");scanf("%s",StudentList[i].name);printf("请输入上机者学号:\n");scanf("%ld",&StudentList[i].stu_num);printf("请输入上机时刻:\n");scanf("%s",&StudentList[i].kaishi);printf("请输入上机时间:\n");scanf("%d",&StudentList[i].time);printf("输入计算机状态:\n");scanf("%s",&StudentList[i].zhuangtai);printf("\n");}FILE *fp;fp=fopen("c:\\上机信息.doc","w");for (i=1;i<=100;i++){ if (fwrite(&StudentList[i],sizeof(structstudent_info),1,fp)!=1)printf("file write error\n");}fclose(fp);printf("\n\t\t\t\t数据已成功写入\n\t\t\t请按任意键返回主菜单!\n\n\n\n");getchar();break;case 2: fp=fopen("c:\\上机信息.txt","r");printf("\n\n\n\t序号\t姓名\t学号\t上机时刻\t上机时间\t\t\n\n");break;default:printf("请输入1或2 选择相应功能\n");luru();}printf("\n\n\n\n");}//模块八退出系统void exiit(){ char k;printf("您真的要退出本程序吗?\n");printf("输入 n或N将重新进入本程序,输入其他将退出该程序 !\n");printf("请输入: \n");scanf("%s",&k);switch(k){case 'n':main() ;break;default: printf("\n\n\n\n\n=================================感谢您的使用===================================\n 设计者:西安理工大学自动化学院\n\n\n\n\n ");}}。

机房管理系统设计方案

机房管理系统设计方案

目录1需求分析 (2)2 概要分析 (2)2.1 上机管理 (2)2.2 排课管理 (2)2.3 帐务管理 (3)2.4 设备管理 (3)2.5 系统功能 (4)2.6 查询统计 (4)2.7 远程监控 (5)3 概要设计 (5)3.1系统拓扑图 (5)3.2 系统结构流程图 (7)4 详细设计 (10)4.1 数据库定义 (10)1需求分析机房管理系统是一套基于图形用户界面(GUI)、下拉菜单以及导航功能相结合模式下的友好操作界面,易学易用。

系统采用服务器/客户机(C/S)方式,方便地实现多用户端、多机房统一管理。

系统功能齐全,可基本实现机房管理规范化、自动化以及信息化。

该系统主要包括:上机管理(教学任务外的业余上机)、排课管理(教学大纲任务、毕业设计、选修课)、帐务管理、设备管理、档案日志管理、查询统计、系统功能、远程监控等几大子系统,具有稳定、实用、操作简便等特点。

2 概要分析2.1 上机管理主要针对业余自由开放机房,提高机房资源利用,方便学生上机,减轻机房老师管理工作量。

实现网络管理与控制,实时辨别及处理上机、下机情况,实时计费,实时处理各种异常情况。

实现业余上机管理规范自动化、流程化。

主要功能如下:1、上机实时计费(上/下机实时辨别、计费)2、上机情况监控(机器使用情况/登陆情况/最近登陆情况/网络监控等)3、异常数据处理(处理非正常下机,断电等异常情况)4、异常上课处理(处理非正常上/下课,断电等异常情况)5、查询统计(查看及统计上机情况:流水帐/上机情况查询/登陆情况查询)6、机房机器使用统计(已登陆机器、未登陆机器、正常通过机器、非正常通过机器)7、监控日志(监控操作人员操作系统软件系统的日志)2.2 排课管理实现机房上机智能、动态排课及上课,满足正规机房教学任务,实现机房正规上课上机课时量化及细化管理。

集中规划教学任务规定上机实习课时,动态安排上机课程、上机地点、上机时间以及上机实习内容,自动管理识别业余上机和正课上机。

管理信息系统课程设计程序代码完整版

管理信息系统课程设计程序代码完整版

1、Program.csusing System;using System.Collections.Generic;using System.Windows.Forms;using xyq20091204;using System.Data.SqlClient;static class Program{///<summary>///应用程序的主入口点。

///</summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new用户登录());if (SQL_Class.LoginState == 1)data.data.ConnStr = "Data Source=CAE47;Initial Catalog=xyq20091204;Integrated Security=True";Application.Run(new供应商管理信息系统());}}Property_Class.csusing System;using System.Collections.Generic;using System.Text;using ponentModel;namespace xyq20091204{class Property_Class{private string Id;private string Manager;private string Tel;private string Email;private string Addr;[CategoryAttribute("供应商基本信息"), DescriptionAttribute("显示供应商编号")] public string供应商编号{get { return Id; }set { Id = value; }}[CategoryAttribute("供应商基本信息"), DescriptionAttribute("显示负责人")] public string负责人{get { return Manager; }set { Manager = value; }}[CategoryAttribute("供应商基本信息"), DescriptionAttribute("显示联系电话")] public string联系电话{get { return Tel; }set { Tel = value; }}[CategoryAttribute("供应商基本信息"), DescriptionAttribute("显示电子邮箱")] public string电子邮箱{get { return Email; }set { Email = value; }}[CategoryAttribute("供应商基本信息"), DescriptionAttribute("显示通讯地址")] public string通讯地址{get { return Addr; }set { Addr = value; }}}}2、SQL_Class.csusing System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;namespace xyq20091204{public class SQL_Class{public static int LoginState = 0;public static SqlConnection xyq_con;public static string xyq_sqlcon = "Data Source=CAE47;InitialCatalog=xyq20091204;Integrated Security=True";public static SqlConnection getcon(){xyq_con = new SqlConnection(xyq_sqlcon); //用SqlConnection对象与指定的数据库相连接 xyq_con.Open(); //打开数据库连接return xyq_con; //返回SqlConnection对象的信息}public void con_close(){if (xyq_con.State == ConnectionState.Open) //判断是否打开与数据库的连接{xyq_con.Close(); //关闭数据库的连接xyq_con.Dispose(); //释放xyq_con变量的所用空间}}public SqlDataReader getcom(string SQLstr){getcon(); //打开与数据库的连接SqlCommand xyq_com = xyq_con.CreateCommand(); //创建一个SqlCommand对象,用于执行SQL语句xyq_mandText = SQLstr; //获取指定的SQL语句SqlDataReader xyq_read = xyq_com.ExecuteReader(); //执行SQL语句,生成一个SqlDataReader结果return xyq_read; //返回读取结果}public void getsqlcom(string SQLstr){getcon(); //打开与数据库的连接SqlCommand SQLcom = new SqlCommand(SQLstr, xyq_con);//创建一个SqlCommand对象,用于执行SQL语句SQLcom.ExecuteNonQuery(); //执行SQL语句SQLcom.Dispose(); //释放SQLcom变量的所有空间con_close(); //调用con_close()方法,关闭与数据库的连接}public DataSet getDataSet(string SQLstr, string tableName){getcon(); //打开与数据库的连接SqlDataAdapter SQLda = new SqlDataAdapter(SQLstr,xyq_con);//创建SqlDataAdapter对象,以读取数据库中的信息DataSet xyq_DataSet = new DataSet(); //创建dataset对象SQLda.Fill(xyq_DataSet, tableName); //把读取的数据写入指定的数据表中return xyq_DataSet; //返回DataSet对象的信息}}}3、供应商管理信息系统.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using xyq20091204;using System.Collections;namespace xyq20091204{public partial class供应商管理信息系统 : Form{SQL_Class SQLClass = new SQL_Class(); //创建一个SQL_Class对象SQLClass,用以调用SQL_Class类中的函数TreeNode SelectNode = new TreeNode(); //创建一个TreeNode对象SelectNode,用以存储被选中的树节点///<summary>///定义一个全局变量,表示左侧的树结构选择的是哪一个///</summary>private string _treeNode = "";public供应商管理信息系统(){InitializeComponent();}private void供应商管理信息系统_Load(object sender, EventArgs e){TreeNode rootnode = new TreeNode("供应商列表", 1, 2); //创建一个TreeNode对象rootnodetreeView1.Nodes.Add(rootnode); //把创建的rootnode添加为treeview1的根节点}private void UpdateTreeview1() // 加载treeview1根节点下面的子节点{treeView1.Nodes[0].Nodes.Clear(); //把根节点下面的子节点全部清除listView1.Items.Clear(); //清除listView1中的数据//创建一个DataSet对象,并把SQL的查询结果赋值给DSetDataSet DSet = SQLClass.getDataSet("select * from 供应商类别表","供应商类别表");DataTable dt = DSet.Tables["供应商类别表"]; //创建一个DataTable对象if (dt.Rows.Count > 0) //如果查询结果表中有数据for (int i = 0; i < dt.Rows.Count; i++){TreeNode node = new TreeNode(dt.Rows[i]["供应商类别名称"].ToString(), 1, 2);//创建一个TreeNode对象,并对node的属性进行赋值 = dt.Rows[i]["供应商类别编号"].ToString();node.Tag = "供应商类别";treeView1.Nodes[0].Nodes.Add(node); //把node添加到根节点上DataSet DS = SQLClass.getDataSet("select 供应商编号, 供应商名称from 供应商信息表where 供应商类别='"+dt.Rows[i][1].ToString ()+"'", "供应商信息表");DataTable dt1 = DS.Tables["供应商信息表"]; //创建一个DataTable对象if (dt1.Rows.Count > 0)for (int j = 0; j < dt1.Rows.Count; j++){TreeNode node1 = new TreeNode(dt1.Rows[j][1].ToString(), 1, 1);//创建一个TreeNode对象,并对node的属性进行赋值 = dt1.Rows[j][0].ToString();node1.Tag = "供应商";node.Nodes.Add(node1);}} SQLClass.con_close(); //关闭数据库连接,释放资源}private void UpdateListview1(string sql) //加载listview1中的数据,其中sql参数表示传递的SQL语句。

c语言课程设计--机房机位预定系统-绝对正确-附源代码解析

c语言课程设计--机房机位预定系统-绝对正确-附源代码解析

1 设计目的机房机位预定系统2 任务概述20台机器,编号1到20,从早八点到晚八点。

两小时一个时间段,每次可预定一个时间段。

功能要求:(1)系统以菜单方式工作(2)查询,根据输入时间,输出机位信息。

(3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。

(4)退出预定,根据输入的时间,机器号撤销该事件的预定!(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。

.........3 模块划分4 主要函数说明及其N-S图1. 主函数:int main(){Menu(); /*当前状态函数*/}void Menu() /*主界面*/{int n,w;do{puts("\t\t****************机房机位预约系统*******************\n");puts("\t\t*************************菜单***************************\n");puts("\t\t\t 1.查询某时间段机位状态"); /*查询某时间段机位状态*/puts("\t\t\t 2.预定空机位"); /*预定空机位*/puts("\t\t\t 3.取消预订"); /*取消预订*/puts("\t\t\t 4.查询等待信息"); /*查询等待信息*/puts("\t\t\t 5.退出"); /*退出*/puts("\t\t********************************************************\n");printf("选择菜单号(1-5):");scanf("%d",&n);if(n<1||n>5){w=1;getchar();}elsew=0;}while(w==1);switch(n){case 1:Situation();break;case 2:Book();break;case 3:Cancel();break;case 4:SearchWaiting();break;case 5:exit(0);break;}getch();}2.机位查询:void Situation(){int time;printf("输在(8-20)范围内的时间:");scanf("%d",&time);if(time<8||time>20){printf("\t时间输入错误!\n");printf("输入在(8-20)范围内的时间:");scanf("%d",&time);}detail(time); /*函数调用*/getchar();Menu();}3.机位预定:void Book(){int time,i=0,x,y;FILE *fp;char c;printf("在(8-20)时间范围内输入你想要预定的时间:");scanf("%d",&time);if(time<8||time>20){printf("\t时间输入错误!\n");printf("\t在(8-20)时间范围内输入你想要预定的时间:");scanf("%d",&time);}detail(time); /*函数调用*/if(sum[T]>0){ if((fp=fopen("waitlist.txt","a"))==NULL){printf("\n无法打开文件!\n");exit(0);}printf("\n\t请输入你想要预定的机号,并且留下你的电话号码!:\n");scanf("%s %s",wait[i].number,wait[i].telephonenumber);for(i=0;i<1;i++)fwrite(&wait[i],sizeof(struct waitlist),1,fp);fclose(fp);/*向文本文档添加一个结构体单元*/printf("\t再次输入你想要预定的时间!\n");scanf("%d",&x);/*sum[T]--; / *预定后该时间段空机位数减1*//*computer[T][x]=1; / *预定后该机状态变为1*/printf("\t预订成功!\n");getchar();Menu();}else{printf("这是在这个时间段内未预定的电脑!\n");for(i=T+1;i<6;i++){ time=9+2*i;detail(time); /*函数调用*/if(sum[T]>0)printf("\tThe latest free time is %d,%d\n",2*i+8,2*i+10);break;}printf("\t你想要预定吗?:y/n?");scanf("%s",&c);getchar();if(c=='Y'||c=='y'){if((fp=fopen("waitlist.txt","r"))==NULL){printf("\n无法打开文件!\n");exit(0);}else{ printf("waitlist:number telephonenumber\n");for(i=0;!feof(fp);i++){fscanf(fp,"%s %s",&wait[i].number,&wait[i].telephonenumber);}fclose(fp);}for(i=0;i<10;i++){ prione(i);}printf("\n\t请输入你想要预定的机号,并且留下你的电话号码!:\n");if((fp=fopen("waitlist.txt","a"))==NULL){printf("\n无法打开文件!\n");exit(0);}scanf("%s %s",wait[i].number,wait[i].telephonenumber);for(i=0;i<1;i++)fwrite(&wait[i],sizeof(struct waitlist),1,fp);fclose(fp); /*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/printf("再次输入电脑的序号!\n");scanf("%d",&y);sum[T]--;computer[T][y]=1;printf("\t好了,请等待我们的电话!\n");Menu();}else Menu();}}N4.取消预定:void Cancel(){int time,number;printf("在(8-20)时间范围内输入你已经预定的时间:");scanf("%d",&time);if(time<8||time>20){printf("\t输入时间错误!\n");printf("\t在(8-20)时间范围内输入你已经预定的时间:");scanf("%d",&time);}else{printf("\t输入你预定的机号:");scanf("%d",&number);}detail(time);/* sum[T]++; / *预定后该时间段空机位数加1*//*computer[T][number]=0; / *预定后该机状态变为0*/printf("\t取消成功!\n");getchar();Menu();}5.查询等待信息:void SearchWaiting(){int time,i;FILE *fp;printf("\tInput time you want to search between(8-20):");scanf("%d",&time);if(time<8||time>20){printf("\tWrong time!\n");printf("\tInput time you want to search between(8-20):");scanf("%d",&time);}else;if((fp=fopen("waitlist.txt","r"))==NULL){printf("\nCannot open file!\n");exit(0);}else{ printf("waitlist:number telephonenumber\n");for(i=0;!feof(fp);i++){fscanf(fp,"%s %s",&wait[i].number,&wait[i].telephonenumber);}fclose(fp);}for(i=0;i<10;i++){ prione(i);}Menu();}5 程序运行数据及其结果1.主菜单:2.机位查询:3.机位预定:4.查询等待信息:6 课程设计心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。

非编网络机房管理系统的设计及实现

非编网络机房管理系统的设计及实现
BuIde l r

后 台 数 据 库 为 S ev r∞ 0 QL s re2 。
在 设计 系统 的构 架 和 功 能 时 们 充 分考 虑 了原 有 网 我
络 的结 构 和工 作 流 程 。我 们 现 有 的 非 线 编辑 网是 新 奥 特 公 司 的 at nt 络 ,它 采 用 的是 F uo.e 网 c架 构 , 各 工 作 站 分 别 接 人 光 纤 网 和 千 兆 以 太 网 。 用 户 上 机 首 先 通 过 登 录

这 是 系统 设计 的核 心 , 是 难 点 , 则 制定 的好 坏 将 也 规 直 接 决 定 着 该 管理 系 统 的成 功 与 否 。适应 目前 机 房 的 上 机 状 况 ,并 充 分 考虑 其 灵活 性 是 我 们 设计 规 则 的 一 个 基
本原则。
目前 . 我频 道 的节 目主 要是 以 日版 为 主 , 一条 节 目的 制 作 ,是 由多人 分 工 完 成 的 ,例 如 粗 编编 辑 、字幕 编 辑
1 c I y f a .a dT e t s e mo g o R ll o d0 n VC ne r
非编网络机房管理系统的设计及实现
◎李 刚 王 轶 河南电视台都市频道技术部



们 决 定 开 发 一 套 机 房 管 理 系 统 , 加 强 上 机 管 理 , 高 工 以 提
河 南 电视 台都 市 频 道 的 Hmaa a非 线 编机 房 目前 有 i ly 2 1台编 辑 工 作 站 .供 频 道 1 栏 目约 8 6个 O名编 辑 记 者 使 用 。 房 以前 的管 理 处 于 完 全开 放 状 态 . 上机 人 员没 有 机 对
任 何 的 限 制 。 于 人 多机 位 有 限 , 早 先 占 到 机 位 的 人 又 由 而 可 能 会 长 时 间 占 用 机 器 从 而 经 常 发 生 当 日 要 播 出 的 节 目没 有 机 位 进 行 编 辑 的 情 况 ,这 对 编 辑 记 者 们 的 工 作 造 成 了很 大 的 影 响 . 外 , 时 间的 占用机 位 , 仅 使 得 效 此 长 不 率 低 下 . 缩 减 了 机 器 的 使 用 寿 命 。 年 来 ,随 着 频 道 的 也 近

会议场馆预约管理体系系统的设计方案与实现

会议场馆预约管理体系系统的设计方案与实现

会议场馆预约管理系统的设计与实现-建筑论文会议场馆预约管理系统的设计与实现包琦琦郑梁梦(宁波市公安局科技通信管理局,浙江宁波315000)【摘要】大型企事业单位中会议室等活动场馆采用手工方式进行预约登记管理效率低下,可能会造成预约冲突等问题。

当前企事业单位信息化建设正在不断推进,但企业内部会议场馆的管理往往是信息化建设中容易忽视的部分。

设计并实现了一个基于Web的会议场馆预约管理系统,可以部署在企事业单位内部局域网内,实现会议场馆的在线预约登记、审批、撤销等功能,能够有效避免预约冲突,提高会议场馆管理的有效性,提升工作效率。

关键词会议场馆;预约管理;Web;NET作者简介:包琦琦(1983.10.12—),男,汉族,助理工程师,研究方向为计算机软件及通信。

郑梁梦(1980.10.10—),男,汉族,工程师,研究方向为计算机软件及通信。

0 引言随着经济水平的不断提高,企业规模不断发展壮大,企业管理也日趋复杂,急需现代科技的辅助。

会议是企事业单位解决问题、开展研讨的重要手段,会议安排、会议场馆的管理也成为现代大型企业的重要基础性工作。

尽管企业信息化工作已经开展多年,大型企业一般也都建设了办公自动化系统、ERP系统等,但企业内部会议场馆的管理往往是信息化工作中被忽略的环节。

因此,目前多数企业中仍采用人工登记管理的方法进行会议场馆的预约管理,甚至在有的企事业单位中并没有专门的会议场馆的预约管理。

有的企业中的多个会议场馆直接分配给不同的部门,不进行统一管理调配,这样有可能导致有的部门的会议场馆利用率很低,而有的部门却不够用的情况。

如采用统一的人工管理方式也可能产生诸多不良后果:(1)预约时间的冲突:由于人工管理方式无法做到严格审查针对同一个会议场馆的不同预约申请的时间是否有重叠,多方申请同一个时间段占用同一个会议场馆的情况很有可能发生;(2)场馆安排不符合要求:企业内部不同的会议场馆环境、设备上往往存在很大的差异(例如是否配备投影仪、是否配备麦克风、容纳人数、圆桌型还是教室型等),人工管理方式中由于申请方说明不清或者管理人员记录不清导致安排的场馆不符合会议的要求。

机房预订系统_代码

机房预订系统_代码

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<iostream.h>#define MAX 2 //机房电脑总数#define S(r) (r-8)/2#define shijian(g) g*2+8typedef struct Cell{int CNum; //CNum表示这个时间段已预订的机器数struct Student *head;//这是表示这个时间段预订的机器的链表的第一个节点指针struct Student *last;}Cell;Cell TimeQueue_yuding[7][6];//七天,每天分为六个时间段,预订到电脑的队列Cell TimeQueue_paidui[7][6];//七天,每天分为六个时间段,排队队列typedef struct Student{// int times;//次数char number[10];//学号int locat;//机器号int day;//星期几int time;//时间struct Student *next;}Student;char *change(int n){char c[5];switch(n){case 0:strcpy(c,"日");break;case 1:strcpy(c,"一");break;case 2:strcpy(c,"二");break;case 3:strcpy(c,"三");break;case 4:strcpy(c,"四");break;case 5:strcpy(c,"五");break;case 6:strcpy(c,"六");break;}return c;}int Ture(int m,int n){if(m<0||m>6){printf("输入的时间(星期几)非法!请重新输入:\n");return 0;}else if(n<8||n>20){printf("您输入的时间(几点钟)不在上班时间内,请重新输入:\n");return 0;}elsereturn 1;}void waiting(int m,int n){char Infor[10];struct Student *Rem;printf("请输入你的学号\n");scanf("%s",Infor);if(TimeQueue_yuding[m][n].CNum+1<MAX){printf("此时间段有空余电脑,不需要排队!\n");return;}else if(TimeQueue_paidui[m][n].head==NULL){Rem=(Student *)malloc(sizeof(struct Student));strcpy(Rem->number,Infor);Rem->locat=1;Rem->day=m;Rem->time=n;Rem->next=NULL;TimeQueue_paidui[m][n].head=Rem;TimeQueue_paidui[m][n].last=Rem;TimeQueue_paidui[m][n].CNum++;printf("成功排队,在你之前有%d人在排队\n",Rem->locat-1);}else{Rem=(Student *)malloc(sizeof(struct Student));strcpy(Rem->number,Infor);Rem->locat=TimeQueue_yuding[m][n].CNum+1;Rem->day=m;Rem->time=n;Rem->next=NULL;TimeQueue_paidui[m][n].last->next=Rem;TimeQueue_paidui[m][n].last=Rem;TimeQueue_paidui[m][n].CNum++;printf("成功排队,在你之前有%d人在排队\n",TimeQueue_paidui[m][n].CNum-1);}}void inquir_waiting() //查询等待信息{Student *p;int m,n,t,k;char c1[5],c2[5];printf("查找全部请输入1;查找部分请输入2\n");scanf("%d",&t);switch(t){case 1:for(m=0;m<7;m++)for(n=0;n<6;n++){strcpy(c1,change(m));if(TimeQueue_yuding[m][n].CNum<MAX){printf("星期%s在%d到%d时间段内有%d台未被预订的电脑\n",c1,shijian(n),shijian(n)+2,MAX-TimeQueue_yuding[m][n].CNum);}else{printf("星期%s在%d到%d时间段内预订已经满,有%d人在排队\n",c1,shijian(n),shijian(n)+2,TimeQueue_paidui[m][n].CNum);printf("排队学生学号为:\n");p=TimeQueue_paidui[m][n].head;for(k=0;k<TimeQueue_paidui[m][n].CNum;k++){printf("%s\t",p->number );p=p->next ;}}}break;case 2:printf("输入想要查询的时间(0代表星期日;1代表星期一.......6代表星期六)\n");scanf("%d",&m);printf("输入想要查询的时间(24 hours 8~20o'clock,include 8 o'clock)\n");scanf("%d",&n);n=S(n);strcpy(c2,change(m));if(TimeQueue_yuding[m][n].CNum<MAX)printf("星期%s在%d到%d时间段有%d台未被预订的电脑\n",c2,shijian(n),shijian(n)+2,MAX-TimeQueue_yuding[m][n].CNum);elseprintf("星期%s在%d到%d时间段预订已经满,有%d人在排队\n",c2,shijian(n),shijian(n)+2,TimeQueue_paidui[m][n].CNum);break;}}void booking(int m,int n) //预订机位{int k,i,j;char c1,c3,c2,c4,c5[5],c6;char Infor[10];//学号Student *Rem;if(TimeQueue_yuding[m][n].CNum>=MAX){printf("此时间段没有空余电脑!你是否愿意在此时间段排队?,(输入y表排队,输入其他字符表退出)\n");printf("警告!如果你要排队,在没有足够人取消预订定的情况下,你可能不能预订到机位\n");k=m;for(i=k;i<7;i++)for(j=0;j<6;j++){if(TimeQueue_yuding[i][j].CNum<MAX){strcpy(c5,change(i));printf("星期%s在%d到%d时间段有%d个空机位,是否愿意更改预定时间,y/n?\n",c5,shijian(j),shijian(j)+2,MAX-TimeQueue_yuding[i][j].CNum);scanf("%c",&c2);scanf("%c",&c2);if(c2=='y')booking(i,j);if(TimeQueue_yuding[i][j].CNum<MAX){printf("还有%d台电脑,是否想继续在这个时间段预订,是输入y,退出输入t,否输入其他字符,/n?\n",MAX-TimeQueue_yuding[i][j].CNum);scanf("%c",&c6);scanf("%c",&c6);if(c6=='y')booking(i,j);if(c6=='t')return;}}printf("退出自动查询请输入y,否则输入其他字符:\n");scanf("%c",&c4);if(c4=='y')return;}scanf("%c",&c1);scanf("%c",&c1);if(c1=='y')waiting(m,n);else{printf("是否愿意查看预订时间表,y/n?\n");scanf("%c",&c3);scanf("%c",&c3);if(c3=='y')inquir_waiting();}}else{printf("请输入你的学号:\n");scanf("%s",Infor);if(TimeQueue_yuding[m][n].head==NULL){Rem=(Student *)malloc(sizeof(struct Student));strcpy(Rem->number,Infor);Rem->locat=1;Rem->day=m;Rem->time=n;Rem->next=NULL;TimeQueue_yuding[m][n].head=Rem;TimeQueue_yuding[m][n].last=Rem;TimeQueue_yuding[m][n].CNum++;printf("成功预定,机号为%d\n",TimeQueue_yuding[m][n].CNum);}else{Rem=(Student *)malloc(sizeof(struct Student));strcpy(Rem->number,Infor);Rem->locat=TimeQueue_yuding[m][n].CNum+1;Rem->day=m;Rem->time=n;Rem->next=NULL;TimeQueue_yuding[m][n].last->next=Rem;TimeQueue_yuding[m][n].last=Rem;TimeQueue_yuding[m][n].CNum++;printf("成功预定,机号为%d\n",Rem->locat);}}}void inquir(int m,int n)//查询空机位{char c1,c2,c3;if(TimeQueue_yuding[m][n].CNum<=MAX){printf("有%d个空机位,你是否想预订(输入y表预订,输入其他的字符表退出)\n",MAX-TimeQueue_yuding[m][n].CNum);scanf("%c",&c1); scanf("%c",&c1);if(c1=='y')booking(m,n);elsereturn;}else{printf("没有空机位,当前时间段有%d人在排队",TimeQueue_paidui[m][n].CNum);printf("你是否想在这个时间段排队?,(输入y表排队,输入其他字符表退出)\n");printf("警告!如果你要排队,在没有足够人取消预订定的情况下,你可能不能预订到机位\n");scanf("%d",&c2);scanf("%d",&c2);if(c2=='y')waiting(m,n);else{printf("是否愿意查看预订时间表,y/n?\n");scanf("%c",&c3);scanf("%c",&c3);if(c3=='y')inquir_waiting();}}}void Inquir() //查询已预订机位{char a[10],c[5];int m,n,t=0;Student *p;printf("请输入学号:\n");scanf("%s",a);for(m=0;m<7;m++)for(n=0;n<6;n++){p=TimeQueue_yuding[m][n].head;while(p!=NULL){if(!strcmp(p->number,a)){if(t==0){printf("预订的机位信息为:\n");t=1;}strcpy(c,change(p->day));printf("星期%s在%d到%d时间段\n",c,shijian(p->time),shijian(p->time));}p=p->next;}}if(t==0)printf("你没有成功预订的机位!\n");}void cancel(int m,int n) //取消预订{char c;int t=0,i;char Infor[10];struct Student *Rem;struct Student *q;loop:printf("Please input your Nobel!\n");scanf("%s",Infor);Rem=TimeQueue_yuding[m][n].head;q=Rem;for(i=1;Rem!=NULL;q=Rem,Rem=Rem->next,i++){if(!strcmp(Rem->number,Infor)){if(TimeQueue_paidui[Rem->day][Rem->time].head!=NULL){strcmp(Rem->number,TimeQueue_paidui[Rem->day][Rem->time].head->number);TimeQueue_paidui[Rem->day][Rem->time].head=TimeQueue_paidui[Rem->day][Rem->tim e].head->next;TimeQueue_paidui[Rem->day][Rem->time].CNum--;}else{TimeQueue_yuding[Rem->day][Rem->time].head=TimeQueue_yuding[Rem->day ][Rem->t ime].head->next;TimeQueue_yuding[Rem->day][Rem->time].CNum--;}t=1;}}if(t==0){printf("输入学号没有预订,是否再次输入:y/n?\n");scanf("%c",&c);scanf("%c",&c);if(c=='y')goto loop;return;}elseprintf("已取消预订!\n");}void newline(int n) /*此函数的作用是空行,若输入n就输出n行*/ {int i;for(i=1;i<=n;i++)printf("\n");}void space(int n) /*此函数的作用是留空白,输入n就输出n个空白*/ {int i;for(i=1;i<=n;i++){printf(" ");}}void main(){char c;int n,m,i,j,k;for(i=0;i<7;i++)for(j=0;j<6;j++){TimeQueue_paidui[i][j].CNum=0;TimeQueue_paidui[i][j].head=NULL;TimeQueue_paidui[i][j].last=NULL;TimeQueue_yuding[i][j].CNum=0;TimeQueue_yuding[i][j].head=NULL;TimeQueue_yuding[i][j].last=NULL;}while(1){space(20);printf("*********Menu*********\n");printf("1. 查询预定的机位\n2. 查询空机位\n3. 预定\n4. 取消预定\n5. 排队\n6. 查询等待者时间列表\n0. 退出\n");printf("请输入序号!:\n");space(20);printf("**********************\n");printf("请选择:\n");scanf("%d",&k);switch(k){case 1:Inquir();break;case 2:loop1:printf("输入想要查询的时间(0代表星期日;1代表星期一.......6代表星期六)\n");scanf("%d",&m);printf("输入想要查询的时间(24 hours 8~20o'clock,include 8 o'clock)\n");scanf("%d",&n);if(Ture(m,n)){n=S(n);inquir(m,n);}else{goto loop1;}break;case 3:loop2:printf("输入想要预订的时间(0代表星期日;1代表星期一.......6代表星期六)\n");scanf("%d",&m);printf("输入想要预订的时间(24 hours 8~20o'clock,include 8 o'clock)\n");scanf("%d",&n);if(Ture(m,n)){n=S(n);booking(m,n);}else{goto loop2;}break;case 4:loop3:printf("输入想要取消的时间(0代表星期日;1代表星期一.......6代表星期六)\n");scanf("%d",&m);printf("输入想要取消的时间(24 hours 8~20o'clock,include 8 o'clock)\n");scanf("%d",&n);if(Ture(m,n)){n=S(n);cancel(m,n);}elsegoto loop3;break;case 5:loop4:printf("输入想要排队的时间(0代表星期日;1代表星期一.......6代表星期六)\n");scanf("%d",&m);printf("输入想要排队的时间(24 hours 8~20o'clock,include 8 o'clock)\n");scanf("%d",&n);if(Ture(m,n)){n=S(n);waiting(m,n);;}elsegoto loop4;break;case 6:inquir_waiting();break;case 0:exit(0);default:printf("error\n");}printf("按Eeter继续:\n");scanf("%c",&c);scanf("%c",&c);system("cls");}}。

操作系统课程设计报告题目及代码

操作系统课程设计报告题目及代码

题目一模拟操作系统设计设计一个模拟操作系统管理程序,实现以下管理功能:1.内存管理功能2.文件管理功能3.磁盘管理功能题目二虚拟存储器各页面置换算法的实现与比较内容:设计一个虚拟存储区和内存工作区,通过产生一个随机数的方法得到一个页面序列,假设内存给定的页面数由键盘输入,分别计算使用下述各方法时的内存命中率:先进先出算法〔FIFO〕、最近最少使用算法〔LRU〕、最正确淘汰算法〔OPT〕、最少页面算法〔LFU〕等。

题目三文件系统设计通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。

内容:为Linu*系统设计一个简单的二级文件系统,以实现以下功能:1.可以实现以下几条命令(1)login 用户登录(2)dir 文件目录列表(3)creat 创立文件(4)delete 删除文件(5)open 翻开文件(6)close 关闭文件(7)read 读文件(8)write 写文件2.实验提示〔1〕首先确定文件系统的数据构造:主目录、子目录及活动文件等。

主目录和子目录都以文件的形式存放在磁盘,这样便于查找和修改。

〔2〕用户创立的文件,可以编号存储于磁盘上。

如file0、file1、file2……等,并以编号作为物理地址,在目录中进展登记。

[清华大学?操作系统教程? *丽芬编著题目四设计一个按时间片轮转法进程CPU调度的程序。

提示:〔1〕假设系统有5个进程,每个进程用一个进程控制块PCB来代表,PCB中包含进程名、指针、到达时间、估计运行时间、进程状态表。

其中,进程名即为进程进标识。

〔2〕为每一个进程设计一个要示运行时间和到达时间。

〔3〕按照进程到达的先后顺序排成一个循环队列,再设一个队首指针指向第一个到达的进程首址。

〔4〕执行处理机调度时,开场选择队首的第一个进程运行。

另外再设一个当前运行进程指针,指向当前正运行的进程。

〔5〕由于本实验是模拟实验,所以对被选中进程并不实际启运运行,只是执行:a.估计驼行时间减1b.输出当前运行进程的名字。

基于Web的机房机时预约管理系统的设计与实现

基于Web的机房机时预约管理系统的设计与实现

1 任 课教师在预约机时 中存在的问题
多年来 ,在机 时预约管理方面 ,我们主要采取每 学期初 由任课教师根据 自己制定 的本学期教学 日历亲 自到机房来 ,在机房 管理人 员预先打 印好 的机时预约 登记本上手工登记 。在实 际工作 中,我们发现此方式 存在 以下问题和不足之处 : ( 1 ) 任课教师 实验课 程安排 各异造 成预约冲突[ 2 】 , 影 响机 时预约 :实验教学分为两大类 。第一类为专 门 的实验课程教学 ,第二类是理论加实验课程中的实验 教学部分 。第一类实验教学可 以通过统一的方式完成 课程安排和机 时预约 ;而第二类课程的实验时间则会
Ab s t r a c t :Co mp u t e r l a b o r a t or i e s a r e t he n e c e s s a r y pl a c e s f o r c o nd u c t i n g t a l e n t c ul t i v a t i o n a nd s c i e n t i ic f r e s e a r c h i n c o l l e ge s a nd un i ve r s i t i e s . I n o r de r t o i mp r o ve l a b o r a t o r y ma n a g e me nt e ic f i e n c y a n d s e r v i c e l e ve l ,us e l a b o r a t o r y r e s o ur c e s f ul l y a n d p r omo t e s t a nd a r d i z a t i o n a n d i nf or ma t i o n l e ve l ,a c o mp u t e r l a bo r a t o r y r e s e va r t i o n a n d i n f o r ma t i o n ma n a ge me n t s ys t e m i s d e s i g ne d t o s ol v e s o me p r o b l e m i n c o mp u t e r l a b o r a t o y r ma na g e me n t . I t c a n p r o vi d e c o n ve n i e n t a nd e ic f i e n t s e vi r c e f o r t e a c h e r s wh o t e a c h i n a c o mp ut e r l a b o r a t o y. r Ke y wo r d s : e x pe r i me n t al t e a c h i ng ;l a b o r a t o y r ma n a ge me nt ; l a b o r a t or y r e s e va r t i on ; We b t e c h n ol o g y

机房预约系统课程设计报告

机房预约系统课程设计报告
(3)将程序模块化处理方便修改并且比较有条理,用函数来实现菜单的各种功能;
(4)利用结构体构造所需的要的数组以及线性表,线性表采用顺序储存。
3.系统设计
3.1 数据结构
程序主要是用一维数组以及二维数组作为程序的样本库,用顺序表顺序储存所有的信息,然后用文本转换函数将其转换成文本文档存储。其中信息包括预定的机位、预定的时间段、以及预定所用的电话号码。

int n,w;
do
{
printf("\t\t\t\t机房机位预约系统\n");
printf("\t\t\t\t菜单\n");
printf("\t\t\t 1.查询某时间段机位状态\n"); /*查询某时间段机位状态*/
printf("\t\t\t 2.预定空机位\n"); /*预定空机位*/
printf("\t\t\t 3.取消预订\n"); /*取消预订*/
4)论文撰写的水平、格式的规范性。
(4)课程设计进度安排
内容 天数 地点
构思及收集资料 1 图书馆
程序设计与调试 3 计算机房
撰写论文 1 图书馆
具体任务:20台机器,从早8点到晚8点,每两个小时一个时间段。实现如下功能:
(1)机位空闲查询,查询空闲机位;
(2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近时间段的空机信息。另外,如果用户要求在非空时间上机,则将用户信息插入该时间段的等待列表。
1)按照书稿的规格撰写打印课程设计论文;
2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等;
3)正文中要有问题描述与分析、数据结构的设计、算法的设计、算法的实现、调

图书馆座位预约管理信息系统的设计

图书馆座位预约管理信息系统的设计

管理信息系统课程设计报告系统名称:图书馆座位预约管理系统专业年级:电子商务专业2013级2015年 7月 2日目录CONTENT图书馆座位预约管理信息系统的设计1.问题提出1.1开发背景西南石油大学图书馆成都校区馆建于2002年,现有馆舍面积21399平方米,2516个阅览座位,但是成都校区目前学生人数将近20000人,图书馆的座位完全不能保证学生的学习要求,所以在我校图书馆出现了冬季和夏季图书馆占位学习的情况,而且,我校图书馆现有座位管理实行的是先到先得的管理原则,很多学生很早去图书馆仍然不能找到一个座位;还有,部分学生因为临时外出或者其他原因,图书馆的座位占着不使用,导致部分学生无座位可使用。

1.2项目目标图书馆座位管理系统是为了解决我校图书馆座位预约管理不方便的问题,提高图书馆座位的使用效率,更加方便图书馆管理员的管理和学生的使用,所以开发该系统来解决这一问题。

1.3可行性研究经济可行性分析在做这方面的信息管理系统的开发时,必须要考虑投资效益,也就是能否投资后达到相应的效果,具体的原则是能够在尽量少的投资情况下,获得最大的效益,这就是经济可行性分析。

图书馆座位管理系统利用电脑系统操作,投资只是在电脑、数据库、相应管理软件以及座位签等方面进行投资,而且目前我校图书馆在电脑等方面可以利用现有电脑,额外投资相对较少,但是达到的效果将会很好,图书馆的座位将会得到更加有效率的利用。

具体的效益如下:(1)提高图书馆座位管理效率,有效的节约成本。

(2)提高管理工作人员的工作效率,通过计算机进行座位管理,将大大减少人力的管理。

(3)为学生提供个性化服务,减少图书馆占座而带来的不必要的麻烦。

技术可行性分析图书馆座位管理系统主要需要包括电子预约平台和数据库等软件以及电脑、数据库存储器、座位签等硬件设施,就目前图书馆的相关软硬件来说,大多数都可以实现该管理系统的加入,只是在相关操作系统等方面需要投入,而且图书馆工作人员一般都具备计算机操作的基础知识,能够熟练运用windows 操作系统,该管理系统的操作也非常简单,有相关的使用说明和提示,就图书馆层面来说,该技术是可以实现的。

课程设计论文

课程设计论文
DUILEI[n].last=R;
p->next=R;
DUILEI[n].middle=R; /*等待预订列表*/
DUILEI[n].RS++;
printf("成功排队\n");
}/*将刚输入学生信息拍到最后一名后,成最后一名*/
else
{
R=(struct xinxi *)malloc(sizeof(struct xinxi));
R->next=NULL;
p= DUILEI[n].last; /*将最后预订记录赋值给p*/
R->jihao= DUILEI[n].RS+1;
printf("%d",R->jihao); /*表示该时间段第几位预订*/
DUILEI[n].last=R; /*将当前的记录做为最后记录以便形成链表形式指向下一个*/
在当前的限制条件下,本系统的功能目标能够达到;利用现有的技术,本系统的功能能够实现;系统现阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法逐步简单容易,所以机房管理系统在技术上是完全可行的。小组开发人员的数量和质量完全能够满足开发本系统的要求,并且能够在规定的期限开发完成。
struct xinxi *middle; /*等待队列列表*/
struct xinxi *last; /*最后预订者记录*/
} DUILEI[SJD]; /*学生时间(SJD)段顺序:人数,第一名学生,排队的学生,最后一名学生*/
4.1
/***************************预定模块******************************/

房屋租赁管理系统源代码

房屋租赁管理系统源代码

房屋租赁管理系统源代码启动系统后,主界面设计成效图如下:公用模块的设计代码分析如下:Option ExplicitPublic conn As New ADODB.Connection'定义全局变量queryhouse 作为判定frmHouse 窗体显示查询的数据依旧全体数据Public queryhouse As Boolean'定义全局变量sqlqh 作为查询房屋信息时的sql语句Public sqlqh As String'定义全局变量querycf 作为判定frmClient 窗体家庭租户选项卡显示查询的数据依旧全体数据Public querycf As Boolean'定义全局变量sqlqcf 作为查询家庭租户信息时的sql语句Public sqlqcf As String'定义全局变量querycg 作为判定frmClient 窗体家公司户选项卡显示查询的数据依旧全体数据Public querycg As Boolean'定义全局变量sqlqcg 作为查询公司租户信息时的sql语句Public sqlqcg As String'定义全局变量queryemp 作为判定frmEmp 窗体显示查询的数据依旧全体数据Public queryemp As Boolean'定义全局变量sqlqe 作为查询职员信息时的sql语句Public sqlqe As String'定义全局变量queryqzc 作为判定frmQZClient 窗体显示查询的数据依旧全体数据Public queryqzc As Boolean'定义全局变量sqlqzc 作为查询求租客户信息时的sql语句Public sqlqzc As String'定义全局变量querycon 作为判定frmAdminContract 窗体显示查询的数据依旧全体数据Public querycon As Boolean'定义全局变量sqlqcon 作为查询合同信息时的sql语句Public sqlqcon As String'定义全局变量sqlqyd 作为查询预定单信息时的sql语句Public sqlqyd As String'定义全局变量fromqzc 作为判定frmYuDing 窗体是从frmQZClient窗体中单击下定金预定调用的'依旧直截了当菜单调用的Public fromqzc As Boolean'定义全局变量fromYuding 作为判定frmPayDingJin 窗体是从frmYuDing窗体中单击收取定金调用的'依旧直截了当菜单调用的Public fromYuding As Boolean'定义全局变量fromContract 作为判定frmPayYaJin 窗体是从frmSignContract窗体中单击收取押金调用的'依旧直截了当菜单调用的Public fromContract As Boolean'定义全局变量ZuJinfromContract 作为判定frmPayZuJin 窗体是从frmSignContract窗体中单击收取租金调用的'依旧直截了当菜单调用的Public ZuJinfromContract As Boolean'定义全局变量queryZuJin 作为判定frmAdminZuJin 窗体显示查询的数据依旧全体数据Public queryZuJin As Boolean'定义全局变量sqlqzj 作为查询合同信息时的sql语句Public sqlqzj As String'定义全局变量sqlqdj 作为查询定金信息时的sql语句Public sqlqdj As String'定义全局变量sqlqyj 作为查询押金信息时的sql语句Public sqlqyj As String1.各要紧功能模块的设计与实现1.1差不多资料治理模块设计房屋差不多资料治理的运行成效图如下:其表单界面的属性设计比较直观,在此重点分析新增,修改,删除,储存四个命令按钮的源代码设计:新增按钮源码:Private Sub cmdAdd_Click()'设置除储存和取消按钮外的其他按钮不可用cmdAdd.Enabled = FalsecmdEdit.Enabled = FalsecmdDel.Enabled = FalsecmdSave.Enabled = TruecmdCancel.Enabled = TruecmdFirst.Enabled = FalsecmdPrev.Enabled = FalsecmdNext.Enabled = FalsecmdLast.Enabled = FalsecmdQuery.Enabled = False'需要清空所有text框,同时设置它们可写For i = 0 To 7Text1(i).Text = ""Text1(i).Enabled = TrueNext iCombo1.Enabled = True'add变量用于储存时判定是从添加依旧修改后储存add = 1Text1(0).SetFocusEnd SubPrivate Sub cmdCancel_Click()'取消按钮用于用户添加或修改过程中舍弃添加或修改操作 cmdSave.Enabled = FalsecmdCancel.Enabled = FalsecmdAdd.Enabled = TruecmdQuery.Enabled = True'假如是从添加后取消If add = 1 Then'假如当前House表中有数据则显示第一条数据If Not rs_house.EOF And Not rs_house.BOF ThenFor i = 0 To 7Text1(i).Text = rs_house.Fields(i)Next iIf rs_house.Fields(8) = "已租" ThenCombo1.ListIndex = 0ElseIf rs_house.Fields(8) = "未租" ThenCombo1.ListIndex = 1ElseIf rs_house.Fields(8) = "意向" ThenCombo1.ListIndex = 2End IfcmdEdit.Enabled = TruecmdDel.Enabled = TruecmdFirst.Enabled = TruecmdPrev.Enabled = TruecmdNext.Enabled = TruecmdLast.Enabled = True'假如没有数据,则显示空ElseFor i = 0 To 7Text1(i).Text = ""Next icmdEdit.Enabled = FalsecmdDel.Enabled = FalsecmdFirst.Enabled = FalsecmdPrev.Enabled = FalsecmdNext.Enabled = FalsecmdLast.Enabled = FalseEnd If'假如是修改后取消,则复原到修改前的数据ElseIf add = 0 ThenFor i = 0 To 7Text1(i).Text = rs_house.Fields(i)Next iIf rs_house.Fields(8) = "已租" ThenElseIf rs_house.Fields(8) = "未租" ThenCombo1.ListIndex = 1ElseIf rs_house.Fields(8) = "意向" ThenCombo1.ListIndex = 2End IfEnd If'开始时设置各个text框不可写For i = 0 To 7Text1(i).Enabled = FalseNext i'先设置ComboBox的默认值及不可改Combo1.Enabled = FalseEnd SubPrivate Sub cmdClose_Click()Unload MeEnd Sub删除按钮的源代码:Private Sub cmdDel_Click()'当单击删除记录时,需要弹出一个提示框,警告用户Dim answer As Stringanswer = MsgBox("确定要删除吗?", vbYesNo, "")'确实删除If answer = vbYes Thenrs_house.Delete '删除当前记录rs_house.Update '更新删除MsgBox "成功删除!", vbOKOnly + vbExclamation, ""ElseExit SubEnd If'删除之后,显示总信息条数需要减 1Text2.Text = Val(Text2.Text) - 1'删除当前记录后,需要显示下一条记录,假如删除的是最后一条记录,则显示上一条记录'先移动rs_house记录到后一条rs_house.MoveNextIf rs_house.EOF Thenrs_house.MovePrevious'假如没有到记录首则显示该记录If Not rs_house.BOF ThenFor i = 0 To 7Text1(i).Text = rs_house.Fields(i)Next iIf rs_house.Fields(8) = "已租" ThenElseIf rs_house.Fields(8) = "未租" ThenCombo1.ListIndex = 1ElseIf rs_house.Fields(8) = "意向" ThenCombo1.ListIndex = 2End If'假如到记录首,则表格差不多为空,置所有text框显示为空 ElseIf rs_house.BOF ThenFor i = 0 To 7Text1(i).Text = ""Next icmdFirst.Enabled = FalsecmdPrev.Enabled = FalsecmdNext.Enabled = FalsecmdLast.Enabled = FalseEnd If'假如删除的不是首尾记录,则显示当前记录即可ElseFor i = 0 To 7Text1(i).Text = rs_house.Fields(i)Next iIf rs_house.Fields(8) = "已租" ThenCombo1.ListIndex = 0ElseIf rs_house.Fields(8) = "未租" ThenCombo1.ListIndex = 1ElseIf rs_house.Fields(8) = "意向" ThenCombo1.ListIndex = 2End IfEnd IfEnd Sub储存按钮的源代码:Private Sub cmdEdit_Click()'设置除储存和取消按钮外的其他按钮不可用cmdAdd.Enabled = FalsecmdEdit.Enabled = FalsecmdDel.Enabled = FalsecmdSave.Enabled = TruecmdCancel.Enabled = TruecmdFirst.Enabled = FalsecmdPrev.Enabled = FalsecmdNext.Enabled = FalsecmdLast.Enabled = FalsecmdQuery.Enabled = False'需要设置除主键之外的text框可写For i = 1 To 7Text1(i).Enabled = TrueNext iCombo1.Enabled = Trueadd = 0End SubPrivate Sub cmdFirst_Click()'先移动rs_house记录到第一条rs_house.MoveFirst'同时需要设置相应按钮为不可用和不可用cmdPrev.Enabled = FalsecmdFirst.Enabled = FalsecmdNext.Enabled = TruecmdLast.Enabled = True'假如差不多是第一条记录,则提示用户If rs_house.BOF = True ThenMsgBox "对不起,差不多是第一条记录了!", vbOKOnly + vbInformation, "注意" Exit Sub'假如不是,则个数据表的记录位置移到第一条记录,同时显示之ElseFor i = 0 To 7Text1(i).Text = rs_house.Fields(i)Next iIf rs_house.Fields(8) = "已租" ThenCombo1.ListIndex = 0ElseIf rs_house.Fields(8) = "未租" ThenCombo1.ListIndex = 1ElseIf rs_house.Fields(8) = "意向" ThenCombo1.ListIndex = 2End IfEnd IfEnd SubPREV检索按钮的源代码:1.2 客户资料治理模块的设计1.2.1租户差不多资料的设计运行成效图如下所示:在租户差不多资料中,我们重点分析查找家庭租户功能的源码,如下: Private Sub cmdQuery_Click()If Text1.Text = "" ThenMsgBox "查询条件不可为空!", vbOKOnly + vbInformation, "注意" Text1.SetFocusExit SubEnd If'设置查询家庭租户变量为真querycf = Truesqlqcf = " where " & Combo1.Text & " = " & "'" & Text1.Text & "'" frmClient.Show'关闭本窗体Unload MeEnd Sub1.2.2求租户差不多资料的设计其储存按钮的源码分析如下:Private Sub cmdSave_Click()'检测数据是否完整If Text1(0).Text = "" ThenMsgBox "求租客户编号不可为空!", vbOKOnly + vbInformation, "注意"Text1(0).SetFocusExit SubElseIf Text1(1).Text = "" ThenMsgBox "求租客户姓名不可为空!", vbOKOnly + vbInformation, "注意"Text1(1).SetFocusExit SubElseIf Text1(2).Text = "" ThenMsgBox "求租客户不可为空!", vbOKOnly + vbInformation, "注意"Text1(2).SetFocusExit SubElseIf Not Text1(4).Text = "" And IsNumeric(Text1(4).Text) = False Then MsgBox "面积要求不为空则应为数字!", vbOKOnly + vbInformation, "注意" Text1(4).SetFocusExit SubElseIf Not Text1(6).Text = "" And IsNumeric(Text1(6).Text) = False Then MsgBox "意向价位不为空则应为数字!", vbOKOnly + vbInformation, "注意" Text1(6).SetFocusExit SubElseIf Not Text1(7).Text = "" And IsNumeric(Text1(7).Text) = False Then MsgBox "意向租期不为空则应为数字!", vbOKOnly + vbInformation, "注意" Text1(7).SetFocusExit SubEnd If'假如意向房屋编号不为空,需要检查是否存在If Not Text1(8).Text = "" ThenDim sqlhcheck As StringDim rs_hcheck As New ADODB.Recordsetsqlhcheck = "select * from House where 房屋编号 = '" & Text1(8).Text & "'" rs_hcheck.Open sqlhcheck, conn, adOpenStatic, adLockOptimisticIf rs_hcheck.EOF ThenMsgBox "该房屋编号不存在,请重填或清空!", vbOKOnly + vbInformation, "注意"Text1(8).SetFocusrs_hcheck.CloseExit SubEnd Ifrs_hcheck.CloseEnd If'添加数据后储存If add = 1 Then'检测房屋编号那个主键是否差不多在表中存在Dim rs_check As New ADODB.RecordsetDim sqlCheck As StringsqlCheck = "select * from QZClient where 求租客户编号= '" & (Text1(0).Text) & "'" rs_check.Open sqlCheck, conn, adOpenStatic, adLockOptimisticIf Not rs_check.EOF And Not rs_check.BOF ThenMsgBox "该求租客户编号差不多存在,请重填一个!", vbOKOnly + vbInformation, "注意"rs_check.CloseText1(0).SetFocusText1(0).Text = ""Exit SubEnd Ifrs_check.Close'主键不重复,能够加入表中rs_QZClient.AddNewFor i = 0 To 9rs_QZClient.Fields(i) = Text1(i).TextNext irs_QZClient.Update'添加之后显示总共条数信息加 1Text2.Text = Val(Text2.Text) + 1'修改数据后的储存Elsers_QZClient.UpdateEnd IfMsgBox "储存数据成功!", vbOKOnly + vbInformation, "祝贺"'储存后需要设置其他按钮可用,以及各个text框不可写cmdAdd.Enabled = TruecmdEdit.Enabled = TruecmdDel.Enabled = TruecmdSave.Enabled = FalsecmdCancel.Enabled = FalsecmdFirst.Enabled = TruecmdPrev.Enabled = TruecmdNext.Enabled = TruecmdLast.Enabled = TruecmdQuery.Enabled = TruecmdYuDing.Enabled = TrueFor i = 0 To 9Text1(i).Enabled = FalseNext iEnd Sub1.3 租赁治理模块的设计1.3 .1签订合同的设计因租赁治理,财务治理和统计报表三个模块的窗体设计比较多,无法一一描述,故选择有代表性的窗体设计加以分析,其合同签订窗体的运行成效图如下:如图所示,签订的源码设计如下:Private Sub cmdSign_Click()'先检查输入数据完整性For i = 0 To 2If Text1(i).Text = "" ThenMsgBox "除备注外的所有项不可为空!", vbOKOnly + vbInformation, "注意" Text1(i).SetFocusExit SubEnd IfNext iFor i = 3 To 4If Text1(i).Text = "" Or IsDate(Text1(i).Text) = False ThenMsgBox "日期应为如此的格式:2003-7-15!", vbOKOnly + vbInformation, "注意"Text1(i).SetFocusExit SubEnd IfNext iIf Text1(6).Text = "" Or IsNumeric(Text1(6).Text) = False ThenMsgBox "月租金应为数字!", vbOKOnly + vbInformation, "注意"Text1(6).SetFocusExit SubEnd IfIf Text1(8).Text = "" Or IsNumeric(Text1(8).Text) = False ThenMsgBox "押金应为数字!", vbOKOnly + vbInformation, "注意"Text1(8).SetFocusExit SubEnd IfIf Text1(9).Text = "" ThenMsgBox "业务员不可为空!", vbOKOnly + vbInformation, "注意"Text1(9).SetFocusExit SubEnd IfIf Text1(10).Text = "" Or IsDate(Text1(10).Text) = False ThenMsgBox "签订日期应为如此的格式:2003-7-15!", vbOKOnly + vbInformation, "注意" Text1(10).SetFocusExit SubEnd If'止租日期不能前于起租日期If DateValue(Text1(4).Text) < DateValue(Text1(3).Text) ThenMsgBox "止租日期不能前于起租日期", vbOKOnly + vbInformation, "注意"Text1(4).SetFocusExit SubEnd If'租期等于起租日期和止租日期之差,结尾不足一月,按一月计。

基于JavaWeb的图书馆座位预约系统设计与实现

基于JavaWeb的图书馆座位预约系统设计与实现

基于JavaWeb的图书馆座位预约系统设计与实现一、本文概述基于JavaWeb的图书馆座位预约系统设计与实现是一篇探讨如何利用JavaWeb技术构建高效、便捷图书馆座位预约平台的研究文章。

在“本文概述”这一部分,文章将对整个研究的背景、目的、主要内容和研究方法进行简要介绍。

文章将阐述图书馆座位预约系统的研究背景。

随着信息技术的快速发展和高校图书馆人流量的日益增加,传统的图书馆座位管理方式已经无法满足读者的需求。

设计一个基于JavaWeb的图书馆座位预约系统,能够有效提高座位利用率,减少读者等待时间,提升图书馆服务质量。

接着,文章将明确研究目的。

本研究旨在通过JavaWeb技术实现一个用户友好、操作简便、功能全面的图书馆座位预约系统。

该系统将为读者提供实时座位查询、在线预约、预约取消等服务,同时为图书馆管理者提供座位使用情况统计、数据分析等后台管理功能。

在主要内容方面,文章将详细介绍系统的需求分析、系统设计、功能实现以及测试与评估。

需求分析部分将从用户和管理员两个角度出发,分析系统应具备的基本功能和性能要求。

系统设计部分将重点介绍系统架构、数据库设计以及主要模块的设计思路。

功能实现部分将展示如何利用JavaWeb技术,包括Servlet、JSP、JavaBean等,来实现系统的各个功能模块。

在测试与评估部分,文章将说明如何对系统进行功能测试、性能测试以及用户反馈收集,以确保系统的稳定性和可用性。

研究方法方面,文章将采用软件工程的方法论,结合JavaWeb开发技术和图书馆管理的实际需求,通过需求调研、系统建模、编码实现和测试验证等步骤,系统地完成图书馆座位预约系统的设计与实现。

二、系统需求分析座位预约区域可图形化展示,用不同颜色实时展示当前座位使用情况。

提供读者通过身份证号、读者证号或人脸识别方式登录,支持移动端一键登录。

提供移动端人脸信息采集,并将人脸信息传递至统一人脸信息库。

支持读者通过微信进行预约功能,可提前预约(预约天数可后台配置,最多可提前7天)。

图书馆座位预约管理信息系统的设计

图书馆座位预约管理信息系统的设计

管理信息系统课程设计报告1系统名称:图书馆座位预约管理系统专业年级:电子商务专业2013级2015年 7月 2日目录CONTENT1.问题提出 (2)1.1 开发背景 (2)1.2 项目目标 (2)1.3 可行性研究 (2)1.3.1经济可行性分析 (2)1.3.2技术可行性分析 (3)1.3.3社会可行性分析 (3)2.系统分析报告 (3)2.1需求调查 (4)2.1.1我校图书馆座位管理信息现行情况 (4)2.1.2图书馆座位管理系统方面的需求 (4)2.2业务流程分析 (5)2.2.1现有流程分析 (5)2.2.2优化流程分析 (5)2.3数据流程分析 (8)2.3.1数据流程图 (8)2.3.2数据字典 (11)3.系统设计报告 (15)3.1总体结构设计 (15)3.1.1总体功能结构设计 (15)3.1.2软硬件平台设计 (16)3.2代码设计 (16)3.3数据库设计 (18)3.3.1概念结构设计 (18)3.3.2逻辑结构设计 (18)3.3.3物理结构设计 (19)3.4输入/输出设计 (20)3.5模块功能及处理过程设计 (23)4.课程设计总结 (24)图书馆座位预约管理信息系统的设计1.问题提出1.1开发背景西南石油大学图书馆成都校区馆建于2002年,现有馆舍面积21399平方米,2516个阅览座位,但是成都校区目前学生人数将近20000人,图书馆的座位完全不能保证学生的学习要求,所以在我校图书馆出现了冬季和夏季图书馆占位学习的情况,而且,我校图书馆现有座位管理实行的是先到先得的管理原则,很多学生很早去图书馆仍然不能找到一个座位;还有,部分学生因为临时外出或者其他原因,图书馆的座位占着不使用,导致部分学生无座位可使用。

1.2项目目标图书馆座位管理系统是为了解决我校图书馆座位预约管理不方便的问题,提高图书馆座位的使用效率,更加方便图书馆管理员的管理和学生的使用,所以开发该系统来解决这一问题。

ASP体育场馆预约系统

ASP体育场馆预约系统

目录1 引言 (1)2 ASP技术概述 (1)2.1 ASP的概念 (1)2.2 ASP技术工作原理 (2)3 系统需求分析 (2)3.1 系统任务概述 (2)3.2 系统主要功能 (3)4 系统的工作原理 (3)4.1 ASP访问WEB数据库的原理 (3)4.2 ASP与ADO实现网上数据交换的主要过程 (3)4.3 系统工作流程图 (4)5 系统功能的实现 (4)5.1 系统功能流程图 (4)5.2 体育场馆预约系统的数据库结构 (5)5.3 主要模块及其代码分析 (6)5.4 其他内容设计 (10)结束语 (12)致谢 (12)参考文献: (13)ASP体育场馆预约系统摘要:ASP技术是一种动态网页开发技术,结合HTML、脚本语言等可设计一个体育场馆预约系统。

本文对ASP技术的基本概念进行了简单论述,对体育场馆预约系统进行了详细的需求分析,给出了预约系统流程图,对其工作原理进行了说明,并提出了网上体育场馆预约系统解决方案。

通过编程不仅实现了预约系统的主要功能;而且分析了系统实现中的特殊性、难点和重点,给出了部分关键代码。

关键词:ASP ADO WEB 数据库预约1 引言继C2C、B2C后,伴随B2B模式一起成为近期资本市场的明星的,是另一种新兴的经营模式--ASP模式。

在过去的几年里,ASP技术的兴起是全球IT业最重要也是最显著的趋势。

同时,近期以来ASP厂商在资本市场所取得的显著成绩以及IT产业巨头纷纷投身于ASP市场,更是引起了相关业界的格外的重视和思考。

正是由于前一段时间以来的资本市场的良好表现,以及ASP技术在实践中所表现出的强大的灵活性和适应能力,使得越来越多的人开始关注起ASP技术在企业中的运用。

这些人中包括投资者、服务供应商、产品制造厂家以及其它商业用户等。

尽管其目的不同,然而其对于ASP技术的关注是共同的。

人们都在思考ASP技术的本质和内涵到底如何,更想知道ASP技术在未来的发展和走向是怎样的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<stdio.h>#include<stdlib.h>#include<string.h>#define SJD 6 /*宏定义定义SJD Z NULL D(r)*/#define Z 20#define D(s) (s-8)/2 /*将输入的时间划分时间段;分别为0,1,2,3,4,5时间段*/#define NULL 0struct xinxi{int jihao;char xuehao[20];struct xinxi *next;}; /*结构函数包含学生信息:机位,学号,还有下名学生信息*/struct cell{int RS; /*RS表示总人数*/struct xinxi *first; /*第一个预订者记录*/struct xinxi *middle; /*等待队列列表*/struct xinxi *last; /*最后预订者记录*/} DUILEI[SJD]; /*学生时间(SJD)段顺序:人数,第一名学生,排队的学生,最后一名学生*//***************************预定模块******************************/void yuding(){int n;char m[20]; /*学号*/struct xinxi *R;struct xinxi *p;printf("输入想要预定的时间\n");scanf("%d",&n);if(n>=8&&n<20){n=D(n); /*将输入的时间划分时间段*/if(DUILEI[n].RS<Z) /*还有机位可供预订*/{printf("请输入你的学号\n");scanf("%s",m);if(DUILEI[n].first==NULL) /*还没有人预订*/{R=(struct xinxi *)malloc(sizeof(struct xinxi));/*给R划分适当的内存*/R->jihao=1;strcpy(R->xuehao,m); /*将输入的学号复制到R->xuehao */R->next=NULL;DUILEI[n].first=R;DUILEI[n].last=R;DUILEI[n].RS++;printf("成功预定\n");}else{R=(struct xinxi *)malloc(sizeof(struct xinxi));strcpy(R->xuehao,m); /*将输入的学号复制到R->xuehao */R->next=NULL;p= DUILEI[n].last; /*将最后预订记录赋值给p*/R->jihao= DUILEI[n].RS+1;printf("%d",R->jihao); /*表示该时间段第几位预订*/DUILEI[n].last=R; /*将当前的记录做为最后记录以便形成链表形式指向下一个*/p->next=R;DUILEI[n].RS++; /*记录人数*/printf("预定成功\n");}}else printf("没有空余机位!\n");}else printf("错误.请输入8~19,再次输入.\n");}/*********************************查询空位模块***********************************/void chaxunkongwei(){int n;printf("输入想要查询的时间(8~19点,包括8点)\n");scanf("%d",&n);if(n>=8&&n<20){n=D(n);if(DUILEI[n].RS<Z)printf("这里还有%d台空电脑!\n",Z-DUILEI[n].RS);else printf("对不起.没有空余机位!\n");}else printf("错误,请输入8~19,再次输入.\n");}/*********************查询预定机位模块*************************************/ void chaxunyuding(){int n;char m[20];struct xinxi *R;printf("输入查询时间(8~19点,包括8点)\n");scanf("%d",&n);if(n>=8&&n<20){n=D(n);printf("请输入学号\n");scanf("%s",m);R= DUILEI[n].first; /*将第一名学生的信息赋予R*/if(DUILEI[n].first==0) printf(" 还没有人预定\n"); /*判断有没有人预订,如果还没有人预订,则输出还没有人预定*/else{for(;R->next!=NULL;R=R->next) /*从第一名学生开始查询直到找到符合的学号,以便确认是否预订*/if(strcmp(R->xuehao,m)==0)break;if(R->jihao!=0) /*已预订,输出相应的信息*/printf("你的机位是%d\n",R->jihao);else printf("对不起.你依旧在等待列表中或者没有预定");}}else printf("错误,请再次输入.\n");}/*****************************排队系统模块**************************************/void paiduixitong(){int n;char m[20];struct xinxi *R; struct xinxi *p;printf("请输入想要排队的时间\n");scanf("%d",&n);if(n>=8&&n<20){n=D(n);if(DUILEI[n].RS>=Z) /*该时间段没有空位机,需要预订等待*/{printf("请输入你的学号\n"); scanf("%s",m);if((DUILEI[n].RS)==Z){R=(struct xinxi *)malloc(sizeof(struct xinxi));strcpy(R->xuehao,m);R->next=NULL;R->jihao=0;p= DUILEI[n].last;DUILEI[n].last=R;p->next=R;DUILEI[n].middle=R; /*等待预订列表*/DUILEI[n].RS++;printf("成功排队\n");}/*将刚输入学生信息拍到最后一名后,成最后一名*/else{R=(struct xinxi *)malloc(sizeof(struct xinxi));strcpy(R->xuehao,m);R->next=NULL;R->jihao=0;p= DUILEI[n].last;DUILEI[n].last=R;p->next=R;DUILEI[n].RS++;printf("成功排队\n");}}else printf("有空余机位,无须等待\n");}else printf("错误.再次输入.\n");}/******************************取消预订模块****************************************/void cancel(){int n;int i;char m[20];struct xinxi *R;struct xinxi *q;struct xinxi *p;printf("请输入预定的时间\n");scanf("%d",&n);if(n>=8&&n<20){printf("请输入你的学号!\n");scanf("%s",m);n=D(n);R= DUILEI[n].first;q=R;for(i=1;;q=R,R=R->next,i++) /*查找符合信息*/if(strcmp(R->xuehao,m)==0)break;if(i>Z) /*i>z表示在等待列表中*/{if(R->next==NULL){q->next=NULL;DUILEI[n].last=q;free(R);DUILEI[n].RS--;printf("取消成功!\n"); /*如果是排在20名后,且是最后一名*/}else{q->next=R->next;free(R);DUILEI[n].RS--;printf("取消成功!\n"); /*如果排在20名后,但不是最后*/}}else /*正在上机者取消预订*/{if(DUILEI[n].RS>Z){DUILEI[n].middle->jihao=R->jihao;DUILEI[n].middle= DUILEI[n].middle->next;} /*如果排在20名内,但总人数(包括等待列表人数)大于20 */if(i==1) DUILEI[n].first=R->next;else q->next=R->next;free(R);DUILEI[n].RS--;printf("成功取消预定!\n");}}else printf("错误,请再次输入.\n");}/********************************待机者列表模块****************************/ void daijizheliebiao(){int n;struct xinxi *q;printf("查询其他等待者的预定时间\n");scanf("%d",&n);if(n>=8&&n<20){n=D(n);if(DUILEI[n].RS>Z) /*表示有等待上机者*/{printf("等待列表:\n");q=DUILEI[n].middle;for(;q->next!=NULL;q=q->next) printf("%s\n",q->xuehao); /*逐个输出等待列表者信息*/ printf("%s\n", DUILEI[n].last->xuehao);}else printf("这个时间段没有预定者\n");}else printf("错误。

相关文档
最新文档