C语言程序设计-客房管理系统源码和报告_第1页
C语言程序设计-客房管理系统源码和报告_第2页
C语言程序设计-客房管理系统源码和报告_第3页
C语言程序设计-客房管理系统源码和报告_第4页
C语言程序设计-客房管理系统源码和报告_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言程序设计》综合实验报告需求分析编写一个客房管理系统,提供键盘式菜单实现功能选择,功能包括:用户登记、统计、查询和用户信息修改。软件平台:CODEBLOCKS二、整体设计整个客房管理系统被设计为用户登记模块、统计模块、查询模块和修改模块。数据以TXT格式存储,支持保存信息。详细设计客房管理系统客房管理系统三查询模块二统计模块四修改模块一登记模块三查询模块二统计模块四修改模块一登记模块(1)用户登记模块通过函数readfile读取txt文件信息到room数组,提示用户选择想要入住的房间号,判断是否已经被占用,若占用,重新选择房间号,若没有占用,提示输入登记信息,把数据存入Room数组中,通过savefile添加信息到txt。调用readfile函数读取txt信息调用readfile函数读取txt信息读取用户输入的的房间号读取用户输入的的房间号判断房间是否被占用判断房间是否被占用是是否否提示用户输入登记信息提示用户输入登记信息调用savefile函数存储登记信息调用savefile函数存储登记信息(2)统计模块读取txt信息到结构体数组room,提示用户选择统计方式,设置计数器,顺序遍历Room数组,计数器记录数组数,即总客房数判断每一个数组中的结构体的时间是否和需要查询的日期相同,若相同,计数器加一调用readfile函数,读取信息调用readfile函数,读取信息选择统计方式选择统计方式2、按时间统计1、统计总客房数2、按时间统计1、统计总客房数(3)查询模块读取信息调用readfile函数,将信息读入room结构体数组中,提示用户选择查询方式,通过基本查找算法查找Room数组。可以按房间号、价格、房间标记、用户姓名、居民身份证查询。读取信息选择统计方式选择统计方式按价格查询按身份证号查询按姓名查询按房间号查询按价格查询按身份证号查询按姓名查询按房间号查询每一个查询函数内部结构如下:遍历每一个结构体j遍历每一个结构体j判断是否和要查询的信息相同判断是否和要查询的信息相同是是调用打印函数,打印j结构体信息调用打印函数,打印j结构体信息(4)修改模块调用readfile函数,读取信息到room结构体数组,提示用户输入需要修改的房间号,采用基本查找算法在数组中找到要修改的数据,提示用户重新更改房间信息,最后将结构体数组重新写入文件保存。调用readfile(读取文件函数)调用readfile(读取文件函数)输入需要查询的房间号输入需要查询的房间号遍历每一个结构体j遍历每一个结构体j判断是否是用户需要修改的房间号判断是否是用户需要修改的房间号修改结构体j修改结构体j 调用saveall函数,保存结构体数组调用saveall函数,保存结构体数组源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#defineM80//客户结构体typedefstructclient{charname[12];//姓名intsex;//性别intage;//年龄charid[20];//身份证号intyear;//入住时间intmonth;intdate;}CLIENT;//客房结构体structHotel{ introomid;inttel;//用户的话intprice;//价格intsign;//默认标记为空房间CLIENTclient_list;//客户信息}room[M];voidMenu();//目录界面voiddengji(structHotelroom[]);voidsavefile(structHotelroom[],inti);intreadfile(structHotelroom[]);voidtongji(structHotelroom[]);voidchaxun(structHotelroom[]);voidprintmessage(structHotelroom[],intn);voidxiugai(structHotelroom[]);//主函数intmain(){intn;charreply;Menu();do{printf("请输入选项对应的数字:\n");scanf("%d",&n);while(n!=1&&n!=2&&n!=3&&n!=4){printf("请输入各选项对应的数字!\n");scanf("%d",&n);}switch(n){case1:dengji(room);break;case2:tongji(room);break;case3:chaxun(room);break;case4:xiugai(room);break;}printf("是否还要进入其它选项?(回复Y或y继续)\n");scanf("%c",&reply);}while(reply=='y'||reply=='Y');return0;}//系统目录voidMenu(){printf("************************客房管理系统***************************\n");printf("\t\t\t1————登记\n");printf("\t\t\t2————统计\n");printf("\t\t\t3————查询\n");printf("\t\t\t4————修改\n");printf("***************************************************************\n");}//登记客户信息voiddengji(structHotelroom[]){intx,j,i,flag;charanswer;do{i=readfile(room);do{flag=0;printf("输入您想入住的房间号:(三位数)\n");scanf("%3d",&x);for(j=0;j<i;j++){if(room[j].roomid==x){printf("该房间已经被占用!\n");flag=1;}}}while(flag>0);room[i+1].roomid=x;printf("请输入您的电话:(仅支持六位数号码~)\n");scanf("%d",&room[i+1].tel);printf("入住价格\n");scanf("%d",&room[i+1].price);printf("请输入您的名字\n");scanf("%s",room[i+1].client_);printf("性别:(1表示女,0表示男)\n");scanf("%d",&room[i+1].client_list.sex);printf("您的年龄:\n");scanf("%d",&room[i+1].client_list.age);printf("您的id:\n");scanf("%s",room[i+1].client_list.id);printf("请输入入住年月日(格式:20151111)\n");scanf("%4d%2d%2d",&room[i+1].client_list.year,&room[i+1].client_list.month,&room[i+1].client_list.date);savefile(room,i+1);printf("是否还要继续登记?(回复Y或y继续)\n");scanf("%c",&answer);}while(answer=='Y'||answer=='y');}//读取txt中的信息intreadfile(structHotelroom[]){FILE*fp;inti;if((fp=fopen("room.txt","r"))==NULL){ printf("Failuretoopenscore.txt!\n"); exit(0);}for(i=0;!feof(fp);i++){fscanf(fp,"%5d",&room[i].roomid);fscanf(fp,"%6d",&room[i].price);fscanf(fp,"%15d",&room[i].tel);fscanf(fp,"%12s",room[i].client_);fscanf(fp,"%4d",&room[i].client_list.sex);fscanf(fp,"%6d",&room[i].client_list.age);fscanf(fp,"%20s",room[i].client_list.id);fscanf(fp,"%7d",&room[i].client_list.year);fscanf(fp,"%5d",&room[i].client_list.month);fscanf(fp,"%5d",&room[i].client_list.date);}fclose(fp);returni;}//保存结构体数组信息到文件voidsavefile(structHotelroom[],inti){FILE*fp;if((fp=fopen("room.txt","a"))==NULL) { printf("Failuretoopenscore.txt!\n"); exit(0); }fprintf(fp,"%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d", room[i].roomid, room[i].price, room[i].tel, room[i].client_, room[i].client_list.sex, room[i].client_list.age, room[i].client_list.id, room[i].client_list.year,room[i].client_list.month,room[i].client_list.date);fclose(fp);}//统计模块voidtongji(structHotelroom[]){intn,x;intyear,month,day,j,count=0;x=readfile(room);printf("请选择统计方式:1>统计房客数,2>统计某一天的房客数\n");scanf("%d",&n);switch(n){case1:printf("客房总数为:%d\n",x);break;case2:printf("请输入具体时间:\n");scanf("%d%d%d",&year,&month,&day);for(j=0;j<x;j++){if(room[j].client_list.year==year&&room[j].client_list.month==month&&room[j].client_list.date==day){count++;}}printf("%d年%d月%d号的房客数为%d",year,month,day,count);}}//查询模块voidchaxun(structHotelroom[]){intn,x,roomid,price,j;charname[12],id[20];x=readfile(room);printf("按房间号查询请按1;按价格查询请按2;按用户姓名查询请按3;按身份证号码查询请按4\n");scanf("%d",&n);switch(n){case1:printf("请输入房间号:\n");scanf("%d",&roomid);for(j=0;j<x;j++){if(room[j].roomid==roomid){print(room,j);}}break;case2:printf("请输入价格:\n");scanf("%d",&price);for(j=0;j<x;j++){if(room[j].price==price){print(room,j);}}break;case3:printf("请输入客户姓名:\n");scanf("%s",name);for(j=0;j<x;j++){if(strcmp(room[j].client_,name)==0){print(room,j);}}break;case4:printf("请输入身份证号码:\n");scanf("%s",id);for(j=0;j<x;j++){if(strcmp(room[j].client_list.id,id)==0){print(room,j);}}}}//打印voidprint(structHotelroom[],intj){printf("%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d\n", room[j].roomid, room[j].price, room[j].tel, room[j].client_, room[j].client_list.sex, room[j].client_list.age, room[j].client_list.id, room[j].client_list.year,room[j].client_list.month,room[j].client_list.date);}voidprintmessage(structHotelroom[],intn){intj;for(j=0;j<n;j++){printf("%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d\n",room[j].roomid,room[j].price,room[j].tel,room[j].client_,room[j].client_list.sex,room[j].client_list.age,room[j].client_list.id,room[j].client_list.year,room[j].client_list.month,room[j].client_list.date);}}//修改模块voidxiugai(structHotelroom[]){inti,m,roomid;m=readfile(room);printf("请选择房间号:\n");scanf("%d",&roomid);for(i=0;i<m;i++){if(room[i].roomid==roomid){printf("请输入您的电话:\n");scanf("%d",&room[i].tel);printf("入住价格\n");scanf("%d",&room[i].price);printf("请输入您的名字\n");scanf("%s",room[i].client_);printf("性别:\n");scanf("%d",&room[i].client_list.sex);printf("您的年龄:\n");scanf("%d",&room[i].client_list.age);printf("您的id:\n");scanf("%s",room[i].client_list.id);printf("请输入入住年月日(格式:20150101)");scanf("%4d%2d%2d",&room[i].client_list.year,&room[i].client_list.month,&room[i].client_list.date);}}saveall(room,m);}//保存所有信息到txt文件voidsaveall(structHotelroom[],intm){intj;FILE*fp;if((fp=fopen("room.txt","w"))==NULL) { printf("Failuretoopenscore.txt!\n"); exit(0); } for(j=0;j<m;j++){fprintf(fp,"%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d", room[j].roomid, room[j].price, room[j].tel, room[j].client_, Room[j].c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论