




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1设计目的机房机位预定系统2任务概述20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个 时间段。功能要求:(1)系统以菜单方式工作(2)查询,根据输入时间,输出机位信息。(3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。(4)退出预定,根据输入的时间,机器号撤销该事件的预定!(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。3模块划分4主要函数说明及其N-S图1 .主函数:int main()Menu(); /*当前状态函数*/void Menu
2、() /* 主界面 */ int n,w;doputs("tt*机房机位预约系统*n");puts("tt*puts("ttt 1.查询某时间段机位状态");/* 查询某时间段机位状态 */puts("ttt 2. 预定空机位");/*预定空机位*/puts("ttt 3.取消预订");/*取消预订*/puts("ttt 4.查询等待信息");/*查询等待信息*/puts("ttt 5.退出");/* 退出 */puts("tt*n");prin
3、tf("选择菜单号(1-5):");scanf("%d",&n); if(n<1|n>5) w=1;getchar(); else w=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();显示一系列功能菜单l|n>5N根据口的值调 用各功能模 块函数*«4|n>5根据n的 值
4、调用各 功育谶块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();输入时间并复制给tim2输入时间错误重罚输入时间
5、调用detail.函数调用岫nu函数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); /*函数调用 *
6、/if(sumT>0) if(fp=fopen("waitlist.txt","a")=NULL)printf("n无法打开文件!n");exit(0);printf("nt请输入你想要预定的机号,并且留下你的电话号码!:n");scanf("%s %s",waiti.number,waiti.telephonenumber); for(i=0;i<1;i+)fwrite(&waiti,sizeof(struct waitlist),1,fp);fclose(fp);/* 向
7、文本文档添加一个结构体单元*/printf("t 再次输入你想要预定的时间!n");scanf("%d",&x);/*sumT-;/ *预定后该时间段空机位数减1*/*computerTx=1; / * 预定后该机状态变为1*/printf("t 预订成功!n");getchar();Menu();elseprintf(" 这是在这个时间段内未预定的电脑!n");for(i=T+1;i<6;i+) time=9+2*i;detail(time); /* 函数调用*/if(sumT>0)print
8、f("tThe latest free time is %d,%dn",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
9、 telephonenumbern");for(i=0;!feof(fp);i+)fscanf(fp,"%s %s",&waiti.number,&waiti.telephonenumber);fclose(fp);for(i=0;i<10;i+) prione(i);printf("nt请输入你想要预定的机号,并且留下你的电话号码!:n");if(fp=fopen("waitlist.txt","a")=NULL)printf("n 无法打开文件!n");exi
10、t(0);scanf("%s %s",waiti.number,waiti.telephonenumber);for(i=0;i<1;i+)fwrite(&waiti,sizeof(struct waitlist),1,fp);fclose(fp);/*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/printf("再次输入电脑的序号!n");scanf("%d",&y);sumT-;computerTy=1;printf("t 好了,请等待我们的电话!n");Me
11、nu();else Menu();4 .取消预定: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);elseprintf("t 输入你预定的机号 :");
12、scanf("%d",&number);detail(time);/* sumT+; / *预定后该时间段空机位数加1*/*computerTnumber=0; / *预定后该机状态变为0*/printf("t取消成功!n");getchar();Menu();定义变量输入时间并赋值给tiMtine。1 ltimQ20西足 不满足输入时间错误 重新输入输入市定的机号 财值给minbeH调用detail更教取消低订调用Menu函数5 .查询等待信息:void SearchWaiting()int time,i;FILE *fp;printf(&qu
13、ot;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")
14、=NULL)printf("nCannot open file!n");exit(0);else printf("waitlist: number telephonenumbern");for(i=0;!feof(fp);i+)fscanf(fp,"%s %s",&waiti.number,&waiti.telephonenumber);fclose(fp);for(i=0;i<10;i+) prione(i);Menu();输入姓名通过道表指向等待信息输出等待信息5程序运行数据及其结果1.主菜单:和方系名充1t
15、 /MMX UK M JOCK UK M MM . :MXM?9THKHUHf-M*MHK X M X K 31HHPHI M: X M M K M 菜 单4.5国出音息选择菜单号C-5A2.机位查询:*!(*薜MKMFM舞MW翼现WMaCM 3旄苴其父犀芹理犀M 菜单 我拜其现WKKMM梵H舞MX*现犀MKMM旄MM舞ML查询妻时间段机位状态2 .预要空机位:翻瞿薪息E.退出选择菜单号(1-51鼠在3r 置<置置!目空空空空空空nil rrfl rrfl rrA rrfl n-Q TJX E E tlmr EB 6 7 8 9 1 1 TJ « Mi :3.机位预定:眦髀机位
16、状态M.MX KMX KXMKK XX XMX KXMKX XKK X 主由 K X M K X X K M. X X K M X K X M K K X K 苴 M X K M M K间位自心 45, J1时机蒋 某空坦寺 询定梢询出 查预罂退12 3 4 5人你想要预定的时间4脑;6:7 :fl:10:11否告否否皆7E 2内的招脑脑脑脑 5 4巳,,P匚勺勺 -"-m-rTTJTT-JTTT nr*TT-J*TTL .二 <i、H若置置置置置 号时目空空V空空空 JT1- ?§ 0 菜-2请输入你想要预定的机号,井且留下你的电话号码,:1234567再次输入你想
17、要预定的时间,4.查询等待信息XXa<Xa<:MiEJ<<N3<:KMME M: X M 梵 H X M: X H X 甲 梵 HXaCXM 梵x1<:8<3<乂«:弁1<:«><<>=8<*<*1<自心询定消询出 查预罂一退 选择菜单号1T): 4Input t Ine ynii uant 七口 search between t8-20i :9 waitlist : nunber telephonenunbei*6 12345fi10 12345676课程设计心得课程设计是培养
18、学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握一些基本的软件开发技术是十分重要和必要的。回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理 论到实践,在整整一个星期的日子里, 可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,
19、从理论中得出结论, 从而提高自己的实际动手能力和独立思考的能力,这样才能真正为体会和认识它,才能写出一个完整的程序代码,才能使自己在过程中得到锻炼 和提高。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时 在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体的建立 ,指针的应用等都不太熟练。通过这次课程设计,也使我对以前 所学过的知识重新温故和加强。程序设计过程有如解决一实际问题,从解决实际问题的角度, 我们可以这样来看: 首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前
20、到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程-算法; 最后可得结论。通过这次课程设计,我深刻地体会到:< 1>.细节决定成败:在学习的过程中,要注意每一个细节,要知道一个分隔符或一个括 号都会使整个程序出现错误。< 2>.要熟练掌握一些经典的结构和方法,如选择排序,递归,递推等,在遇到问题是可 直接应用,快速解决问题。< 3>.要熟悉一些标准数据库,对一些可直接利用的函数就直接利用,没必要重新定义。< 4>.在设计过程中最好使程序模块化,既便于阅读,也可增加其
21、移植性。< 5>.熟能生巧。平时应该多加训练,要知道,即使我们能完全看懂一个程序,但要让你 自己写出一个时仍是很困难的。它要求你对每一个语句,每一个变量,每一个函数,每一个 模块都充分的熟悉,要知道它们的作用,作用域等等。因此只有平时做的多了,到时候才会 游刃有余。一个多礼拜中,我有过山穷水尽的困惑;有过柳暗花明的惊喜;一个多礼拜的时间我经 历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我不仅学到了很多知识和技能,更重要的是我学会了如何运用所学知识去解决实际问题.附录:#include<stdio.h>#inclu
22、de<stdlib.h>#include<string.h>#define N 20#define T (time-8)/2int sum6=0;int computer620=1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0
23、,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1;/*该数组表示假设某天某人查询时机房各个时间段机位数情况*/void Menu();void Situation();void Book();void Cancel();void SearchWaiting();void detail(int time);void prione(int i);struct waitlist /*等待列表*/char number3;char telephonenumber11; waitN;void printone(int i);int main()Menu(); /* 当前状
24、态函数*/void Menu() /* 主界面 */ int n,w;doputs("tt*机房机位预约*n");puts("tt*n");puts("ttt 1. 查询某时间段机位状态"); /* 查询某时间段机位状态puts("ttt 2. 预定空机位"); /* 预定空机位*/puts("ttt 3. 取消预订"); /* 取消预订*/puts("ttt 4. 查询等待信息");/* 查询等待信息*/puts("ttt 5.退出 "); /* 退出
25、*/系统单*/puts("tt*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();/* 时间查询*/void Situation
26、()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();/* 预定函数*/void Book()int time,i=0,x,y;FILE *fp;char c
27、;printf(" 在 (8-20) 时间范围内输入你想要预定的时间:");scanf("%d",&time);if(time<8|time>20)printf("t 时间输入错误!n");printf("t 在 (8-20) 时间范围内输入你想要预定的时间:");scanf("%d",&time); detail(time); /*函数调用*/if(sumT>0) if(fp=fopen("waitlist.txt","a&quo
28、t;)=NULL) printf("n 无法打开文件!n");exit(0);!:n");printf("nt 请输入你想要预定的机号,并且留下你的电话号码scanf("%s %s",waiti.number,waiti.telephonenumber); for(i=0;i<1;i+)fwrite(&waiti,sizeof(struct waitlist),1,fp);fclose(fp);/* 向文本文档添加一个结构体单元*/printf("t 再次输入你想要预定的时间!n");scanf(&q
29、uot;%d",&x);/*sumT-;/ *预定后该时间段空机位数减1*/*computerTx=1; / * 预定后该机状态变为1*/printf("t 预订成功!n");getchar();Menu();elseprintf(" 这是在这个时间段内未预定的电脑!n");for(i=T+1;i<6;i+) time=9+2*i;detail(time); /* 函数调用*/if(sumT>0)printf("t 最近的空闲时间是%d,%dn",2*i+8,2*i+10);break;printf(&q
30、uot;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 telephonenumbern");for(i=0;!feof(fp);i+)fscanf(fp,"%s %s",&
31、amp;waiti.number,&waiti.telephonenumber); fclose(fp);for(i=0;i<10;i+) prione(i);printf("nt请输入您想预定的机号并留下您的联系方式!:n");if(fp=fopen("waitlist.txt","a")=NULL)printf("n 无法打开文件!n");exit(0);scanf("%s %s",waiti.number,waiti.telephonenumber);for(i=0;i<
32、;1;i+)fwrite(&waiti,sizeof(struct waitlist),1,fp);fclose(fp);/*若等待, 就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/printf(" 再次输入电脑的序号!n");scanf("%d",&y);sumT-;computerTy=1;printf("t 好了 , 请等待我们的电话!n");Menu(); else Menu();/* 取消预订*/void Cancel()int time,number;printf(" 在 (
33、8-20) 时间范围内输入你已经预定的时间:");scanf("%d",&time);if(time<8|time>20) printf("t 输入时间错误!n");printf("t 在 (8-20) 时间范围内输入你已经预定的时间:");scanf("%d",&time); elseprintf("t 输入你预定的机号:");scanf("%d",&number); detail(time);/* sumT+; / * 预定后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航空器飞行器航空器飞行器航空器结构与振动分析考核试卷
- 职业中介服务礼仪与形象塑造考核试卷
- 外贸英语函电与单证课件
- 探索地理奥秘
- 拉萨师范高等专科学校《基础护理学基本技能2》2023-2024学年第二学期期末试卷
- 秦皇岛市山海关区2025届六年级下学期小升初招生数学试卷含解析
- 南阳职业学院《临床诊断与基本技能学(1)》2023-2024学年第二学期期末试卷
- 江苏省无锡市长泾片2025届下学期初三物理试题第二次模拟考试试卷含解析
- 通化市柳河县2025届四年级数学第二学期期末综合测试试题含解析
- 克孜勒苏职业技术学院《大学德语Ⅰ》2023-2024学年第一学期期末试卷
- 1.2区域整体性和关联性-以青田县稻鱼共生为例课件-高中地理人教版(2019)选择性必修2
- “5领导作用-5.1领导作用和承诺”专业深度解读与应用指导材料(雷泽佳编制-2025C0)
- 免疫组库临床应用
- 新版人教版一年级数学下册第五单元100以内的笔算加减法
- 2024届高考生物一轮复习必考重点大全宝典
- 《延续性护理在永久性肠造口患者中的应用研究》4600字(论文)
- 戒毒所运动康复
- 康复人才培养
- 《幼儿园保育教育质量评估指南》图文详解课件
- 如何培训加油站站长
- 仓库管理制度及流程(3篇)
评论
0/150
提交评论