




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 课 程 设 计上机报告院系: 班级: 姓名: 学号: 题目: 25.机房机位预约模拟 成绩: 二 O 一 O 年 七 月25.机房机位预约模拟要求20台机器,从早8点到晚8点,每两个小时一个时间段。需要实现功能:(1) 查询,根据输入时间,输出机位信息。(2) 机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段。另:若用户要求在非空时间上机,则将用户信息输入该时间段的等待列表。(3) 退出预定,根据输入的时间,撤销该时间的预订。(4) 查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息。一需求分析根据题目要求,程序应该提供“日期时间,用户信息”的输入、输出操作;在程序中需要浏览机位信息和用户等待信息,应提供显示、查找、排序等功能;通过文件的删除操作删除撤销的时间预定;提供文件的添加操作来增加新的用户预约信息;另外还需要提供键盘式选择菜单以实现功能选择。二总体设计根据以上的需求分析,可以将这个系统的设计分为以下模块:机房机位预约系统机位预订时间及用户信息输入机位信息查询及显示等待信息插入机器等待位置排序三详细设计1定义 #include #include #include #include #define SIZE 20void Display();void Search(); void Book(); void Quit();void Wait();void SearchWait(); void Exit(); /*定义的一些相关的函数:查询,预约,退订,查询等待,退出*/int computernum12=20,18,0,15,10,8,12,4,10,1,1,0;/*自己定义的每个时间段剩下的电脑数*/struct waitlist char number3; char phonenumber12;waitSIZE;/*一个结构体,等待的序号和联系方式,共20台电脑的,只定义了20个等待的列表*/2.主函数及主界面主函数提供输入,处理和输出部分的函数调用.其功能模块用菜单方式选择。流程图:main() Display(); void Display() /*一个总的函数,用case分别引出各个函数*/ int c; printf(nnnn); printf(tttt机房机位预约n); printf(n); printf(t 选择: n); printf(nn); printf(t 1: 查询 n); printf(t-n); printf(t 2: 预定 n); printf(t-n); printf(t 3: 退出预定 n); printf(t-n); printf(t 4: 查询等待信息 n); printf(t-n); printf(t 0: 退出 n); printf(t-n); printf(t请输入你的选择(1/2/3/4/0): n); scanf(t %d,&c); printf(n); switch(c) case 1: Search(); break; case 2: Book(); break; case 3: Quit(); break; case 4: SearchWait(); break; case 0: Exit(); break; default: printf(ntt警告:选择错误!n); Display(); 3.各功能模块的设计(1)查询模块通过输入者的数据以及本身存入的数据进行判断。流程图: 输入要查询的时间n,判断n是否属于8-20 Y N 根据n值查询剩余机位数量 警告:输入的时间有误程序如下:void Search() /*查询函数,通过输出的时间查出剩下的电脑数。同时可以连续查询*/ int time; char c; printf(t=n); printf(tttt查询 n); printf(t=n); printf(t请输入你要查询的时间(8-20,包括8:00):); scanf(%d,&time); while(time19) printf(t警告:输入的时间错误!n); printf(t请再次输入(8-20,include8:00):); scanf(%d,&time); printf(t还剩下机位数量: %dn,computernumtime-8); printf(t是否继续查询? Y/N ); c=getche(); printf(n); if(c=Y|c=y) Search(); else Display(); (2)预定模块 根据输入者的数据和已有数据进行判断,如有空机位,则显示成功预定;如无空机位,则显示出所有排队者的数据并存入当前预约者的数据中。 流程图 输入要查询的时间n判断n是否820Y根据n的值判断是否有空余机位NNY当前没有剩余机位显示:预约成功提示:输入错误,请重新输入程序如下 void Book() /*预约函数*/ int time,i; FILE *fp; char c; printf(=n); printf(tttt预定 n); printf(t=n); printf(t请输入你要预定的时间(8-20,包括8:00):); scanf(%d,&time); while(time19) printf(t警告:输入的时间错误!n); printf(t请再次输入(8-20,包括8:00):); scanf(%d,&time); if(Cnumtime-80) Cnumtime-8-; printf(t预定成功!n); /*当电脑数不为0的时候,预约成功*/ All(); else printf(t当前没有剩余机位!n); for(i=(time-8)+1;i0) printf(t最近空机时间段: %d-%dn,(i+9)/2*2,(i+11)/2*2); printf(nt是否等待? Y/N n); /*电脑数为0的时候选择是否等待*/ c=getche(); if(c=Y|c=y) if(fp=fopen(waitlist.txt,r)=NULL) printf(n文件无法打开!n); exit(0); for(i=0;!feof(fp);i+) fread(&waiti,sizeof(struct waitlist),1,fp); printf(等待列表如下: 序号 联系方式n); for(i=0;i10;i+) printf(tt%s %sn,waiti.number,waiti.phonenumber); printf(n); fclose(fp); printf(nt请留下你的序号(上列表的下一号)和联系方式(手机11位):n); if(fp=fopen(waitlist.txt,a)=NULL) printf(n文件无法打开!n); exit(0);/*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/ for(i=0;i1;i+) scanf(%s %s,waiti.number,waiti.phonenumber); for(i=0;i1;i+) fwrite(&waiti,sizeof(struct waitlist),1,fp); fclose(fp); printf(t操作成功,请等待我们的通知!); All(); else All(); (3)退出预定模块根据预约者输入的预约时间和已预约的信息来判断是否预约成功。程序如下 void Quit() /*退出预约函数*/ int time; printf(t=n); printf(tttt退出预定 n); printf(t=n); printf(t请输入你已经预定的时间(8-20,包括8:00):); scanf(%d,&time); while(time19) printf(t警告:输入的时间错误!n); printf(t请再次输入(8-20,包括8:00):); scanf(%d,&time); Cnumtime-8+; printf(t退出预定成功!n); All(); (4)查询等待信息模块用户在该模块可根据输入的时间来查询排队信息。 流程图: 输入要查询的时间n判断n是否8-20820 NY输出排队者的信息提示:输入错误请重新输入程序如下: void SearchWait() /*查询等待列表函数*/ int time; FILE *fp; int i; printf(“t=n); printf(tttt查询等待信息 n); printf(t=n); printf(t请输入你要查询的等待时间(8-20,包括8:00):); scanf(%d,&time); while(time19) printf(t警告:输入的时间错误!n); printf(t请再次输入(8-20,包括8:00):); scanf(%d,&time); if(fp=fopen(waitlist.txt,r)=NULL) printf(n文件无法打开!n); exit(0); for(i=0;!feof(fp);i+) fread(&waiti,sizeof(struct waitlist),1,fp); printf(等待列表如下: 序号 联系方式n); for(i=0;i10;i+) printf(tt%s %sn,waiti.number,waiti.phonenumber); fclose(fp);/*根据输入的时间用文件的方式列出等待的列表*/ (5)退出模块程序如下: void Exit() /*退出菜单函数*/ printf(t*n); printf(nnttt欢迎下次再来!n); printf(tt See you next time!nn); printf(t*n); exit(0); 4.上机操作(1) 主界面如下:(2)输入1,进入查询界面:(3)输入N,返回主界面。再输入2,进入预定界面:提示是否等待,若输入Y,则出现等待列表:提示留下序列号及联系方式,用户输入信息后完成预定(4)返回主界面,输入3,进入退出预定模块:或(5) 返回主界面,输入4,进入查询等待信息界面:(6) 输入0,结束程序。5.总结通过该实例的学习,我重新温习了C语言的知识,加深了对书上知识的认识与理解,系统地运用已学的知识,扩大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高考题库试题含答案详解(研优卷)
- 2025年临床执业医师经典例题附完整答案详解【历年真题】
- 浦发银行温州市永嘉县2025秋招小语种岗笔试题及答案
- 2025年执业药师之《药事管理与法规》题库含答案详解(培优b卷)
- 2025年四川德阳市招聘中小学教师99人笔试高频难、易错点备考题库及答案详解一套
- 光大银行宁波市鄞州区2025秋招笔试EPI能力测试题专练及答案
- 2025年杭州市公安局滨江区分局招聘27名警务辅助人员笔试备考题库及参考答案详解1套
- 光大银行肇庆市端州区2025秋招信息科技岗笔试题及答案
- 2025执法资格考试历年机考真题集及参考答案详解【突破训练】
- 2025计算机三级考前冲刺练习附答案详解(研优卷)
- 重症胰腺炎护理查房
- 共青团入团团章知识考试题库300题(含答案)
- 老旧护栏加固施工方案
- 2025年青海海东通信工程师考试(通信专业实务终端与业务)高、中级考前题库及答案
- 2025贵州贵安城市置业开发投资有限公司招聘32人考试参考题库及答案解析
- 露天煤业安全生产培训课件
- 2025年全国医学基础知识试题(附答案)
- 食堂安全培训课件
- 【课件】角的概念+课件+2025-2026学年人教版(2024)七年+数学级上册+
- 2025年防雷检测专业技术人员能力认定考试题库及答案
- 《房屋市政工程生产安全重大事故隐患判定标准(2024版)》解读
评论
0/150
提交评论