c语言课程设计--机房机位预定系统-绝对正确-附源代码解析
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语言课程设计--机房机位预定系统
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. 理解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语言机房机位预定系统
课程设计说明书学院、系:专业:学生姓名:学号:设计题目:学生考勤系统起迄日期:指导教师:日期: 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语言的基本语法,选择,循环等结构有了更深刻的认识。
深入地练习了函数的调用和文件的读写方法,熟悉了结构体的使用,和一些算法的运用。
在整个设计的过程中,遇到了很多问题。
当出现语法错误的时候,首先自己看书,看书上的语法和在例题中的应用,从而对该语法的记忆进一步加深。
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"))==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 课程设计心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
C语言课程设计报告飞机订票系统
C语言课程设计报告飞机订票系统摘要本文是关于C语言课程设计报告飞机订票系统,它具有灵活的菜单,可以让用户轻松查看有关航班信息的详细信息,并用于购买操作。
本文旨在概述程序的全部运行流程,运用相关编程技术来实现订票系统。
关键词:C 语言课程设计,飞机订票系统,编程技术1 引言随着科技的不断发展,传统的人工订票系统已经不能满足人们的复杂需求,订票系统需要采用新技术来改进,以适应现代用户的需求。
为了建立一个高效的订票系统,我们开发了一个飞机订票系统。
它具有基于菜单式界面的灵活性,可以有效地实现飞机航班信息的查询,购票和航班信息的管理。
本报告着重介绍了构筑飞机订票系统的过程,旨在介绍编程技术以及每个模块的函数、功能实现,并概述程序的全部运行流程。
2 技术框架编写本程序的主要语言是C,采用层次功能模块结构设计,分为用户界面,数据管理,查询服务,支付服务和关系维护四个主要模块。
(1)用户界面用户界面模块主要实现功能是提供用户访问的菜单界面,用户可以在输入信息后,访问系统并根据输入信息获取反馈,进行下一步操作。
(2)数据管理数据管理包含数据结构和文件管理模块,它用来存储和管理航班信息、乘客信息等有关数据,数据在使用后可以及时写入文件。
(3)查询服务查询服务模块提供用户查询航班信息所必需的功能,根据用户输入的查询条件,提供精确的查询结果。
(4)支付服务支付服务模块用来实现订票系统和外围支付系统或服务的接口,以进行订票支付操作,以保证系统订票的安全性。
(5)关系维护关系维护模块主要负责订票系统的关系维护,保证数据的一致性,以及相联的航班和乘客信息之间的一致性。
3 设计实现(1)用户界面模块用户界面模块主要是用户与系统的交互界面,用C语言的标准输入输出实现,通过“while-switch”语句实现对不同功能的跳转。
(2)数据管理模块数据管理模块采用数组和二维字符串实现,能够有效地存储和进行订票,查询,修改和删除数据。
c语言程序设计-机房机位预约模拟
Rem->next=NULL;
Rem->locat=0;
p=TimeQueue[n].last;
TimeQueue[n].last=Rem;
p->next=Rem;
TimeQueue[n].middle=Rem;
TimeQueue[n].CNum++;
【分析】
根据输入的时间来判断应该查询的结构体,把其首地址赋给Rem,然后通过指针的移动,比较输入的学号和存储在该结构体中的Rem->data,来判断我的预约状态。
[流程图]
【程序】
void Inquir()
{
int n;
int i;
char Infor[10];
struct node *q;
struct node *Rem;
n=S(n);
if(TimeQueue[n].CNum>=MAX){
printf("Please input your No!\n");
scanf("%s",Infor);
if((TimeQueue[n].CNum)==MAX){
Rem=(struct node *)malloc(sizeof(struct node));
printf("Please input the time you want to search!(24xiao shi zhi between8and20o’clock,include8o’clock)\n");
scanf("%d",&n);
if(n>=8&&n<20){
C语言程序设计课程设计飞机订票系统的设计
一、设计内容与设计要求一、设计内容:飞机订票系统1.1问题描述:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。
通过该系统来实现机票的订购问题。
1.2功能要求:1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。
2)、本系统显示这样的菜单:(1)输入航班信息(2)输出航班信息(3)查找航班信息a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间(4)订票预约(5)删除定票预约(6)退出系统1、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。
2、查找航班信息既可按线路查,也可按目的地查。
4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据1.3 算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库。
1.4测试数据:每架飞机的座位N=12,M=51.5 其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。
二、设计要求1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5).上机演示。
二、进度安排第 18 周星期一上午课题讲解查阅资料星期一下午系统需求分析模块设计星期二上午算法、数据结构设计主程序设计星期二下午各功能模块程序设计修改完善程序星期五下午各功能模块程序设计修改完善程序第 19 周时间待定星期五下午答辩目录一、需求分析 (4)1、程序的功能 (4)2、输入输出的要求 (6)二、概要设计 (9)三、详细设计 (11)1、数据类型 (11)2、模块分析 (12)3、函数的调用关系 (12)四、调试分析以及设计体会 (13)1、测试数据 (13)2、调试分析 (13)3、心得体会 (14)五、使用说明 (15)六、附录 (17)1、参考书目 (17)2、源程序清单(带注释) (17)七、计算机科学与技术系课程设计评分表 (40)一、需求分析1.1 系统功能需求1.1.1程序的功能1.系统管理员功能:1)录入和修改航班和机票的信息:输入航班号,输入起飞港,途径港,到达港,录入起飞时间,到达时间,飞行总共用时,可随时修改航班信息2)输出航班的信息:输入航班号便可输出之前输入的航班信息2.客户需要的功能:1)查找航班信息:a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间2)订票预约:查询航班信息后,提前订票预约需要的飞机票,3)删除定票预约4)退出系统1.1.2 主要模块流程图1.1.3 功能描述1.1.4各功能模块的功能描述(1)显示菜单函数:FLIGHT fltlist[5]; PASSENGER psglist[5][12]; ReadFlight(fltlist);PASSENGER* k;k=(PASSENGER*) psglist; ReadPassenger(k);用户可以根据菜单提示,选择相关菜单。
机房预订系统_代码
#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");}}。
c课程设计机房管理系统(源代码)
c课程设计机房管理系统(源代码)在进行C课程设计的过程中,设计一个机房管理系统是非常重要的一步。
机房管理系统的设计可以帮助学校或企业更好地管理机房资源,提高机房的利用率,保证机房的安全和稳定运行。
本文将从系统的需求分析、系统的设计、源代码实现等多个方面,详细介绍机房管理系统的设计过程。
一、系统需求分析机房管理系统的需求主要包括以下几个方面:1.1 机房资源管理:包括机房的基本信息管理(如机房编号、机房名称、机房位置等),机房设备的管理(如服务器、交换机等设备的信息管理)。
1.2 设备借还管理:包括设备借出、归还的记录管理,借出设备的有效期管理等。
1.3 机房安全管理:包括机房门禁的管理,设备的报警和监控等。
1.4 机房使用统计:包括机房的使用情况统计、设备的使用情况统计等。
1.5 系统权限管理:包括管理员权限管理、用户权限管理等。
二、系统设计2.1 数据库设计:根据系统需求,设计合适的数据库表结构来存储机房和设备的信息,设备借还记录等。
2.2 界面设计:设计用户友好的界面,方便用户进行相关操作,提高系统的易用性。
2.3 功能模块设计:根据系统需求,将系统功能进行模块化设计,并分别实现各个功能模块。
2.4 系统架构设计:设计合适的系统架构,包括前端界面与后端逻辑的交互方式,数据传输方式等。
三、源代码实现基于上述系统设计,我们使用C语言来实现机房管理系统的源代码。
以下是一个简单的示例:```c#include <stdio.h>// 定义机房结构体struct Classroom {int number;char name[100];char location[100];};// 定义设备结构体struct Device {int id;char name[100];char type[100];};// 定义设备借还记录结构体struct BorrowRecord {int deviceId;char borrower[100];char returnDate[100];};// 机房资源管理函数void manageClassroom() {// 实现机房资源管理功能的代码逻辑}// 设备借还管理函数void manageDeviceBorrow() {// 实现设备借还管理功能的代码逻辑}// 机房安全管理函数void manageClassroomSecurity() {// 实现机房安全管理功能的代码逻辑}// 机房使用统计函数void manageClassroomUsage() {// 实现机房使用统计功能的代码逻辑}// 系统权限管理函数void manageSystemPermission() {// 实现系统权限管理功能的代码逻辑}int main() {int choice;while(1) {printf("---- 机房管理系统 ----\n"); printf("1. 机房资源管理\n");printf("2. 设备借还管理\n");printf("3. 机房安全管理\n");printf("4. 机房使用统计\n");printf("5. 系统权限管理\n");printf("0. 退出系统\n");printf("请输入您的选择:");scanf("%d", &choice);switch(choice) {case 1:manageClassroom();break;case 2:manageDeviceBorrow();break;case 3:manageClassroomSecurity(); break;case 4:manageClassroomUsage(); break;case 5:manageSystemPermission();break;case 0:printf("感谢使用,再见!\n");return 0;default:printf("输入错误,请重新输入!\n");}}return 0;}```以上是一个简单的机房管理系统的C语言源代码示例,包含了机房资源管理、设备借还管理、机房安全管理、机房使用统计、系统权限管理等功能。
机房机位预订系统
一、课程设计的目的1)学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
2)全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
3)掌握程序设计中的常用算法和C语言的编程技巧和上机调试程序的方法。
4)在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。
二、课程设计任务和内容按照如下要求,运用C++语言,编写一套可用的较为完善的机房机位预订系统软件(一人独自完成),要求系统所应具有的功能如下:1)可以进行机位预订操作,每2小时1个时段,每次可预订一个时段,时间是从早上8点到晚上8点,用户可自行输入要预订的时间,如果该时间已排满,则将该用户加入到等待队伍中。
2)可以进行机位退订操作,输入用户信息及预定的时段信息,取消该用户该时段的预订。
3)可以进行查询操作,可以查询机位当前的使用情况,可以查询排在等待队伍中的机位的等待信息。
三、系统设计方案3.1系统详细描述3.1.1系统设计背景这个系统主要针对学校机房上机管理所用,学校机房人流量很大,而且上机时间密集,如果不妥善处理上机数据很可能造成上机时间混乱,甚至有可能导致数据丢失以至于整个机房瘫痪无法正常进行上机操作,因此,开发一个合理、安全的机房机位预订系统十分贴合学校内师生需要。
本项目作为《c++课程设计》课程的训练项目提出,目的是为了提高同学们系统的开发,则提高大家的实践能力。
所以开发一个符合自身宾馆实际情况的工作平台是十分必要的。
3.1.2系统设计详细信息该系统是为学校机房所用,认定学校机房共有3层,这3层共有15个机房,分别是101-105,201-205,301-305,每个机房中有40台电脑,其中101-105和201-205这10个机房是专供教师上课所用,301-305是供学生自由上机所用。
c语言课程设计--飞机订票系统
c语言课程设计–飞机订票系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本知识,能够使用C语言设计并实现一个简单的飞机订票系统。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.技能目标:学生能够运用C语言进行程序设计,解决实际问题,如设计飞机订票系统的各个功能模块。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的团队合作精神。
二、教学内容教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,以及如何使用C语言设计并实现一个简单的飞机订票系统。
具体安排如下:1.C语言基本语法和数据类型2.C语言运算符和控制结构3.C语言函数和数组4.C语言指针和字符串5.飞机订票系统的设计和实现三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:用于讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.案例分析法:通过分析实际案例,让学生了解如何使用C语言设计并实现飞机订票系统。
3.实验法:让学生动手编写代码,实现飞机订票系统的各个功能模块。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》或《C语言程序设计》2.参考书:《C Primer Plus》或《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络环境五、教学评估为了全面、客观地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和积极性。
2.作业:布置课后编程作业,评估学生对C语言知识的掌握程度及编程能力。
3.考试:期末进行闭卷考试,评估学生对C语言编程基础知识的掌握情况。
4.项目实践:要求学生分组设计并实现一个简单的飞机订票系统,评估学生的实际编程能力和团队协作能力。
机房预定位系统
合肥学院计算机科学与技术系课程设计报告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语言课程设计报告(附程序代码--飞机订票系统) 12/21/2011 第1页xxxx大学xx学院C语言课程设计题目:飞机订票系统专业: 计算机科学与技术班级:姓名:完成时间:12/21/2011 第2页第一部分:源程序(3-12页)第二部分:函数流程图(13-25页)(1)menu函数流程图(第13页)(2)enter函数流程图(第14页)(3)Order函数流程图(第15页)(4)input函数流程图(第16页)(5)browse函数流程图(第17页)(6)Search_time函数流程图(第18页)(7)Search_end函数流程图(第19页)(8)search函数流程图(第20页)(9)void menu1函数流程图(第21页)(10)book函数流程图(第22页)(11)back函数流程图(第23页)(12)save函数流程图(第24页)(13)load 函数流程图(第25页) 第三部分:心得体会(第26-27页) 12/21/2011 第3页第一部分:源程序#include <stdio.h>#include <string.h> #include <stdlib.h> #define N 1000 typedef struct plane {char ID[10]; /*航班代号*/char BePlace[10];/*飞机起飞地点*/char EnPlace[10];/*飞机降落终点*/char data[15];/*飞机起飞时间*/int max;/*飞机最大乘客人数*/int price;/*飞机票价*/int num;/*飞机已售票数*/}PLANE;PLANE ti[N];int n;/*当前的航班数目*/void menu();void menu1();void input(int i){printf("请输入航班代号:\n");scanf("%s",ti[i].ID);printf("请输入起飞地点:\n");scanf("%s",ti[i].BePlace);printf("请输入降落地点:\n");scanf("%s",ti[i].EnPlace);printf("请输入起飞时间:\n");scanf("%s",ti[i].data);printf("请输入航班的最大载客人数:\n"); scanf("%d",&ti[i].max);printf("请输入航班的票价:\n");scanf("%d",&ti[i].price);ti[i].num=0;}12/21/2011 第4页void enter(){int i;system( "cls" );printf("请输入航班的数目(0-%d)?:",N); scanf("%d",&n); /*要输入的记录个数*/ printf("\n请输入数据\n\n");for(i=0;i<n;i++){printf("\n请输入第 %d 航班记录.\n",i+1);input(i); /*调用输入函数*/}getchar();menu();}void printf_one(int i) /*显示一个记录的函数*/ {printf("%11s %6s %10s %6s %6d %6d %6d",ti[i].ID,ti[i].BePlace,ti[i].EnPlace,ti[i].data,ti[i].price,ti[i].max,ti[i].num);}void browse(){int i;system( "cls" );puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){printf_one(i);printf("\n");}getchar();getchar();12/21/2011 第5页menu();}void order() /*排序模块(按平均成绩)*/ { int i,j;struct plane s;system( "cls" );for(i=0;i<n;i++) /*冒泡法排序*/{for(j=i+1;j<n;j++)if(strcmp(ti[i].data,ti[j].data)>0) {s=ti[i];ti[i]=ti[j];ti[j]=s;}}browse();}void search_time(){int i,m=0;struct plane s;system( "cls" );printf("\n\nEnter the time:");scanf("%s",s.data); /*输入出发的时间*/puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){if(strcmp(s.data,ti[i].data)==0){m++;if((m!=0)&&(m%10==0)) /*目的是分屏显示*/{printf("\n\nPress any key to contiune . . .");12/21/2011 第6页getchar();puts("\n\n");}printf_one(i);printf("\n");/*调用显示一个记录的函数*/}}puts("\n--------------------------------------------------------------------");getchar(); /*按任意健*/getchar();menu1();}void serch_end(){int i,m=0;struct plane s;system( "cls" );printf("\n\nEnter the end Place:");scanf("%s",s.EnPlace); /*输入要到达的地方*/puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){if(strcmp(ti[i].EnPlace,s.EnPlace)==0){m++;if((m!=0)&&(m%10==0)) /*目的是分屏显示*/{printf("\n\nPress any key to contiune . . .");getchar();puts("\n\n");}printf_one(i);printf("\n");/*调用显示一个记录的函数*/}}12/21/2011 第7页puts("\n--------------------------------------------------------------------");getchar(); /*按任意健*/getchar();menu1();}void menu1(){int n,w1;do{system( "cls" ); /*清屏*/puts("\t\t\t\t 飞机售票操作!\n\n");puts("\t\t*********************MENU*********************\n\n"); puts("\t\t\t\t1.按照时间排序");puts("\t\t\t\t2.按照时间查找航班");puts("\t\t\t\t3.按照地点查找航班");puts("\t\t\t\t4.返回主菜单");puts("\n\n\t\t**********************************************\n"); printf("Choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4) /*对选择的数字作判断*/{w1=1;printf("your choice is not between 1 and 4,Please input again:"); getchar();getchar();}else w1=0;} while(w1==1);/*选择功能*/switch(n){case 1:order();break;case 2:search_time();break;case 3:serch_end();break;case 4:menu();break;}}12/21/2011 第8页int search() /*查找模块*/ {int i,k;struct plane s;k=-1;system( "cls" );printf("\n\n请输入要订票的起飞地点:");scanf("%s",s.BePlace); /*输入要到达的地方*/printf("\n\n请输入要订票的降落地点:");scanf("%s",s.EnPlace);printf("\n\n请输入要订票的起飞时间:");scanf("%s",s.data); /*输入出发的时间*/for(i=0;i<n;i++) /*查找要修改的数据*/{if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPl ace)==0&&strcmp(s.data,ti[i].data)==0){k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/ }}if(k==-1){printf("\n\nNO exist!");return -1;}elsereturn k;}void book(){int i;system( "cls" );printf("欢迎进入售票窗口!\n");12/21/2011 第9页i=search();if(i!=-1){if(ti[i].num>=ti[i].max){printf("\n该趟航班票已售完~");}else{ti[i].num++;printf("\n订票成功!\n");}}elseprintf("该航班不存在!\n");getchar();getchar(); /*按任意健*/menu();}void back(){int i,k=-1;struct plane s;system( "cls" );printf("欢迎进入退票窗口!\n");printf("\n\n输入航班代号:");scanf("%s",s.ID); /*输入要到达的地方*/ for(i=0;i<n;i++) /*查找要修改的数据*/ {if(strcmp(s.ID,ti[i].ID)==0){k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/ }}if(k==-1){printf("\n\nNO exist!");12/21/2011 第10页}else{ti[i].num--;printf("\n退票成功!\n");}getchar(); /*按任意健*/getchar(); /*按任意健*/menu();}void save(){int w=1;FILE *fp;int i;system( "cls" );if((fp=fopen("\\ticket.txt","wt"))==NULL) /*以输出打开方式,在此前的记录被覆盖*/{printf("\nCannot open file\n");return ;}for(i=0;i<n;i++)if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1){printf("file write error\n");w=0;}if(w==1){printf("file save ok!\n");}fclose(fp);getchar();getchar();menu();}void load()12/21/2011 第11页{FILE*fp;int i,w;w=1;system( "cls" );if((fp=fopen("\\ticket.txt","rt"))==NULL) {printf("\nCannotopen file\n");w=0;return ;}n=0;for(i=0;!feof(fp);i++){fread(&ti[i],sizeof( struct plane),1,fp); n++;}n=n-1;fclose(fp);if(w==1)printf("Load file ok!");getchar();getchar();menu();}void menu(){int n,w1;do{system( "cls" ); /*清屏*/ /*清屏*/puts("\t\t\t\t 飞机售票管理系统!\n\n");puts("\t\t*********************MENU*********************\n\n"); puts("\t\t\t\t1.输入新航班");puts("\t\t\t\t2.浏览 ");puts("\t\t\t\t3.航班操作");puts("\t\t\t\t4.订票");puts("\t\t\t\t5.退票");12/21/2011 第12页puts("\t\t\t\t6.保存");puts("\t\t\t\t7.载入");puts("\t\t\t\t8.退出");puts("\n\n\t\t**********************************************\n"); printf("Choice your number(1-8): [ ]\b\b");scanf("%d",&n);if(n<1||n>8) /*对选择的数字作判断*/{w1=1;printf("your choice is not between 1 and 8,Please input enter to choiceagain:");getchar();getchar();}else w1=0;} while(w1==1);/*选择功能*/switch(n){case 1:enter();break; /*输入模块*/case 2:browse();break; /*浏览模块*/case 3:menu1();break; /*查找模块*/case 4:book();break; /*订票模块*/case 5:back();break; /*退票模块*/case 6:save();break; /*保存模块*/case 7:load();break; /*加载模块*/case 8:exit(0);}}void main(){menu();}12/21/2011 第13页第二部分:函数流程图(1)menu()函数结束NY 退出 n=8 Y Y 开始NY载入 Y n=7 int n,w1YNY保存 Y 清屏(cls) n=6YNY输出目录退票 Y n=5YN输出n Y订票 Y n=4YNNif n<1||n>8 Y航班操作 Y Y n=3 YY NY w1=1 w1=0 Y浏览 Y n=2 YNN Y输入新航班 While(w==1) n=1 Y Y YYY 输出n(1-8)12/21/2011 第14页开始 (2)enter函数int i清屏(cls)请输入航班的数目n请输入数据mi=0N i<nY请输入第n次航班记录调用input()函数i++返回menu()结束12/21/2011 第15页(3)Order函数开始int i,j清屏(cls)i=0N 调用browse() i<n YYY j=i+1结束N i++ j<n YYYNstrcmp(ti[i].data, ti[j].data)>0YYY s=ti[i];ti[i]=ti[j]ti[j]=sj++12/21/2011 第16页开始 (4)input函数请输入航班代号请输入起飞地点请输入降落地点请输入起飞时间请输入航班的最大载客人数请输入航班的票价返回menu()结束12/21/2011 第17页(5)browse函数开始int i清屏(cls)i=0Ni<n i++Y调用printf_one(i)输出返回menu() 结束开始12/21/2011 第18页int i,m (6)Search_time函数清屏(cls)输入时间i=0N 返回menu1() i<nYYN i++ S==ti[i] YYY 结束m++(m!=0)&&(m%10==0)按任意键继续进行回车换行调用函数printf_one()开始12/21/2011 第19页int i,m (7) Search_end函数清屏(cls)输入要到达的地方i=0返回menu () i<nYYN i++ S==ti[i] Y结束Ym++(m!=0)&&(m%10==0)按任意键继续进行回车换行调用函数printf_one(i)12/21/2011 第20页(8)search函数开始int i,kk=-1清屏(cls)输入起飞,降落地点和时间i=0N Y k==-1i<nY Y i++输出“NO exist!”strcmp(s.BePlace,ti[i].BePlN ace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strc返回search()=k 返回search()=-1 mp(s.data,ti[i].data)==0Yk=i结束调用printf_one(k)跳出(break)12/21/2011 第21页(9)void menu1函数开始结束int n,w1清屏(cls)Ymenu() n=4Y 输出目录2NY Y n=3 () serch_end 输出n(1-4)Y NNY Ysearch_time() if n<1||n>4 n=2 Y Y YN Y w1=1 w1=0 Y Yorder() n=1 YYN输出n while(w1==1)Y Y12/21/2011 第22页(10)book函数开始int i清屏(cls)输出“欢迎进入售票窗口”i=search()N i!=-1YN ti[i].num>=ti[i].maxY ti[i].num++输出“该航班输出“该趟航不存在!” 班票已售完”输出“订票成功”返回menu()结束12/21/2011 第23页开始 (11)back函数int i,k=-1清屏(cls) 结束输入 menu()“欢迎进入退票窗口”输入输出“退票成功!”“输入航班代号”i=0 ti[i].num--NNk==-1 i<n i++Y Y输出N strcmp(s.ID,ti[i].“NOexist!” ID)==0 Y调用k=iprintf_one(k)12/21/2011 第24页开始(12)save函数结束 int w=1, FILE*fp,i清屏(cls) 输出“Cannotopen file”返回menu()Y (fp=fopen("\\ticket.txt","wt"))==NULLN调用fclose(fp)i=0NN i<n w==1i++Y YN 输出“file save fwrite(&ti[i],sizeof(struct ok!” plane),1,fp)!=1plane),1,fp)!=1Y输出“file writeerror”w=012/21/2011 第25页开始load函数n++(13)FILE*fp int i,w=1fread(&ti[i],sizeof( struct i++ plane),1,fp)Y清屏(cls) N !feof(fp)FILE*fp int i,w i=0n=0 (fp=fopen("\\ticket.txNt","rt"))==NULLY输出“Cannotopen n=n-1 file”(fp=fopen("\\ticket.txt","rtfclose(fp) "))==NULLw=0 N w==1Y返回输出“Load fileok!”返回menu() 结束12/21/2011 第26页第三部分,心得体会通过对C语言课程设计的学习,自己有很大的收获,将<<C语言>>应用得到了实践,将所学的各种语句紧密的联系起来,得到了融汇和贯通,使我对C语言有了更深一步的学习和认识。
机房预定位系统(可编辑修改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,从早八点到晚八点。
两小时一个时间段,每次可预定一个时间段。
设计一个机房机位预定系统,通过该系统实现对机房机位的预定管理。
三、对任务和要求的分析可行研究阶段的目标是:使工作人员从繁琐的机位管理工作中解放出来;提高工作质量,使供需双方都获得满意的结果;促进报表,提高工作效率。
- 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("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 课程设计心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。