机房机位预约模拟管理系统设计源代码
- 格式:doc
- 大小:34.00 KB
- 文档页数:7
一、项目背景介绍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) 用户表:包括用户名、密码、权限等字段。
#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 ");}}。
沈阳航空工业学院课程设计任务书院系:航空宇航工程学院专业:飞行器设计与工程班级:7403302 学号:200704033050 题目:机房上机系统一、课程设计时间2008—2009年2月24日至2009年3月1日,共计1周,20学时。
二、课程设计内容用C语言编写程序完成以下任务:(1)从键盘输入学生的学号,姓名,系别,机时数等信息,保存在computer.txt文件中。
(2)上机:记录当前的上机时间。
(3)下机:再次记录当前的上机时间,计算上机所用的时间,并从机时数中扣除。
(4)预存机时。
三、课程设计要求1.贯彻结构化程序设计思想。
2.用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
3.用户界面中的菜单至少应包括“录入学生信息”、“上机”、“下机”、“预存机时”和“退出”5项。
4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。
四、指导教师和学生签字指导教师:________ 学生签名:________五、说明书成绩六、教师评语目录一、需求分析 (1)二、程序流程图 (2)三、核心技术的实现说明及相应程序段 (7)四、课设总结 (12)五、参考文献 (13)六、源程序 (13)一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,它们的功能分别是:上机,下机,查询余额,充值,显示学生信息以及录入学生信息。
在这些函数当中,录入学生信息,上机,下机,查询余额为题目基本要求。
充值以及显示学生信息为附加程序。
1、录入学生信息主要的功能像文件里面添加数据,数据的内容包括学生的学号,姓名,系别,机时等数据信息。
并且用于后面程序的使用。
;2、上机这个程序需要有两个要求:1.首先要确定学生的信息是否正确,即所填写的学号,密码是否在文件中,登录中所填学的学号和密码是否想对应。
2.学生登录以后需要记录当前的时间以达到对机时的计算。
3、下机这个只需要记录你下次的时间,然后根据你上机和下机的时间差,求出你所用机时,并且显示出你所用机时以及你的剩余机时;4、余额查询可以查询学生机时所剩余的时间;5、充值实现对学生机时的冲值。
目录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语句。
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 课程设计心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
机房预约系统课程设计报告Last updated on the afternoon of January 3, 2021课程设计(论文)任务书软件学院软件+ 信控专业 1 班一、课程设计(论文)题目机房机位预约模拟系统的设计与实现二、课程设计(论文)工作自 2017 年 1月 2日起至2017 年 1月6 日止。
三、课程设计(论文) 地点: 南区创新大楼东楼406四、课程设计(论文)内容要求:1.课程设计的目的《数据结构》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。
目的是要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。
要求能从实际应用问题出发,合理地选择数据结构,设计相应的数据处理算法,并对算法进行必要的分析;合理选择编程工具,实现数据的物理结构和相应的数据处理算法;对算法进行调试和测试,并对调试及测试结果进行分析;针对数据结构及算法的设计、调试及测试过程认真写出设计分析报告。
2.课程设计的要求及任务(1)基本要求1)初步掌握软件开发过程的问题分析、系统设计、程序编码、调试等基本方法和技能。
2)要求从问题需求入手,完成系统的分析与设计,独立完成系统的数据和功能分析,应用《数据结构》知识,设计抽象数据类型、构思算法、完成系统的设计。
3)结合《数据结构》理论知识,编写程序求解指定问题,程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释。
4)认真完成系统的调试与测试工作,测试数据要完备,详细记录测试结果。
5)规范撰写课程设计报告。
(2)课程设计论文撰写要求1)按照书稿的规格撰写打印课程设计论文;2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等;3)正文中要有问题描述与分析、数据结构的设计、算法的设计、算法的实现、调试分析与结果;4)课程设计论文装订按学校的统一要求完成(3)课设考核1)考勤和态度;2)任务的难易程度及设计思路;3)编码及调试能力;4)论文撰写的水平、格式的规范性。
会议场馆预约管理系统的设计与实现-建筑论文会议场馆预约管理系统的设计与实现包琦琦郑梁梦(宁波市公安局科技通信管理局,浙江宁波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.输出当前运行进程的名字。
#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("错误。