c语言课程设计机房机位预定系统绝对正确,附源代码
机房机位预约模拟管理系统设计源代码

#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;/* 查找符合信息*/ if(strcmp(R->xuehao,m)==0)break;if(i>Z) /*i>z 表示在等待列表中 */{ if(R->next==NULL){ q->next=NULL;*/for(i=1;;q=R,R=R->next,i++) }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(" 错误。
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);}}}。
C语言课程设计报告——飞机订票系统源代码

#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#include<process.h> //包含access函数的头文件#define N 9999 //定义最多的航班数#define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式struct air //定义结构体数组{int num; //定义航班号char start[20]; //航班起始站char over[20]; //终点站char time[10]; //飞行时间int count; //机票数量}s[N];int i,m=0; //定义全局变量char ii[10];void add(); //函数声明增加航班信息函数void print(); //显示航班信息void search(); //查找航班信息void dingpiao(); //订票业务void tuipiao(); //退票void read(); //读取文件void save(); //保存文件void output(); //输出格式void paixu(); //航班排序void chushihua(); //系统初始化void build(); //建立数据文件void paixu1(); //按航班号从小到大排序void paixu2(); //从大到小void main() //主函数{int j;chushihua(); //系统初始化判断是否存在原始数据文件printf(" 欢迎使用飞机订票系统\n"); //打印出系统主界面do{printf("========================================================================= ======= ");printf("1.增加航班信息\n""\t2.浏览航班信息\n""\t\t3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n""\t\t\t4.航班排序(按航班号)\n""\t\t\t\t5.订票业务\n""\to(︶︿︶)o\t\t\t6.退票业务\n""\t\t\t\t\t\t0.退出\n");printf("===================================================================== =========== ");printf("请在0-6中选择以回车键结束:");scanf("%d",&j);switch(j){case 1: add(); //调用增加航班函数break;case 2:print(); //调用显示模块break;case 3:search(); //调用查找模块break;case 4:paixu(); //调用排序函数break;case 5:dingpiao(); //调用订票模块break;case 6:tuipiao(); //调用退票模块break;case 0: //退出系统save();printf("使用,再见!");break;}}while(j!=0); //判断是否调用其他函数}void chushihua() //定义系统初始化函数{if(access("hangban.dat",0)){build();}elseread();}void build() //定义建立数据文件函数{FILE *fp; //定义文件指针if((fp=fopen("hangban.dat","wb"))==NULL) //打开文件并判定是否出错{printf("创建文件失败! "); //打印出错提示getchar();return;}printf("请依次输入航班信息(以回车键结束):\n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");for(i=0;i<N;i++){printf("请输入航班号: ");scanf("%d",&s[i].num); //输入航班号printf("请输入起始站: ");scanf("%s",s[i].start); //输入起始站printf("请输入终点站: ");scanf("%s",s[i].over); //输入终点站printf("请输入时间(星期几): ");scanf("%s",s[i].time); //输入时间printf("请输入机票数: ");scanf("%d",&s[i].count); //输入机票数fwrite(&s[i],sizeof(struct air),1,fp);m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);if(strcmp(ii,"y")!=0) //判断是否继续添加航班信息{fclose(fp); //关闭文件return;}}}void read() //定义读取文件函数{FILE *fp;if((fp=fopen("hangban.dat","r"))==NULL){printf("创建文件失败! ");getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct air),1,fp); //逐块读取数据i++;m++; //计算存在航班数}m--;fclose(fp);}void save() //定义保存函数{FILE *fp;if((fp=fopen("hangban.dat","wb"))==NULL){printf("创建文件失败! ");getchar();return;}for(i=0;i<m;i++) //逐块保存数据fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}void add() //定义增加航班信息函数{do{printf("请依次输入您要增加的航班信息(以回车键结束): \n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");printf("请输入航班号: ");scanf("%d",&s[m].num); //读取航班号printf("请输入起始站: ");scanf("%s",s[m].start); //读取起始站printf("请输入终点站: ");scanf("%s",s[m].over); //读取终点站printf("请输入时间: ");scanf("%s",s[m].time); //读取时间printf("请输入机票数: ");scanf("%d",&s[m].count); //读取机票数m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);}while(!strcmp(ii,"y")); //判断是否继续添加}void output() //定义输出格式函数{printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n"); //信息标题for(i=0;i<m;i++)printf(PRINT);//打印出信息}void print() //定义显示航班信息函数{printf("\n目前我们有如下航班:\n");output(); //调用输出格式函数printf("\n请按回车键返回上层菜单");getchar();getchar();}void search() //定义查询函数{int n;do{printf("\n请输入航班号:");scanf("%d",&n); //输入查询的航班号for(i=0;i<m;i++){if(s[i].num==n) //按航班号判定输出条件{printf("\n您所查找的航班信息为:\n ");printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n");printf(PRINT); //显示信息printf("\n查询完毕,按回车键继续");getchar();getchar();return;}}printf("\n对不起,没有您需要的信息!\n ");printf("是否重新查找?请键入y或n以回车键结束");scanf("%s",ii);}while(!strcmp(ii,"y"));//判定是否重新查找}void dingpiao() //定义订票业务函数{int n;char a[10]="y";do{search(); //调用查询模块if(!strcmp(ii,"n")){printf("对不起!没有找到您所需要的航班,所以不能订票。
c语言课程设计机房机位预定系统绝对正确附源代码

