机房机位预约模拟系统—C语言课程设计

合集下载

机房机位预约模拟

机房机位预约模拟

机房机位预约模拟一、题目要求(1)查询。

根据输入时间输出机位信息。

(2)机位预定。

根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近时间段。

另外,若用户要求在非空时间段上机,俄将用户信息插入该时间段的等待时间列表。

(3)退出预定。

根据输入的时间撤出该时间的预订。

二、设计思路首先需要定义结构体数组存放等待人员,并且用文件来保存这些数据。

纵观整个程序,我用四个分函数来实现各个模块的功能,在主函数中刻画一个分区模块,进入各个分区功能模块。

三、程序设计首先写出一些函数头文件、自定义的宏定义、全局变量和定义一个结构体数组:#include#include#include#include#defineSIZE20{charnumber[3];charphonenumber[12];}wait[SIZE];然后开始建立函数模块,如下:1、主函数主函数提供了一个菜单界面,操作人员可根据界面的提示来操作以选择菜单中功能。

主函数一般设计的比较简洁,只提供输入、处理和输出部分的函数调用。

【主函数程序】main(){Diplay();}voidDiplay()/某一个总的函数,用cae分别引出各个函数某/{intc;printf(\printf(\机房机位预约\\n\printf(\printf(\选择:\\n\printf(\printf(\查询\\n\printf(\printf(\预定\\n\printf(\printf(\退出预定\\n\printf(\printf(\查询等待信息\\n\printf(\printf(\退出\\n\printf(\printf(\请输入你的选择(1/2/3/4/0):\\n\canf(\printf(\witch(c){cae1:Search();break;cae2:Book();break;cae3:Quit();break;cae4:SearchWait();break;cae0:E某it();break;default:printf(\警告:选择错误!\\n\Diplay();}}2、查询系统当输入时间在8点到20点之间才符合条件,并定义剩余电脑数量为时间减去八。

教室座位预约系统课程设计

教室座位预约系统课程设计

教室座位预约系统课程设计一、课程目标知识目标:1. 让学生理解教室座位预约系统的基本原理和功能需求;2. 培养学生掌握数据库管理、编程逻辑和用户界面设计的相关知识;3. 引导学生了解信息技术在解决现实问题中的应用。

技能目标:1. 培养学生运用编程语言开发简单的教室座位预约系统;2. 提高学生分析问题、解决问题的能力,使其能够根据用户需求设计合适的系统功能;3. 培养学生的团队协作能力,学会在项目中分工与协作。

情感态度价值观目标:1. 培养学生对信息技术的兴趣,激发其学习编程的热情;2. 培养学生严谨、认真的学习态度,使其认识到编程中细节的重要性;3. 引导学生关注社会问题,认识到信息技术在解决现实问题中的价值。

课程性质:本课程为信息技术学科,以项目实践为主,注重培养学生的动手能力和团队协作精神。

学生特点:六年级学生,具有一定的信息技术基础,对编程有一定了解,好奇心强,喜欢动手实践。

教学要求:结合学生特点和课程性质,以任务驱动的方式展开教学,引导学生自主探究,注重理论与实践相结合,提高学生的综合运用能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. 理论知识:- 数据库原理:介绍数据库的基本概念、数据表的设计与关系;- 编程逻辑:讲解编程的基本流程、条件语句和循环语句的应用;- 用户界面设计:探讨用户界面设计的原则和技巧,提高用户体验。

2. 实践操作:- 教室座位预约系统需求分析:分析系统的功能需求、界面设计和数据存储;- 编程实践:运用所学编程语言,如Python或Scratch,完成系统功能的开发;- 系统测试与优化:对开发完成的系统进行测试,找出并修复存在的问题。

3. 教学大纲:- 第一阶段(1课时):导入,介绍教室座位预约系统的背景和意义;- 第二阶段(2课时):学习数据库原理、编程逻辑和用户界面设计;- 第三阶段(3课时):实践操作,分组进行系统需求分析、编程实践;- 第四阶段(2课时):系统测试与优化,展示成果,总结评价。

C语言机房机位预约系统课设(附源码)

C语言机房机位预约系统课设(附源码)

C语言机房机位预约系统课设项目说明本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行。

(书生)项目运行截图代码界面截图完整源码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>int timeone();/*机位、顾客信息结构体*/typedef struct PCInfo{int State[6]; //机位状态,2小时为一个时间段,8时到20时共6个时间段,0表示有空位,1表示无空位char name[20]; //各时间段运行顾客char sex[30];char tel[20];int year;int month;int day;int start_Time;int end_Time;}PCInfo;PCInfo info[100][100]; //存放100天,20台机位信息int Month[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; /*数组定义每月天数*/int date[12][31]; /*定义日期和机位信息数组*//******************************空白函数模块*****************************/void s_line(int n) /*空行*/{int i;for (i = 1; i <= n; i++)printf("\n");}void space(int n) /*空白*/{int i;for (i = 1; i <= n; i++){printf(" ");}}/******************************清空机位信息模块*****************************/void Empty(){int i,j,k,a;for (i = 0; i <=20 ; i++) /*此循环作用是将0赋给机位状态*/{for (a = 0; a <= 20; a++){for (j = 0; j <= 6; j++){info[i][a].State[j] = 0;}}}for (j = 0; j <= 12; j++) /*此循环作用是将0赋给日期*/{for (k = 0; k <= 31; k++){date[j][k] = 0;}}}/******************************查询机位信息模块*****************************/void Query(){int year, month, day, start_Time, end_Time, time,a=1;int n = 0;int i;while (1){printf("\t\t ********************此处你可以输入时间来查看20个计算机的机位信息********************\n\n");printf("\t\t\t\t 请输入您想要查询的日期时间:(例如:2016/7/22/8-10表示)\n\n");scanf("%d/%d/%d/%d-%d", &year, &month, &day, &start_Time, &end_Time); /*输入查询时间*/if ((start_Time - 8) / 2 >= 0 && (start_Time - 8) / 2 <= 6){time = (start_Time - 8) / 2;}else{printf("输入时间段错误!\n");system("pause");return;}if (month < 1 || month > 12 || day < 0 || day > Month[month])/*如果输入时间不对就回出错,显示出错信息并且给出提示*/ {printf(" 输入错误!\n");printf(" 请选择输入指令:1.重新输入 2.返回菜单\n");scanf("%d", &n);if (n == 2) { break; }if (n == 1){break;}}else break; //未出错则跳出循环,继续执行后面程序}if (n == 2) return;printf("当前您要查询第几次预约的机位信息?(相同日期视为一次)\n\n");scanf("%d", &a);for (i = 1; i <= 20; i++) /*此循环的作用是判断是否有空的机位*/{if (date[month][day] == 1 && info[i][a].State[time] == 1)printf("\t\t\t\t 第%d 号计算机在这段时间已经被预定. \n\n", i);elseprintf("\t\t\t\t 第%d 号计算机在这段时间内没有被预定. \n\n", i);}system("pause"); /*系统暂停,按任意键继续*/}/******************************机位预定模块*****************************/void book_computer() /*此函数的作用是预定机位*/{int year, month, day, start_Time, end_Time, time;int b = 0, m = 0;int n = 0, i = 0, j, k, s,t;while (1){printf("\t\t********************此处你可以输入(年/月/日/XX-XX时间段)来查看是否有空位计算机********************\n\n");printf("\t\t如果有空闲机位将会自动预约,如果无空位,您可以选择最近时间段空位计算机进行预约!\n\n");printf("\t\t\t\t 请输入您想要预约的日期时间:(例如:2016/7/22/8-10表示)\n");scanf("%d/%d/%d/%d-%d",&year,&month, &day, &start_Time, &end_Time);/*输入查询时间*/if ((start_Time - 8) / 2 >= 0 && (start_Time - 8) / 2 <= 6){time = (start_Time - 8) / 2;}else{printf(" 输入时间段错误!\n");}if (month < 1 || month > 12 || day < 0 || day > Month[month])/*检验查询时间是否出错,并给出提示信息*/{printf(" 输入错误!\n");printf(" 请选择输入指令:1.重新输入 2.返回菜单\n");scanf("%d", &n);if (n == 2) break;}else break; //未出错则跳出循环,继续执行后面程序}if (n == 2) return;int a=0;s = timeone(); //该函数负责将不同时间段信息放置在二维数组结构体的不同列printf(" 请选择预约模式:\n");printf(" 1.按顺序预约 2.选择编号预约\n");scanf("%d", &a);if (a == 1) //顺序预约模块{for (i = 1; i <= 20; i++){if (date[month][day] == 0 || info[i][s].State[time] == 0){date[month][day] = 1;info[i][s].State[time] = 1;printf("\t\t ==================第%d 号计算机已经成功预约!==================\n ", i);printf("\t\t ================您可以在预约的时间段内使用计算机!============= \n \n ");printf("\t\t 本次为机位预约模拟系统第%d次预约(不同时期).请留意次数. \n", s);system("pause");return; //有一个符合条件的计算机,则return跳出该函数}}printf("您查询的时间段内无空闲机位!\n\n");printf("是否仍在非空闲时间段内使用电脑:\n\n");printf("1.是(加入等待队列)\n");printf("2.否(查找临近的空位计算机)\n");scanf("%d", &n);if (n == 1) /*如果加入等待列表,就输入相关的姓名,性别,电话和机位号*/{printf("请输入您想要等待的机位号::\n\n");scanf("%d", &m);printf("请输入您的姓名:\n\n");scanf("%s", info[m][s].name, 20);printf("请输入您的性别:(男或女)\n\n");scanf("%s", info[m][s].sex, 30);printf("请输入您的电话号码:\n\n");scanf("%s", info[m][s].tel, 20);info[m][s].year = year;info[m][s].month = month;info[m][s].day = day;info[m][s].start_Time = start_Time;info[m][s].end_Time = end_Time;printf("您已经成功加入等待队列......\n");system("pause");return;}/*通过四层嵌套循环寻找顺次向后推时间段内空机位信息*/for (i = month; i <= 12; i++) //月份{for (j = day; j <= Month[i]; j++) //日期{for (k = 1; k <= 6; k++) //0-6时间段{for (m= 1; m < 20; m++) //1-20号机器{if (date[i][j] == 0 || info[m][s].State[time] == 0){printf("你可以预约到的最近时间段的计算机:第%d 号计算机%d年%d月%d日%d时-%d时\n", s, year, i, j, (2 * k + 6), (2 * k + 8));printf(" 1.预约第%d 号计算机的该段时间\n", s);printf(" 2.不预约并退出\n");printf(" 请输入1&2进行选择: \n");scanf("%d", &n);if (n == 1){printf("\t\t ==================第%d 号计算机已经成功预约!==================\n ", m);printf("\t\t ================您可以在预约的时间段内使用计算机!============= \n \n ");printf("\t\t 本次为机位预约模拟系统第%d次预约(不同时期).请留意次数. \n", s);date[i][j] = 1; /*将机位状态调整为1*/info[m][s].State[time] = 1;}system("pause"); /*系统暂停,按任意键继续*/return;}}}}}}if (a == 2) /*选择编号进行预约*/{printf("请输入您要预约的计算机机位号:\n");scanf("%d", &i);if (date[month][day] == 0 || info[i][s].State[time] == 0){date[month][day] = 1;info[i][s].State[time] = 1;printf("\t\t ==================第%d 号计算机已经成功预约!==================\n ", i);printf("\t\t ================您可以在预约的时间段内使用计算机!============= \n \n ");printf("\t\t 本次为机位预约模拟系统第%d次预约(不同时期).请留意次数. \n", s);system("pause");}else{printf("第%d号机位已经被他人预约!",i); /*重复之前等待信息载入代码*/printf("是否仍在非空闲时间段内使用电脑:\n");printf("1.是(加入等待队列)\n");printf("2.否(查找临近的空位计算机)\n");scanf("%d", &n);if (n == 1) /*如果预定机位,就输入相关的姓名,性别,时间段*/{printf("请输入您想要等待的机位号::\n\n");scanf("%d", &b);printf("请输入您的姓名:\n\n");scanf("%s", info[b][s].name,30);printf("请输入您的性别:(男或女)\n\n");scanf("%s", info[b][s].sex, 30);printf("请输入您的电话号码:\n\n");scanf("%s", info[b][s].tel, 20);info[b][s].year = year;info[b][s].month = month;info[b][s].day = day;info[b][s].start_Time = start_Time;info[b][s].end_Time = end_Time;printf("您已经成功加入等待队列......\n");system("pause");return;}for (i = month; i <= 12; i++) //月份{for (j = day; j <= Month[i]; j++) //日期{for (k = 1; k <= 6; k++) //0-6时间段{for (t = 1; t < 20; t++) //1-20号机器{if (date[i][j] == 0 || info[t][s].State[time] == 0){printf("你可以预约到的最近时间段的计算机:第%d号计算机%d年%d月%d日%d时-%d时\n\n", t, year, i, j, (2 * k + 6), (2 * k + 8));printf(" 1.预约第%d 号计算机的该段时间\n\n", t);printf(" 2.不预约并退出\n\n");printf(" 请输入1&2进行选择: \n\n");scanf("%d", &n);if (n == 1){printf("****************第%d 号计算机已经成功预约!**************** \n ", t);printf("***************您可以在该时间段内使用计算机!************** \n ");date[i][j] = 1;info[t][s].State[time] = 1;}system("pause");return;}}}}}}}}/******************************取消预约模块*****************************/void book_exit() /*此函数的作用是退出预定*/ {int year,month, day, start_Time, end_Time,time,s=0;int n = 0;while (1){printf("\n在此处您可以取消预约已预订的计算机\n");system("pause");printf("\n请输入您想要取消预约的日期时间:(例如:2016/7/22/8-10表示)\n");scanf("%d/%d/%d/%d-%d", &year,&month, &day, &start_Time, &end_Time);if ((start_Time - 8) / 2 >= 0 && (start_Time - 8) / 2 <= 6){time = (start_Time - 8) / 2;}else{printf("\n输入时间段错误!\n");system("pause");return;}if (month < 1 || month > 12 || day < 0 || day > Month[month]){printf(" 输入错误!\n");printf(" 请选择输入指令:1.重新输入 2.返回菜单\n");scanf("%d", &n);if (n == 2) break;}else break;}if (n == 2) return;printf("请输入您想要取消预约的计算机编号:.\n");scanf("%d", &n);printf("您要取消预约第几次预约的计算机机位:.\n");scanf("%d", &s);if (info[n][s].State[time] == 1){info[n][s].State[time] = 0;printf("第%d号机位取消预约成功!\n",n);}else{printf("在该段时间内您没有预约任何编号的计算机!\n");}system("pause");}/******************************查询等待信息模块*****************************/void Look_wait() /*此函数的作用是查询等待机位的人,并按序显示*/{int m;int year, month, day, start_Time, end_Time,s;printf("请输入您想要查询的日期时间:(例如:2016/7/22/8-10表示)\n\n");scanf("%d/%d/%d/%d-%d", &year, &month, &day, &start_Time, &end_Time);printf("请输入您要查询等待信息的机位号:\n\n");scanf("%d", &m);printf("正在查询,请稍候~\n\n");printf("第%d号计算机:\n\n", m);printf(" 您准备查找第几次预约的信息?\n\n ");scanf("%d", &s);printf("姓名:%s\n\n", info[m][s].name);printf("性别:%s\n\n", info[m][s].sex);printf("联系方式:%s\n\n", info[m][s].tel);printf("该成员于%d年%d月%d日加入本台计算机的等待队列\n\n", info[m][s].year, info[m][s].month, info[m][s].day);system("pause");return;}/******************************预约次数(不同时期)判别模块*****************************/int timeone() /*为了便于对不同预约时间相同机位信息判别加设*/ {int n=0,k;int s = 1;printf("如果在本系统首次预约请选择1 ,再次预约请选择2\n\n");scanf("%d", &n);if (n == 1){return s;}if (n == 2){int i=0;printf("预约日期与前几次是否相同? 1.相同 2.不同\n\n");scanf("%d",& i);if (i == 1){s = 0;printf("预约日期与第几次相同?\n");scanf("%d", &k);s = s + k;return s;}if (i == 2){s = 0;printf("本次为第几次预约(不同时期)?\n");scanf("%d", &k);s = s + k;printf("本次为机位预约模拟系统第%d次预约(不同时期).请留意次数. \n",s);return s;}}}/**********************************主函数模块*************************************/main(){Empty();int num;while (1){system("cls"); /* 清除文本模式窗口*/s_line(4);space(40);printf("********************主菜单********************\n"); /*使用空行函数排版*/s_line(2);space(55);printf("1.查询机位信息\n");s_line(1);space(55);printf("2.预约机位\n");s_line(1);space(55);printf("3.取消机位预约\n");s_line(1);space(55);printf("4.查询等待人员信息\n");s_line(1);space(55);printf("5.退出系统\n");s_line(2);space(40);printf("********************************************\n\n");printf("请输入1~5进行功能操作: \n");scanf("%d", &num); /*输入数字进行相应的函数的调用*/if (num == 5) break;switch (num){case 1:Query();break;case 2:book_computer();break;case 3:book_exit();break;case 4:Look_wait();break;default:printf("输入错误!\n");system("pause");exit(0);}}}。

机房预定位系统(可编辑修改word版)

机房预定位系统(可编辑修改word版)

合肥学院计算机科学与技术系课程设计报告20 12 ~20 13 学年第一学期课程 C 语言课程设计课程设计题目机房机位预订系统学生姓名学号1204032015专业班级网络工程(2)班指导教师20 13 年 1 月目录一、课程设计目的 (2)二、课程设计名称及内容 (2)三、对任务和要求的分析 (2)四.详细设计及实现 (3)五、源代码 (18)六、程序测试 (24)七、总结 (25)一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C 语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用 C 语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。

(6)熟练掌握 C 语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。

二、课程设计名称及内容课程设计名称:机房机位预定系统设计内容:设计一个机房机位预定系统,该系统要求对机房电脑机位进行管理和维护。

20 台机器,从早八点到晚八点,每两个小时一个时间段.任务和要求:20 台机器,编号 1 到 20,从早八点到晚八点。

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

设计一个机房机位预定系统,通过该系统实现对机房机位的预定管理。

三、对任务和要求的分析可行研究阶段的目标是:使工作人员从繁琐的机位管理工作中解放出来;提高工作质量,使供需双方都获得满意的结果;促进报表,提高工作效率。

c语言课程设计--机房机位预定系统

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"))==NUL L){printf("\n无法打开文件!\n");exit(0);}printf("\n\t请输入你想要预定的机号,并且留下你的电话号码!:\n");scanf("%s %s",wait[i].number,wait[i].teleph onenumber);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].teleph onenumber);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 课程设计心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。

c语言实习报告机房机位预约模拟

c语言实习报告机房机位预约模拟

c语言实习报告机房机位预约模拟C语言课程设计院系:工程学院姓名:杨文和学号:20051003679班号:05205222指导教师:王老师日期:2007年9月机房机位预约模拟一.题目要求20台机器,从早八点到晚八点,每两个小时一个时间段.需要实现的功能:(1)查询,根据输入的时间,输出机位信息.(2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段.另:若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表.(3)退出预定,根据输入的时间,撤消该时间的饿预定.(4)查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息.二.需求分析根据题目要求,需要提供机位信息和预约信息,应该用链表来存储,应提供指针的操作:在程序中,需要查询是否有空机位和等待者和处理预约和取消预约问题,应提供查询,显示,预定,删除,修改等操作;另外还要提供键盘式选择菜单实现功能选择.三.总体设计现在分析整个一下整个系统,根据上面的需求分析,可以将这个系统的设计分为如下六大模块:查询我的预约状态,查询空位,预约,取消预约,排队,查询等待信息.机房机位模拟系统我的预约状态查询空位预约取消预约排队查询等带信息四.详细设计1.宏定义#include<stdio.h>#include<stdlib.h>#include<string.h>#define LENGTH 6/*总时段数*/#define MAX 2#define S(r) (r-8)/2/*计算在哪个时段数*/struct node{int locat;char data[10];/*学号,假设为联系方式*/struct node *next;};struct node *head;struct cell{int CNum;/*连接在该时段头结点的总机器数目*/struct node *first;/*指向整个队列的开头*/struct node *middle;/*指向等待预约队列*/struct node *last;/*指向整个队列的结尾*/}TimeQueue[LENGTH];2..主函数主函数一般设计的比较简洁,只提供输入,处理和输出部分的函数调用.其中个功能模块用菜单方式选择。

机房上机C语言课程设计

机房上机C语言课程设计

机房上机C语言课程设计一、课程目标知识目标:1. 理解C语言的基本语法和程序结构;2. 学会使用C语言进行变量定义、数据类型转换和运算符的使用;3. 掌握C语言中的控制结构,包括顺序结构、分支结构和循环结构;4. 熟悉数组、函数和指针在C语言中的应用;5. 了解C语言中的文件操作和简单的输入输出处理。

技能目标:1. 能够独立编写简单的C语言程序,实现基础算法和数据处理;2. 能够运用控制结构进行程序流程的控制;3. 能够运用数组和函数对数据进行组织和模块化编程;4. 能够运用指针解决特定问题,提高程序性能;5. 能够进行简单的文件操作,读写文件数据。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,提高自主学习编程的积极性;2. 培养学生良好的编程习惯,注重代码规范和逻辑性;3. 培养学生面对编程问题时,具备解决问题的耐心和毅力;4. 培养学生团队合作意识,学会与他人共同分析问题和解决问题;5. 培养学生遵守机房上机规定,爱护设备,维护机房环境。

课程性质:本课程为实践性较强的学科,通过机房上机操作,让学生在实际编程中掌握C语言的基本知识和技能。

学生特点:学生具备一定的计算机操作基础,对编程有一定兴趣,但个体差异较大,需针对不同学生进行个性化教学。

教学要求:结合学生特点,采用任务驱动和案例教学相结合的方法,注重理论与实践相结合,提高学生的动手实践能力。

在教学过程中,关注学生个体差异,提供差异化指导,确保课程目标的达成。

通过课程学习,使学生能够具备基本的C语言编程能力,为后续学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. C语言概述:介绍C语言的发展历史、特点和应用领域,使学生了解C语言的重要性。

2. 基本语法和数据类型:讲解变量定义、数据类型、常量和变量、运算符和表达式等基本概念。

3. 控制结构:- 顺序结构:介绍C语言程序的基本结构;- 分支结构:讲解if语句、switch语句及其应用;- 循环结构:讲解for循环、while循环和do-while循环的用法。

c语言机房机位预定系统

c语言机房机位预定系统

课程设计说明书学院、系:专业:学生姓名:学号:设计题目:学生考勤系统起迄日期:指导教师:日期: 2017年5月11日1 设计目的模拟考勤过程,根据考勤评分给出考勤分数。

2 任务概述1>菜单界面:选择操作项目。

2>信息录入:输入学生身份信息与考勤次数,并存入文件。

3>修改功能:通过姓名或学号查找,对学生的考勤次数进行修改。

4>查询功能:通过姓名或学好查找,输出学生信息。

5>评分功能:设定标准考勤次数,按照考勤次数占标准考勤次数的百分比给分。

3 模块划分图1,模块划分图4 主要函数说明及其流程图main主函数:图2,主函数主函数:设计了初始界面,使程序的界面友好化。

给用户选择操作项目,让用户对程序的功能一目了然。

调用功能函数,完成设计目的。

图3,input()函数录入函数:通过使用循环体和判断语句,可实现重复输入学生数据和是否确定输入的功能。

使得用户操作起来更加自如。

图4,change()函数修改函数:通过学号和姓名两种方式可以查询到学生的信息,然后将考勤次数重新赋值并写入文件。

这样可以避免出现错误无法修改以至于重新输入的情况。

search()函数:图5,search()函数查询函数:通过学号和姓名两种方式可以选择查找方式,将文件的内容读出,可以看到学生的身份信息和修改后的考勤次数。

确定该生信息存在。

evaluate()函数:图6,evaluate()函数评分函数:输入标准考勤次数,将实际考勤次数占标准考勤次数的百分比作为最后分数。

5 程序运行数据及其结果姓名:张三学号:1性别:男考勤次数:5修改后考勤次数:10标准考勤次数:10考勤分数:1006 课程设计心得通过编写这次C语言课程设计,对C语言的基本语法,选择,循环等结构有了更深刻的认识。

深入地练习了函数的调用和文件的读写方法,熟悉了结构体的使用,和一些算法的运用。

在整个设计的过程中,遇到了很多问题。

当出现语法错误的时候,首先自己看书,看书上的语法和在例题中的应用,从而对该语法的记忆进一步加深。

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

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

机房预约系统课程设计报告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)论文撰写的水平、格式的规范性。

C语言课程设计报告——机房管理系统[1]

C语言课程设计报告——机房管理系统[1]

目录一.设计内容二.设计要求(1)题目要求(2)输入/输出要求三.整体设计思路四.流程图(1)层次模块图(2)空机号查询N—S图五.主函数及功能菜单说明六.各模块简要说明七.心得体会附录一.源程序代码二.各模块运行结果截图一:设计内容题目:机房管理系统设计机房管理系统,要求由菜单进行管理。

(1)上机前先检查是否有空机位,有则将其显示出,无则提示无空位。

(2)还有空位置时,运行进入,并记录下位置号以及序号,与上机时间。

(3)可对上机者上机信息进行查询,修改与删除。

(4)设计相关模块,显示上机者的上机费用。

(5)显示所有上机者的上机信息。

二:设计要求题目要求:(1)为各项操作功能设计一个菜单。

应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

(2)要求以上功能分别用函数实现。

输入/输出要求:(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。

进入每个操作后,根据程序的提示输入相应的信息。

(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

三:整体设计思路在设计该程序时,要将系统的不同功能分成各个模块。

每个模块由一个函数定义,整个程序由函数调用来实现。

每个模块是一个子函数,由一个主函数调用各个子函数。

在定义子函数时,根据不同的功能选择不同的语句,如需要使用循环时可以用“do……while”来实现;需要使用选择时可以用“switch”或“if”语句来实现等。

设计以菜单方式工作的机房管理系统,主要包括六个模块,分别是上机者信息输入模块,上机者信息查询模块,上机者信息修改模块,上机者信息删除模块,上机者上机费用计算模块,所有上机者信息显示模块。

每个模块由组员相应完成。

另外考虑到机房的特殊要求,新增一个上课模式,此模式功能是将所有机子开启,统一赋上上机者相关信息,避免管理员一个一个的给机子输入信息。

本系统程序关键在于一个空机位的检索,亦是本程序核心之所在。

C语言课程设计报告——机房管理系统

C语言课程设计报告——机房管理系统

目录一.设计内容二.设计要求(1)题目要求(2)输入/输出要求三.整体设计思路四.流程图(1)层次模块图(2)空机号查询N—S图五.主函数及功能菜单说明六.各模块简要说明七.心得体会附录一.源程序代码二.各模块运行结果截图一:设计内容题目:机房管理系统设计机房管理系统,要求由菜单进行管理。

(1)上机前先检查是否有空机位,有则将其显示出,无则提示无空位。

(2)还有空位置时,运行进入,并记录下位置号以及序号,与上机时间。

(3)可对上机者上机信息进行查询,修改与删除。

(4)设计相关模块,显示上机者的上机费用。

(5)显示所有上机者的上机信息。

二:设计要求题目要求:(1)为各项操作功能设计一个菜单。

应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

(2)要求以上功能分别用函数实现。

输入/输出要求:(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。

进入每个操作后,根据程序的提示输入相应的信息。

(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

三:整体设计思路在设计该程序时,要将系统的不同功能分成各个模块。

每个模块由一个函数定义,整个程序由函数调用来实现。

每个模块是一个子函数,由一个主函数调用各个子函数。

在定义子函数时,根据不同的功能选择不同的语句,如需要使用循环时可以用“do……while”来实现;需要使用选择时可以用“switch”或“if”语句来实现等。

设计以菜单方式工作的机房管理系统,主要包括六个模块,分别是上机者信息输入模块,上机者信息查询模块,上机者信息修改模块,上机者信息删除模块,上机者上机费用计算模块,所有上机者信息显示模块。

每个模块由组员相应完成。

另外考虑到机房的特殊要求,新增一个上课模式,此模式功能是将所有机子开启,统一赋上上机者相关信息,避免管理员一个一个的给机子输入信息。

本系统程序关键在于一个空机位的检索,亦是本程序核心之所在。

课程设计 机房机位预约

课程设计  机房机位预约

《C 课程设计》上机报告院系:班级:姓名:学号:题目:25.机房机位预约模拟成绩:二O 一O 年七月25.机房机位预约模拟[要求]20台机器,从早8点到晚8点,每两个小时一个时间段。

需要实现功能:(1)查询,根据输入时间,输出机位信息。

(2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段。

另:若用户要求在非空时间上机,则将用户信息输入该时间段的等待列表。

(3)退出预定,根据输入的时间,撤销该时间的预订。

(4)查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息。

一.需求分析根据题目要求,程序应该提供“日期时间,用户信息”的输入、输出操作;在程序中需要浏览机位信息和用户等待信息,应提供显示、查找、排序等功能;通过文件的删除操作删除撤销的时间预定;提供文件的添加操作来增加新的用户预约信息;另外还需要提供键盘式选择菜单以实现功能选择。

二.总体设计根据以上的需求分析,可以将这个系统的设计分为以下模块:三.详细设计1.定义#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define SIZE 20void Display();void Search();void Book();void Quit();void Wait();void SearchWait();void Exit(); /*定义的一些相关的函数:查询,预约,退订,查询等待,退出*/ int computernum[12]={20,18,0,15,10,8,12,4,10,1,1,0};/*自己定义的每个时间段剩下的电脑数*/struct waitlist{char number[3];char phonenumber[12];}wait[SIZE];/*一个结构体,等待的序号和联系方式,共20台电脑的,只定义了20个等待的列表*/2.主函数及主界面主函数提供输入,处理和输出部分的函数调用.其功能模块用菜单方式选择。

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

机房预约系统课程设计报告
(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)正文中要有问题描述与分析、数据结构的设计、算法的设计、算法的实现、调

C语言实习报告材料-机房机位预约系统

C语言实习报告材料-机房机位预约系统

C语言课程实习报告所在院系班级学号姓名程序已存档指导老师评分二零一零年七月十五目录一.题目要求 (3)二.需求分析 (3)三.总体设计 (3)掌握四.详细设计 (4)1.主函数 (4)(1)流程图 (4)(2)主函数程序 (5)2.各功能模块 (7)(1).查询模块 (7)〈1〉流程图 (7)〈2〉程序 (8)(2)机位预定模块 (9)〈1〉流程图 (9)〈2〉程序 (10)(3)退出预定模块 (11)〈1〉流程图 (11)〈2〉程序 (11)五.总结 (14)一.题目要求设计“机房机位预约系统”,要实现查询,机位预定,退出预定,查询是否有等待信息等功能模块,机位信息一文件存放,功能选择用菜单实现,要求:有20台机器,从早8点到晚8点,每两小时为一个时间段。

二.需求分析根据题目要求,由于机位信息是存放在文件中,所以应提供文件输入输出等操作;在程序中需要查询机位信息和预定机位,应提供显示,查找等操作,另外还要提供键盘式选择菜单实现功能选择。

三.总体设计四.详细设计1.主函数主函数一般设计的比较简洁,只提供输入,功能处理和输出部分的函数调用。

其中各功能模块用菜但方式选择;另外,菜单部分也可以写成函数。

流程图如下:程序:#include<stdio.h>#include<string.h>void search();void place();void call();struct cinformation{int number;int condition[6];}computer[21];int d[20];char b[ ]="placed";void main( ){int n,w1;int i,j;for(i=1;i<=20;i++){computer[i].number=i;for(j=0;j<6;j++)computer[i].condition[j]=0; }while(1){do{puts("\t\t***************主菜单****************\n\n"); puts("\t\t\t\t 1.机位查询");puts("\t\t\t\t 2.机位预定");puts("\t\t\t\t 3.退出预定");puts("\t\t\t\t 4.退出");puts("\n\n\t\t************************************\n"); printf("Choice your number(1-4):[ ]\b\b");scanf("%d",&n);if(n<1||n>4){w1=1;getchar();}else w1=0;}while(w1==1);switch(n){case 1:search();break;/*查询*/case 2:place();break;/*机位预定*/case 3:call();break;/*退出预定*/case 4:return;/*退出*/}}}运行结果:2.各功能模块设计(1)查询[流程图][程序] void search(){int i,j;for(i=1;i<=20;i++){ printf("computer %2d: ",i);for(j=0;j<6;j++)if(computer[i].condition[j]==0) printf("time %2d ",j);printf("\n");}getchar();getchar();}运行结果:[流程图][程序] void place(){int m,n;printf("选择预约机号:[ ]\b\b"); scanf("%d",&m);printf("选择预约时间段:[ ]\b\b"); scanf("%d",&n);if(computer[m].condition[n]==0) {computer[m].condition[n]=1;printf("预约成功\n");}else if(computer[m].condition[n]==1) printf("已被预约");return;}运行结果:(3)退出预定模块[流程图][程序] void call(){char x;int i,j;printf("输入欲退出预约的机号:[ ]\b\b");scanf("%d",&i);printf("输入欲退出预约的时间段:[ ]\b\b");scanf("%d",&j);printf("确定退出预约:“是”输入y),“否”输入n):[ ]\b\b");getchar(); scanf("%c",&x);if(x=='y'){computer[i].condition[j]=0;printf("退出预约成功");}if(x=='n'){computer[i].condition[j]=computer[i].condition[j];}getchar();getchar();}运行结果:五.总结一周的实习终于结束了,经过一个星期的实践,我才发现原来我的c语言掌握得并不象期末考试成绩反映的那样,通过这一次实习,让我感受到了上课听课的重要性,最典型的就是如果上课不听课,我就不知“b\b”是什么了。

机房预定位系统

机房预定位系统

合肥学院计算机科学与技术系课程设计报告20 12 ~20 13 学年第一学期课程C语言课程设计课程设计题目机房机位预订系统学生姓名学号1204032015专业班级网络工程(2)班指导教师20 13 年 1 月目录一、课程设计目的 (2)二、课程设计名称及内容 (2)三、对任务和要求的分析 (2)四.详细设计及实现 (3)五、源代码 (18)六、程序测试 (24)七、总结 (25)一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。

(6)熟练掌握C语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。

二、课程设计名称及内容课程设计名称:机房机位预定系统设计内容:设计一个机房机位预定系统,该系统要求对机房电脑机位进行管理和维护。

20台机器,从早八点到晚八点,每两个小时一个时间段.任务和要求:20台机器,编号1到20,从早八点到晚八点。

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

设计一个机房机位预定系统,通过该系统实现对机房机位的预定管理。

三、对任务和要求的分析可行研究阶段的目标是:使工作人员从繁琐的机位管理工作中解放出来;提高工作质量,使供需双方都获得满意的结果;促进报表,提高工作效率。

课程设计论文

课程设计论文
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
/***************************预定模块******************************/

C语言-机房机位预约程序

C语言-机房机位预约程序

C语言课程设计题目:机房机位预约设计者:费小丽专业:资源勘查工程班号:021091—07指导老师:童恒建所属院系:资源学院2011年1月6日1题目与要求1.1 题目:20台机器,从早8点到晚8点,每两小时一个时间段。

1.2 本系统涉及的知识点:数组,函数,文件,宏定义,循环,结构体,选择结构。

1.3 功能要求:(1)查询。

根据输入时间输出机位信息。

(2)机位预定。

根据输入的时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段。

另外,若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表。

(3)退出预定。

根据输入的时间撤销该时间的预定。

(4)查询是否有等待信息。

若有则按顺序显示联系方式,若无则显示提示信息。

2功能实现设计主菜单设计如下:1>查询机位信息.2>机位预定.3>退出预定.4>查询等待信息.3模块流程图1 主函数流程图:2 查询机位信息流程图:3 机位预定流程图:4 机位退订流程图:5 查询等待信息流程图5 程序代码设计1)主函数主函数的设计简洁,只提供加输入,排序,统计和显示等函数的调用和加载功能。

其中各功能模块用菜单方式选择。

并将main()函数体内的界面选择部分部分语句单独抽出来做一个独立的函数,目的在于系统执行完每部分功能模块后能更方便返回到系统界面。

menu()函数从主函数中独立出来后,表面的主函数只是起一个程序开始的作用,其主要功能被独立出来的被调用的menu()函数所取代。

menu()函数主要完成菜单的输出和被选择的项目的输入和相应执行函数的调用。

[程序]#include "stdio.h"#include "stdlib.h"void ReadInformation();void Search();void ComputerPrecontract();void OutPrecontract();void SearchWait();void Menu();int a[20][6];void main(){ReadInformation();Menu();}void Menu(){int i;printf("*****欢迎进入机房机位预约模拟系统!*****\n");printf("* *\n");printf("* 1> 查询机位信息. *\n");printf("* 2> 机位预定. *\n");printf("* 3> 退出预定. *\n");printf("* 4> 查询等待信息. *\n");printf("* 5> 退出系统. *\n");printf("* *\n");printf("***************************************\n");printf("请输入功能模块(1~5):[ ]\b\b");scanf("%d",&i);switch(i){case 1: Search();break;case 2: ComputerPrecontract();break;case 3: OutPrecontract();break;case 4: SearchWait();break;case 5: exit(0);}}2)子函数在各个子函数中完成各要求,并成功后将返回到menu()函数继续选择并执行其他操作。

机房机位预约模拟系统C语言课程设计

机房机位预约模拟系统C语言课程设计

机房机位预约模拟一.题目要求20台机器,从早八点到晚八点,每两个小时一个时间段.需要实现的功能:(1)查询,根据输入的时间,输出机位信息.(2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段.另:若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表.(3)退出预定,根据输入的时间,撤消该时间的预定.(4)查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息.二.需求分析根据题目要求,在程序中应实现查询,机位预定,插入等待列表,退出预定,查询等待信息等功能。

还应提供键盘式选择菜单实现功能选择。

而等待信息放在文件里,所以在相关的模块应提供文件的输入、输出操作。

三.总体设计根据上面的需求分析,将这个系统的设计分为下面4个模块:4.详细设计1.预处理命令及函数声明#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 20#define T (time-8)/2int sum[6]={0};intcomputer[6][20]={{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},{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 Exit();void detail(int time);void printf_one(int i);struct waitlistchar number[3];char telephonenumber[12];} wait[N];2.主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函2./*主函数*/ void main()Menu(); /*当前状态函数*/ void Menu() /*主界面*/ int n,w; doputs("\t\t****************COMPUTER BOOKSYSTERM*******************\n");puts("\t\t*************************MENU***************************\n");puts("\t\t\t 1.Search the current situation"); /*查询某时间段机位状态*/puts("\t\t\t 2.Book the vacant computer"); /*预定空机位*/puts("\t\t\t 3.Cancel booking"); /*取消预订*/ puts("\t\t\t 4.Search waiting"); /*查询等待信息*/puts("\t\t\t 5.Exit"); /*退出*/puts("\t\t********************************************* ***********\n");printf("Choose your number(1-5): [ ]\b\b");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;3.状态查询函数 流程图/*查询模块/*查询当前状态int time;printf("Input time between (8-20):"); scanf("%d",&time); if(time<8||time>20){printf("\tWrong time!\n");printf("Please input time between (8-20):"); scanf("%d",&time);detail(time); /*函数调用*/ getchar();Menu();4.预定模块函数流程图程序:/*scanf("%d",&time); if(time<8||time>20)printf("\tWrong time!\n");printf("\tInput time you want to book between(8-20):");scanf("%d",&time);detail(time); /*函数调用*/if(sum[T]>0){ if((fp=fopen("waitlist.txt","a"))==NULL)printf("\nCannot open file!\n");exit(0);printf("\n\tPlease Input the number you want to book and leave your telephonenumber!:\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("\tInput the number you want to book again!\n");scanf("%d",&x);sum[T]--; / *预定后该时间段空机位数减1*/computer[T][x]=1; / *预定后该机状态变为1*/printf("\tBook succeed!\n");getchar();Menu();elseprintf("There is no vacant computer at that time!\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("\tDo you want to wait?:y/n?");scanf("%s",&c);getchar();if(c=='Y'||c=='y')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++){ printf_one(i);}printf("\n\tPlease Input the number you want to book and leave your telephonenumber!:\n");if((fp=fopen("waitlist.txt","a"))==NULL) printf("\nCannot open file!\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("Input the number of the computer again!\n");scanf("%d",&y);sum[T]--;computer[T][y]=1;printf("\tOk,please wait our phone!\n");Menu();else Menu();5,取消预订模块函数流程图/*取消预订模块*/ void Cancel()int time,number;printf("Input time you have booked between(8-20):");scanf("%d",&time);if(time<8||time>20)printf("\tWrong time!\n");printf("\tInput time you have booked between(8-20):");scanf("%d",&time);else{printf("\tInput number you have booked :");scanf("%d",&number);}detail(time);sum[T]++; / *预定后该时间段空机位数加1*/ computer[T][number]=0; / *预定后该机状态变为0*/printf("\tCancel succeed!\n");getchar();Menu();6查询等待信息模块流程图/*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);elseif((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].telephonenum ber);fclose(fp);for(i=0;i<10;i++){ printf_one(i);}Menu();7.公共函数程序void detail(int time) /*此函数功能是实现查找每个时间段空机位总数和空机位号*/int i,j=0,k,s=0;int v[30];for(i=0;i<20;i++){if(computer[T][i]==0){ s++;v[j++]=i;sum[T]=s;printf("\tCurrent vacant computers:%d\n",sum[T]);for(k=0;k<j;k++)printf("\tThe vacant computers are:%d\n",v[k]);void printf_one(int i) /*此函数功能是实现输出等待列表到屏幕*/printf("\t\t%s %s \n",wait[i].number,wait[i].telephonenumber);8运行界面1,选1.,进入查询当前状态2 选2,进入预定函数3.选4.进入查询当前状态函数4.选3.取消预订5.选 2.当某时间段没有空机位时,进入下一个时间段的查询和预定6.选5.退出界面。

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

机房机位预约模拟一.题目要求20台机器,从早八点到晚八点,每两个小时一个时间段.需要实现的功能:(1)查询,根据输入的时间,输出机位信息.(2)机位预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段.另:若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表.(3)退出预定,根据输入的时间,撤消该时间的预定.(4)查询是否有等待信息,若有则按顺序显示联系方式,若无则显示提示信息.二.需求分析根据题目要求,在程序中应实现查询,机位预定,插入等待列表,退出预定,查询等待信息等功能。

还应提供键盘式选择菜单实现功能选择。

而等待信息放在文件里,所以在相关的模块应提供文件的输入、输出操作。

三.总体设计根据上面的需求分析,将这个系统的设计分为下面4个模块:4.详细设计1.预处理命令及函数声明#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 20#define T (time-8)/2int sum[6]={0};int computer[6][20]={{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},{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 Exit();void detail(int time);void printf_one(int i);struct waitlist{char number[3];char telephonenumber[12];} wait[N];2.主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

其流程图如图所示:2./*主函数*/void main(){Menu(); /*当前状态函数*/}void Menu() /*主界面*/{int n,w;do{puts("\t\t****************COMPUTER BOOKSYSTERM*******************\n");puts("\t\t*************************MENU***************************\n");puts("\t\t\t 1.Search the current situation"); /*查询某时间段机位状态*/puts("\t\t\t 2.Book the vacant computer"); /*预定空机位*/puts("\t\t\t 3.Cancel booking"); /*取消预订*/puts("\t\t\t 4.Search waiting"); /*查询等待信息*/puts("\t\t\t 5.Exit"); /*退出*/puts("\t\t********************************************************\n");printf("Choose your number(1-5): [ ]\b\b");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;}}3.状态查询函数流程图/*查询模块*/ /*查询当前状态*/ void Situation(){int time;printf("Input time between (8-20):"); scanf("%d",&time); if(time<8||time>20){printf("\tWrong time!\n");printf("Please input time between (8-20):"); scanf("%d",&time); }detail(time); /*函数调用*/ getchar(); Menu(); }4.预定模块函数流程图程序:/*预定模块*/ void Book() {int time,i=0,x,y;FILE *fp;char c;printf("Input time you want to book between(8-20):");scanf("%d",&time);if(time<8||time>20){printf("\tWrong time!\n");printf("\tInput time you want to book between(8-20):");scanf("%d",&time);}detail(time); /*函数调用*/if(sum[T]>0){ if((fp=fopen("waitlist.txt","a"))==NULL){printf("\nCannot open file!\n");exit(0);}printf("\n\tPlease Input the number you want to book and leave your telephonenumber!:\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("\tInput the number you want to book again!\n");scanf("%d",&x);sum[T]--; / *预定后该时间段空机位数减1*/computer[T][x]=1; / *预定后该机状态变为1*/printf("\tBook succeed!\n");getchar();Menu();}else{printf("There is no vacant computer at that time!\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("\tDo you want to wait?:y/n?");scanf("%s",&c);getchar();if(c=='Y'||c=='y'){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++){ printf_one(i);}printf("\n\tPlease Input the number you want to book and leave your telephonenumber!:\n");if((fp=fopen("waitlist.txt","a"))==NULL){printf("\nCannot open file!\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("Input the number of the computer again!\n");scanf("%d",&y);sum[T]--;computer[T][y]=1;printf("\tOk,please wait our phone!\n");Menu();}else Menu();}}5,取消预订模块函数流程图/*取消预订模块*/void Cancel(){int time,number;printf("Input time you have booked between(8-20):");scanf("%d",&time);if(time<8||time>20){printf("\tWrong time!\n");printf("\tInput time you have booked between(8-20):");scanf("%d",&time);}else{printf("\tInput number you have booked :");scanf("%d",&number);}detail(time);sum[T]++; / *预定后该时间段空机位数加1*/computer[T][number]=0; / *预定后该机状态变为0*/ printf("\tCancel succeed!\n");getchar();Menu();}6查询等待信息模块流程图/*查询等待信息模块*/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++){ printf_one(i);}Menu();}7.公共函数程序void detail(int time) /*此函数功能是实现查找每个时间段空机位总数和空机位号*/{int i,j=0,k,s=0;int v[30];for(i=0;i<20;i++){if(computer[T][i]==0){ s++;v[j++]=i;}}sum[T]=s;printf("\tCurrent vacant computers:%d\n",sum[T]);for(k=0;k<j;k++)printf("\tThe vacant computers are:%d\n",v[k]);}void printf_one(int i) /*此函数功能是实现输出等待列表到屏幕*/ {printf("\t\t%s %s \n",wait[i].number,wait[i].telephonenumber);}8运行界面1,选1.,进入查询当前状态2 选2,进入预定函数3.选4.进入查询当前状态函数4.选3.取消预订5.选2.当某时间段没有空机位时,进入下一个时间段的查询和预定6.选5.退出界面。

相关文档
最新文档