




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2015级计算机科学与技术学院实验报告C语言程序设计综合实验报告1、 需求分析编写一个客房管理系统,提供键盘式菜单实现功能选择,功能包括:用户登记、统计、查询和用户信息修改。软件平台:CODEBLOCKS二、整体设计整个客房管理系统被设计为用户登记模块、统计模块、查询模块和修改模块。数据以TXT格式存储,支持保存信息。3、 详细设计客房管理系统三 查询模块二 统计模块四 修改模块一 登记模块(1)用户登记模块 通过函数readfile读取txt文件信息到room数组,提示用户选择想要入住的房间号,判断是否已经被占用,若占用,重新选择房间号,若没有占用,提示输入登记信息,把数据存入Room数组中,通过savefile添加信息到txt。调用readfile函数读取txt信息读取用户输入的的房间号判断房间是否被占用是否提示用户输入登记信息调用savefile函数存储登记信息(2)统计模块 读取txt信息到结构体数组room,提示用户选择统计方式,设置计数器,顺序遍历Room数组,1、 计数器记录数组数,即总客房数2、 判断每一个数组中的结构体的时间是否和需要查询的日期相同,若相同,计数器加一调用readfile函数,读取信息选择统计方式2、按时间统计1、统计总客房数(3)查询模块 读取信息调用readfile函数,将信息读入room结构体数组中,提示用户选择查询方式,通过基本查找算法查找Room数组。可以按房间号、价格、房间标记、用户姓名、居民身份证查询。选择统计方式按价格查询按身份证号查询按姓名查询按房间号查询每一个查询函数内部结构如下:遍历每一个结构体j判断是否和要查询的信息相同是调用打印函数,打印j结构体信息(4)修改模块 调用readfile函数,读取信息到room结构体数组,提示用户输入需要修改的房间号,采用基本查找算法在数组中找到要修改的数据,提示用户重新更改房间信息,最后将结构体数组重新写入文件保存。调用readfile(读取文件函数)输入需要查询的房间号遍历每一个结构体j判断是否是用户需要修改的房间号修改结构体j调用saveall函数,保存结构体数组4、 源代码#include #include #include #define M 80/客户结构体typedef struct client char name12; /姓名 int sex; /性别 int age; /年龄 char id20; /身份证号 int year; /入住时间 int month; int date;CLIENT;/客房结构体struct Hotelint roomid; int tel; /用户的话 int price; /价格 int sign; /默认标记为空房间 CLIENT client_list; /客户信息roomM;void Menu(); /目录界面void dengji(struct Hotel room);void savefile(struct Hotel room,int i);int readfile(struct Hotel room);void tongji(struct Hotel room);void chaxun(struct Hotel room);void printmessage(struct Hotel room,int n);void xiugai(struct Hotel room);/主函数int main() int n; char reply; Menu(); do printf(请输入选项对应的数字:n); scanf(%d,&n); while(n!=1&n!=2&n!=3&n!=4) printf(请输入各选项对应的数字!n); scanf(%d,&n); switch (n) case 1: dengji(room); break; case 2: tongji(room); break; case 3: chaxun(room); break; case 4: xiugai(room); break; printf(是否还要进入其它选项?(回复Y或y继续)n); scanf( %c,&reply); while (reply=y|reply=Y); return 0;/系统目录void Menu() printf(*客房管理系统*n); printf( ttt 1登记n ); printf( ttt 2统计n ); printf( ttt 3查询n ); printf( ttt 4修改n ); printf(*n);/登记客户信息void dengji(struct Hotel room) int x,j,i,flag; char answer; do i=readfile(room); do flag=0; printf(输入您想入住的房间号:(三位数)n); scanf(%3d,&x); for(j=0;j0); roomi+1.roomid=x; printf(请输入您的电话:(仅支持六位数号码)n); scanf(%d,&roomi+1.tel); printf(入住价格n); scanf(%d,&roomi+1.price); printf(请输入您的名字n); scanf(%s,roomi+1.client_); printf(性别:(1表示女,0表示男)n); scanf(%d,&roomi+1.client_list.sex); printf(您的年龄:n); scanf(%d,&roomi+1.client_list.age); printf(您的id:n); scanf(%s,roomi+1.client_list.id); printf( 请输入入住年月日(格式:2015 11 11)n); scanf(%4d%2d%2d,&roomi+1.client_list.year,&roomi+1.client_list.month,&roomi+1.client_list.date); savefile(room,i+1); printf(是否还要继续登记?(回复Y或y继续)n); scanf( %c,&answer); while(answer=Y|answer=y);/读取txt中的信息int readfile(struct Hotel room) FILE *fp; int i; if(fp=fopen(room.txt,r)=NULL) printf(Failure to open score.txt!n); exit(0); for (i=0;!feof(fp);i+) fscanf(fp,%5d,&roomi.roomid); fscanf(fp,%6d,&roomi.price); fscanf(fp,%15d,&roomi.tel); fscanf(fp,%12s,roomi.client_); fscanf(fp,%4d,&roomi.client_list.sex); fscanf(fp,%6d,&roomi.client_list.age); fscanf(fp,%20s,roomi.client_list.id); fscanf(fp,%7d,&roomi.client_list.year); fscanf(fp,%5d,&roomi.client_list.month); fscanf(fp,%5d,&roomi.client_list.date); fclose(fp); return i;/保存结构体数组信息到文件void savefile(struct Hotel room,int i) FILE *fp; if(fp = fopen(room.txt,a)=NULL) printf(Failure to open score.txt!n); exit(0); fprintf(fp,%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d, roomi.roomid, roomi.price, roomi.tel, roomi.client_, roomi.client_list.sex, roomi.client_list.age, roomi.client_list.id, roomi.client_list.year, roomi.client_list.month, roomi.client_list.date); fclose(fp);/统计模块void tongji(struct Hotel room) int n,x; int year,month,day,j,count=0; x=readfile(room); printf(请选择统计方式:1统计房客数,2统计某一天的房客数n); scanf(%d,&n); switch (n) case 1: printf(客房总数为:%dn,x); break; case 2: printf(请输入具体时间:n); scanf(%d%d%d,&year,&month,&day); for(j=0;jx;j+) if(roomj.client_list.year=year&roomj.client_list.month=month&roomj.client_list.date=day) count+; printf(%d年%d月%d号的房客数为%d,year,month,day,count); /查询模块void chaxun(struct Hotel room) int n,x,roomid,price,j; char name12,id20; x=readfile(room); printf(按房间号查询请按1;按价格查询请按2;按用户姓名查询请按3;按身份证号码查询请按4n); scanf(%d,&n); switch(n) case 1: printf(请输入房间号:n); scanf(%d,&roomid); for(j=0;jx;j+) if(roomj.roomid=roomid) print(room,j); break; case 2: printf(请输入价格:n); scanf(%d,&price); for(j=0;jx;j+) if(roomj.price=price) print(room,j); break; case 3: printf(请输入客户姓名:n); scanf(%s,name); for(j=0;jx;j+) if(strcmp(roomj.client_,name)=0) print(room,j); break; case 4: printf(请输入身份证号码:n); scanf(%s,id); for(j=0;jx;j+) if(strcmp(roomj.client_list.id,id)=0) print(room,j); /打印void print(struct Hotel room,int j) printf(%5d%6d%15d%12s%4d%6d%20s%7d%5d%5dn, roomj.roomid, roomj.price, roomj.tel, roomj.client_, roomj.client_list.sex, roomj.client_list.age, roomj.client_list.id, roomj.client_list.year, roomj.client_list.month, roomj.client_list.date);void printmessage(struct Hotel room,int n) int j; for(j=0;jn;j+) printf(%5d%6d%15d%12s%4d%6d%20s%7d%5d%5dn, roomj.roomid, roomj.price, roomj.tel, roomj.client_, roomj.client_list.sex, roomj.client_list.age, roomj.client_list.id, roomj.client_list.year, roomj.client_list.month, roomj.client_list.date); /修改模块void xiugai(struct Hotel room) int i, m, roomid; m = readfile(room); printf(请选择房间号:n); scanf(%d,&roomid); for(i=0;im;i+) if(roomi.roomid=roomid) printf(请输入您的电话:n); scanf(%d,&roomi.tel); printf(入住价格n); scanf(%d,&roomi.price); printf(请输入您的名字n); scanf(%s,roomi.client_); printf(性别:n); scanf(%d,&roomi.client_list.sex); printf(您的年龄:n); scanf(%d,&roomi.client_list.age); printf(您的id:n); scanf(%s,roomi.client_list.id); printf( 请输入入住年月日(格式:20150101)); scanf(%4d%2d%2d,&roomi.client_list.year,&roomi.client_list.month,&roomi.client_list.date); saveall(room,m);/保存所有信息到txt文件void saveall(struct Hotel room,int m) int j; FILE *fp; if(fp = fopen(room.txt,w)=NULL) printf(Failure to open score.txt!n); exit(0);for(j=0;jm;j+) fprintf(fp,%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d, roomj.roomid, roomj.price, roomj.tel, roomj.client_, Roomj.client_list.sex, roomj.client_list.age, roomj.client_list.id, roomj.client_list.year, roomj.client_list.month, roomj.client_list.date); fclose(fp);5、 调试与测试主界面:1、登记功能测试:情况1:客户需要入住的房间号被占用,提示已经被占用,重新选择情况2:选择的房间没有被占用,提示用户输入登记信息,登记完成后系统后台执行保存,弹出窗口询问是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030工业自动化设备用超低相位噪声晶体振荡器技术发展趋势
- 2025-2030工业自动化控制系统市场现状及未来增长潜力研究报告
- 2025-2030工业级无人机应用场景深化与监管政策分析
- 2025-2030工业物联网边缘计算芯片性能需求演进路线分析
- 大数据分析应用实践案例
- 食品企业员工安全培训考题集合
- 城市轨道交通安全管理规范与实施
- 企业年度资金预算管理方案
- 职业技能培训课件设计方法
- 小学古文教学案例及教学反思
- 教科版五年级上册科学期中测试卷附答案(夺分金卷)
- 《环氧树脂应用》课件
- 中职第1课 社会主义在中国的确立和探索试题
- 2025年辽宁省交投集团招聘笔试参考题库含答案解析
- 2024年版高尔夫球场场地租赁及会员服务协议3篇
- 香港 信托合同范本
- 建筑物拆除场地清理垃圾外运施工方案
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
- 断亲协议书模板
- 中秋国庆假期安全教育
- GB/T 19808-2005塑料管材和管件公称外径大于或等于90mm的聚乙烯电熔组件的拉伸剥离试验
评论
0/150
提交评论