机房机位预定系统2任务概述20台机器,编号1到20,从早八点到晚八点。
两小时一个时间段,每次可预定一个时间段。
功 能要求:(1) 系统以菜单方式工作(2) 查询,根据输入时间,输出机位信息。
(3) 机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用 户在非空时间上机,则将用户信息列入等待列表。
(4 )退出预定,根据输入的时间,机器号撤销该事件的预定!(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。
3模块划分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.退出"); /*退出*/ 4主要函数说明及其N-S 图1.主函数:int mai n(){Menu();}void Menu(){int n,w;do/*当前状态函数*/ /*主界面*/ puts("\t\t**************** 机房机位预约系统 ***************** **\ n"); puts("\t\t************************* 菜单 ************************* **\n");puts("\t\t* *******************************************************\n"); printf(" 选择菜单号(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();}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++){ prion e(i);}printf("\n\t请输入你想要预定的机号,并且留下你的电话号码!:\n");if((fp=fope n( "waitlist.txt","a"))==NULL){printf("\n无法打开文件!\n”);exit(0);}sca nf("%s %s",wait[i]. nu mber,wait[i].teleph onenu mber);for(i=0;i<1;i++)fwrite(&wait[i],sizeof(struct waitlist),1,fp);fclose(fp); /*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/printf("再次输入电脑的序号!\n");scan f("%d", &y);sum[T]__;computer[T][y]=1;printf("\t好了,请等待我们的电话!\n");Me nu();}else Me nu();}4. 取消预定:void Cancel。
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语言版课题:飞机订票系统和图的遍历的动态演示姓名:学号:班级:指导教师:订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2:主要设计思路:1)算法构造流程图:A:主菜单:B:各分块模板的构造流程图:3:功能函数设计:(1):订票系统主菜单函数menu_select()本函数主要构造系统的主菜单,系统需要实现很多功能,并且各个功能需要各自的函数支持,所以通过主菜单可以轻松的进入各个函数下实现各自的功能,故主菜单显得尤为重要。
其实就是通过键盘输入选择项,然后通过scanf接受,在通过swtich判断进入各个选择项。
(2):工作人员管理函数enter()&change()系统需要各个航班的详细信息,所以需要工作人员把信息输入系统里,以供乘客查询订票。
enter()函数的构造就是为了解决这个问题。
而有可能航班线路更改或由于天气等原因飞机的起飞时间发生了更改,故工作人员需要及时更改信息,所以需要构造change()函数。
(3):列出航班信息的函数list()乘客需要查询各个航班的信息,所以通过系统要能调出上面工作人员已经录入好的航班信息,所以构造本函数来实现这个功能。
(4)乘客具体查询函数search()本函数分两个分函数:search1()和search2(),它们分别实现乘客的按航班查询和按出发及抵达城市的两种查询方案。
C语言课程设计报告—机房机位预约模拟系统95372

程序设计报告C语言程序设计编程实践是学习C语言程序设计的一重要环节,为提高学生程序设计能力,通过课堂和上机实践练习使学生的程序设计能力上一台阶。
通过前四单元温顾而知新、庖丁解牛、举一反三、熟能生巧等过程的练习设计下面一个完整的程序1.题目要求设计机房机位预约模拟系统”要求:20台机器,从早8点到晚8点,每两个小时一个时间段。
需要实现功能:1,查询,根据输入时间,输出机位信息。
2,即为预定,根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供最近空机时间段。
另:若用户要求在非空时间上机,则将用户信息插入该时间段的等待列表.3,退出预定,根据输入的时间,撤销该时间的预定。
4,查询是否有等待的信息,若有则按顺序显示联系方式,若无则显示提示信息。
2需求分析根据题目要求在程序中需实现查询,预定,排队等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的3总体设计整个系统可分为3个模块查询模块预定模块取消模块机房机位预约模拟< 系统查询模块预定模块取消模块___________ )详细设计主函数比较简洁,只提供输入、功能处理和输出部分的函数调用。
(开始显示一系列功能选择结束mai n(){int i;for(i=0;i<LENGTH;i++){TimeQueue[i].CNum=0;TimeQueue[i].first=NULL;TimeQueue[i].middle=NULL;TimeQueue[i].last=NULL;}while(1){printf("请输入序号!:\n");输入n ,判断m是否是0到6? N根据n 值调用各功能模块函数printf("1.查询预定的机位 2.查询空机位3•预定4.取消预定5.等待列表6.查询等待者列表0.退出\n");sea nf("%d",&i);switch(i){case 1:1 nq uir();break;case 2:i nq uir();break;case 3:book in g();break;case 4:ca ncel();break;case 5:wait in g();break;case 6:i nqu ir_wait in g();break;case 0:exit(0);default:pri ntf("error\ n");}}}void Inq uir(){int n;char Infor[10];struct node *Rem;printf(” 输入查询时间(24 hours 8~20 o'clock」nclude 8o'clock)\n"); sca nf("%d",&n);if(n >=8&&n <20){n=S( n);printf("请输入学号\n");sca nf("%s",l nfor);Rem=TimeQueue[ n].first;for(;Rem->n ext!=NULL;Rem=Rem->n ext)if(strcmp(Rem->data,l nfor)==0)break;if(Rem->locat!=0)prin tf("The computer nu mber is %d\n ”,Rem->locat);else printf("对不起•你依旧在等待列表中或者没有预定”);}else printf("错误,请再次输入.\n");}void inq uir(){int n;printf("输入想要查询的时间(24 hours 8~20o'clock,include 8 o'clock)\n"); sca nf("%d",&n);if(n >=8&&n <20){n=S( n);if(TimeQueue[ n].CNum<MAX)prin tf("There are %d empty computer!\n",MAX-TimeQueue[ n].CNum); else printf("对不起.没有空余机位\n");}else printf("错误,再次输入.\n"); }预定模块void book ing()int n;char In for[10];struct node *Rem;struct node *p;printf("输入想要预定的时间\n");sca nf("%d",&n);if(n >=8&&n< 20){ n=S( n);if(TimeQueue[ n].CNum<MAX){ printf("请输入你的学号\n");sca nf("%s",I nfor);if(TimeQueue[ n].first==NULL){Rem=(struct node *)malloc(sizeof(struct no de)); Rem->locat=1; strcpy(Rem->data,l nfor);Rem-> next=NULL;TimeQueue [n ].first=Rem;TimeQueue[ n].last=Rem;TimeQueue[ n].CNum++;printf("成功预定\n");}else{Rem=(struct node *)malloc(sizeof(struct no de)); strcpy(Rem->data,I nfor);Rem-> next=NULL;p=TimeQueue[ n].last;Rem->locat=TimeQueue[ n].CNum+1;prin tf("%d",Rem->locat);TimeQueue[ n].last=Rem;p->n ext=Rem;TimeQueue[ n].CNum++;printf("成功预定\n");}}else printf("没有空余机位!");}else printf(”错误•请再次输入.\n");}void wait in g(){int n;char Infor[10];struct node *Rem;struct node *p;printf("请输入想要排队的时间\n");sca nf("%d",&n);if(n >=8&&n <20){n=S( n);if(TimeQueue[ n].CNum>=MAX){printf("请输入你的学号\n”);scanf("%s",lnfor );if((TimeQueue[ n].CNum)==MAX){Rem=(struct node *)malloc(sizeof(struct no de)); strcpy(Rem->data,l nfor);Rem-> next=NULL;Rem->locat=0;p=TimeQueue[ n].last;TimeQueue[ n].last=Rem;p->n ext=Rem;TimeQueue[ n].middle=Rem;下载可编辑TimeQueue[ n].CNum++;printf("成功排队\n");}else{Rem=(struct node *)malloc(sizeof(struct no de));strcpy(Rem->data,I nfor);Rem-> next=NULL;Rem->locat=0;p=TimeQueue[ n].last;TimeQueue[ n].last=Rem;p->n ext=Rem;TimeQueue[ n].CNum++;printf("成功排队\n");}}下载可编辑else printf(”有空余机位,无须等待\n");}else printf("错误•再次输入.\n");}取消模void can cel(){int n;int i;char In for[10]; struct node *Rem; struct node *q;struct node *p;printf("请输入预定的时间\n");sea nf("%d",&n);if(n >=8&&n <20){prin tf("Please in put your No.!\n");sca nf("%s",l nfor);n=S( n);Rem=TimeQueue[ n].first;q=Rem;for(i=1;;q=Rem,Rem=Rem-> next,i++)if(strcmp(Rem->data,I nfor)==0)break; if(i>MAX){ if(Rem-> next==NULL){q-> next=NULL;TimeQueue [n ].last=q;free(Rem);TimeQueue[ n].CNum--;prin tf("Succeed to out the queue!\n");}else{q->n ext=Rem->n ext;free(Rem);TimeQueue[ n].CNum--;prin tf("Succeed to out the queue!' n");}}else{if(TimeQueue[ n].CNum>MAX){TimeQueue [n ].middle->locat=Rem->locat; TimeQueue[ n].middle=TimeQueue[ n].middle-> next; }if(i==1) TimeQueue [n ].first=Rem-> next;else q->n ext=Rem->n ext;free(Rem);TimeQueue[ n].CNum--;printf(”成功取消预定!\n");附录源代码:#include<stdio.h>#in clude<stdlib.h>#in clude<stri ng.h>#defi ne LENGTH 6#defi ne MAX 20#defi ne S(r) (r-8)/2#defi ne NULL 0struct no de{in t locat;char data[10];struct node *n ext;};struct node *head;struct cell{int CNum;struct node *first; struct node *middle; struct node *last;}TimeQueue[LENGTH];void Inq uir(){int n;char Infor[10];struct node *Rem;printf(” 输入查询时间(24 hours 8~20 o'clock」nclude 8o'clock)\n"); sca nf("%d",&n);if(n >=8&&n <20){n=S( n);printf("请输入学号\n");sca nf("%s",l nfor);Rem=TimeQueue[ n].first;for(;Rem->n ext!=NULL;Rem=Rem->n ext)if(strcmp(Rem->data,I nfor)==0)break;if(Rem->locat!=0)prin tf("The computer nu mber is %d\n ”,Rem->locat);else printf("对不起•你依旧在等待列表中或者没有预定”);}else printf("错误,请再次输入.\n");}void inq uir(){int n;printf("输入想要查询的时间(24 hours 8~20o'clock,include 8 o'clock)\n");sea nf("%d",&n);if(n >=8&&n <20){n=S( n);if(TimeQueue[ n].CNum<MAX)prin tf("There are %d empty computer!' n",MAX-TimeQueue[ n].CNum); else printf("对不起.没有空余机位\n");}else printf("错误,再次输入.\n");}void book in g(){int n;char In for[10];struct node *Rem;struct node *p;printf("输入想要预定的时间\n");sca nf("%d",&n);if(n >=8&&n <20){if(TimeQueue[ n].CNum<MAX){n=S( n);if(TimeQueue[ n].CNum<MAX){printf("请输入你的学号\n”);sea nf("%s",l nfor);if(TimeQueue[ n].first==NULL){Rem=(struet node *)malloc(sizeof(struct no de));Rem->locat=1; strcpy(Rem->data,l nfor);Rem-> next=NULL;TimeQueue [n ].first=Rem;TimeQueue[ n].last=Rem;TimeQueue[ n].CNum++;printf("成功预定\n");}else{Rem=(struct node *)malloc(sizeof(struct no de)); strcpy(Rem->data,I nfor); Rem-> next=NULL;p=TimeQueue[ n].last;Rem->locat=TimeQueue[ n].CNum+1;prin tf("%d",Rem->locat);TimeQueue[ n].last=Rem;p->n ext=Rem;下载可编辑TimeQueue[ n].CNum++;printf(” 成功预定\n");}}else printf("没有空余机位!");}else printf("错误.请再次输入.\n");}void wait in g(){int n;char Infor[10];struct node *Rem;struct node *p;printf("请输入想要排队的时间\n");sca nf("%d",&n);if(n >=8&&n <20){n=S( n);if(TimeQueue[ n].CNum>=MAX){printf("请输入你的学号\n”);sca nf("%s",l nfor);下载可编辑if((TimeQueue[ n].CNum)==MAX){Rem=(struct node *)malloc(sizeof(struct no de)); strcpy(Rem->data,l nfor); Rem-> next=NULL;Rem->locat=0;p=TimeQueue[ n].last;TimeQueue[ n].last=Rem;p->n ext=Rem;TimeQueue[ n].middle=Rem;TimeQueue[ n].CNum++;printf("成功排队\n");}else{Rem=(struct node *)malloc(sizeof(struct no de)); strcpy(Rem->data,I nfor); Rem-> next=NULL;Rem->locat=0;p=TimeQueue[ n].last;TimeQueue[ n].last=Rem;p->n ext=Rem;TimeQueue[ n].CNum++;下载可编辑prin tf("Please in put your No.!\n"); .专业.整理.printf (” 成功排队 \n");}else printf ("有空余机位,无须等待\n");}else printf ("错误•再次输入.\n");void can cel(){int n;int i;char In for[10];struct node *Rem;struct node *q;struct node *p;printf("请输入预定的时间\n ”); sca nf("%d",&n);if(n >=8&&n <20){ sca nf("%s",l nfor);n=S( n);Rem=TimeQueue[ n].first;q=Rem;下载可编辑for(i=1;;q=Rem,Rem=Rem-> next,i++) if(strcmp(Rem->data,l nfor)==0)break; if(i>MAX){if(Rem-> next==NULL){q-> next=NULL;TimeQueue [n ].last=q;free(Rem);TimeQueue[ n].CNum--;prin tf("Succeed to out the queue!' n");}else{q->n ext=Rem->n ext;free(Rem);TimeQueue[ n].CNum--;prin tf("Succeed to out the queue!' n");}}else{if(TimeQueue[ n].CNum>MAX){TimeQueue [n ].middle->locat=Rem->locat; TimeQueue[ n].middle=TimeQueue[ n].middle-> next; } if(i==1) TimeQueue[n].first=Rem->next;else q->n ext=Rem->n ext;free(Rem);TimeQueue[ n].CNum--;printf(”成功取消预定!\n");}}else printf("错误,请再次输入.\n");}void inqu ir_wait in g(){int n;struct node *q;printf("查询其他等待者的预定时间\n");sca nf("%d",&n);if(n >=8&&n <20){n=S( n);if(TimeQueue[ n].CNum>MAX){printf("等待列表are:\n”);q=TimeQueue[ n].middle;for(;q->n ext!=NULL;q=q_>n ext) prin tf("%s\n",q_>data); prin tf("%s\n",TimeQueue[ n] .last->data);}else printf("这个时间段没有预定者\n");}else printf("错误。
c语言机票预订系统课程设计

c语言机票预订系统课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合应用;2. 让学生理解并掌握C语言中文件操作的基本方法;3. 让学生掌握C语言实现机票预订系统的基本原理和步骤。
技能目标:1. 培养学生运用C语言解决实际问题的能力,能独立完成机票预订系统的设计和编程;2. 培养学生分析问题、设计解决方案的能力,能针对具体需求进行模块划分和功能实现;3. 提高学生的团队协作能力,学会与他人合作共同完成一个项目。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养良好的编程习惯;2. 培养学生面对问题勇于挑战、积极解决的态度,增强自信心;3. 通过团队合作,培养学生的集体荣誉感和责任感。
课程性质分析:本课程为C语言程序设计课程的实践环节,旨在让学生通过实际项目的开发,巩固所学知识,提高编程能力。
学生特点分析:学生已具备C语言基础知识,具有一定的编程能力,但缺乏实际项目经验,对综合运用知识解决实际问题的能力有待提高。
教学要求:1. 注重理论与实践相结合,引导学生将所学知识应用于实际项目中;2. 鼓励学生积极参与讨论,培养独立思考和解决问题的能力;3. 加强团队合作指导,提高学生的沟通能力和协作精神。
二、教学内容1. C语言基础知识回顾:结构体、数组、函数、指针、文件操作等;2. 机票预订系统需求分析:讲解系统功能需求,引导学生进行需求分析和模块划分;3. 系统设计:介绍C语言实现机票预订系统的基本原理,包括数据结构设计、模块设计等;4. 编程实现:- 数据结构设计:定义所需的结构体,如航班信息、用户信息等;- 功能模块实现:编写各功能模块的代码,如航班查询、预订、取消预订等;- 文件操作:实现数据的存储和读取,保证数据的持久化;5. 测试与优化:介绍测试方法,指导学生进行系统测试,发现问题并进行优化;6. 团队合作与项目展示:组织学生分组合作,完成整个项目,并进行项目展示和评价。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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("","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("","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("","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();}}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);}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("","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 课程设计心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握一些基本的软件开发技术是十分重要和必要的。