1、可编辑版C语言程序设计综合实验报告一、 需求分析编写一个客房管理系统,提供键盘式菜单实现功能选择,功能包括:用户登记、统计、查询和用户信息修改。软件平台:CODEBLOCKS二、整体设计整个客房管理系统被设计为用户登记模块、统计模块、查询模块和修改模块。数据以TXT格式存储,支持保存信息。三、 详细设计客房管理系统三 查询模块二 统计模块四 修改模块一 登记模块1用户登记模块 通过函数readfile读取txt文件信息到room数组,提示用户选择想要入住的房间号,判断是否已经被占用,若占用,重新选择房间号,若没有占用,提示输入登记信息,把数据存入Room数组中,通过savefile添加信息到t
2、xt。调用readfile函数读取txt信息读取用户输入的的房间号判断房间是否被占用是否提示用户输入登记信息调用savefile函数存储登记信息2统计模块 读取txt信息到结构体数组room,提示用户选择统计方式,设置计数器,顺序遍历Room数组,1、 计数器记录数组数,即总客房数2、 判断每一个数组中的结构体的时间是否和需要查询的日期相同,若相同,计数器加一调用readfile函数,读取信息选择统计方式2、按时间统计1、统计总客房数3查询模块 读取信息调用readfile函数,将信息读入room结构体数组中,提示用户选择查询方式,通过基本查找算法查找Room数组。可以按房间号、价格、房间标记
3、、用户姓名、居民身份证查询。选择统计方式按价格查询按身份证号查询按姓名查询按房间号查询每一个查询函数内部结构如下:遍历每一个结构体j判断是否和要查询的信息相同是调用打印函数,打印j结构体信息4修改模块 调用readfile函数,读取信息到room结构体数组,提示用户输入需要修改的房间号,采用基本查找算法在数组中找到要修改的数据,提示用户重新更改房间信息,最后将结构体数组重新写入文件保存。调用readfile读取文件函数输入需要查询的房间号遍历每一个结构体j判断是否是用户需要修改的房间号修改结构体j调用saveall函数,保存结构体数组四、 源代码#include #include #inclu
4、de #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;void savefile;i
5、nt readfile;void tongji;void chaxun;void printmessage;void xiugai;/主函数int main int n; char reply; Menu; do printf; scanf; while printf; scanf; switch case 1: dengji; break; case 2: tongji; break; case 3: chaxun; break; case 4: xiugai; break; printf; scanf; while ; return 0;/系统目录void Menu printf; pri
6、ntf; printf; printf; printf; printf;/登记客户信息void dengji int x,j,i,flag; char answer; do i=readfile; do flag=0; printf; scanf; forj=0;j if printf; flag=1; while0; roomi+1.roomid=x; printf请输入您的电话:n; scanf; printf; scanf; printf; scanf; printf; scanf; printf; scanf; printf; scanf; printf; scanf; savefil
7、e; printf; scanf; while;/读取txt中的信息int readfile FILE *fp; int i; iffp=fopen=NULL printf; exit; for i=0;!feof;i+ fscanf; fscanf; fscanf; fscanf; fscanf; fscanf; fscanf; fscanf; fscanf; fscanf; fclose; return i;/保存结构体数组信息到文件void savefile FILE *fp; iffp = fopen=NULL printf; exit; fprintf; fclose;/统计模块vo
8、id tongji int n,x; int year,month,day,j,count=0; x=readfile; printf统计房客数,2统计某一天的房客数n; scanf; switch case 1: printf; break; case 2: printf; scanf; forj=0;j if count+; printf; /查询模块void chaxun int n,x,roomid,price,j; char name12,id20; x=readfile; printf; scanf; switch case 1: printf; scanf; forj=0;j i
9、f print; break; case 2: printf; scanf; forj=0;j if print; break; case 3: printf; scanf; forj=0;j ifstrcmp=0 print; break; case 4: printf; scanf; forj=0;j ifstrcmp=0 print; /打印void print printf;void printmessage int j; forj=0;j printf; /修改模块void xiugai int i, m, roomid; m = readfile; printf; scanf; f
10、ori=0;i if printf; scanf; printf; scanf; printf; scanf; printf; scanf; printf; scanf; printf; scanf; printf; scanf; saveall;/保存所有信息到txt文件void saveall int j; FILE *fp; iffp = fopen=NULL printf; exit;forj=0;j fprintf; fclose;五、 调试与测试主界面:1、登记功能测试:情况1:客户需要入住的房间号被占用,提示已经被占用,重新选择情况2:选择的房间没有被占用,提示用户输入登记信息,
11、登记完成后系统后台执行保存,弹出窗口询问是否继续登记下一个顾客17 / 172、 统计功能测试:情况1:选择统计客房总数,系统返回总客房数情况2:选择按日期统计,系统返回具体某天的客房总数3、 查询功能测试:情况1:按房间号查询情况2:按价格查询情况3:按用户名查询情况4:按身份证号查询4、修改功能测试:输入需要修改的房间后,系统提示用户重新写入房间信息六、 总结本程序可通过键盘选择目录对应的功能,提供登记、查询、统计、修改四大功能。优点:客户信息通过txt文件保存,在下次运行程序时仍然能读取保存的信息。不足:功能尚不完善,没有添加退房功能;用户操作界面需要美化,提高可操作性;可以加入清屏功能
12、,以便在用户在选择相关功能以后,不再显示菜单目录。个人心得:这是本学期第一次用C语言编写一个系统,实现比较完整的功能。1、 遇到的部分问题:程序不能将信息正确从txt文档中读取,出现乱码。原因:读取函数和存储函数的读取/存储格式没有对应。查询功能模块中按日期查询出现错误,只能正确读取最后一组数据的日期原因:每组数据之间没有空格符号,导致前一组和后一组数据的日期和房间号牵连到一块,导致读取错误。更改读取和存储函数的格式。1、 通过实践,体会到了需求分析和结构设计流程等编程准备工作的重要性:一个大的程序,不可能通过大脑的构思,一步就能完成,要想减少程序编写过程中遇到的思路错误,必须要在此之前构思好,清楚该实现什么功能,这个功能怎么实现,需要一些什么途径。2、 分而治之、信息隐藏的思想对于大型程序来说尤为重要,不但能减少程序中重复的代码,还能使程序结构和功能更加清晰,可读性更强。3、 关键地方要加以注释,以便日后能够读懂函数的程序的功能。
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100