高级程序设计-客房管理系统

  • 格式:doc
  • 大小:524.00 KB
  • 文档页数:23

高级语言程序设计报告题目:客房管理系统报告目录1.题目要求...................................................................................2.需求分析....................................................................................3.总体分析....................................................................................4.详细分析....................................................................................5.系统模块图................................................................................6.上机操作...................................................................................7.小结...........................................................................................8.源代码...........................................................................................1.题目要求试设计一客房管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)客户信息登记功能(3)客户信息统计功能(4)客户信息查询功能(5)客户信息修改功能(6)显示入住费用(自选)[提示]建立客户信息结构体,结构体成员包括身份证号、姓名、性别、年龄等建立客房信息结构体,包括房间号、价格、建立时间结构体,包括年、月、日2.需求分析(1)实现用户登记功能,要提供结构体的输入操作;(2)实现统计功能,要提供相应的统计操作;(3)实现查询功能,要提供查找操作;(4)实现修改功能,要提供修改操作;(5)显示入住费用(6)另外还要提供键盘式菜单实现功能选择。

3.总体分析整个客房管理系统被设计为用户登记模块、统计模块、查询模块和修改模块、显示费用模块。

4.详细分析数据结构采用结构体,设计如下结构体:时间结构体:struct date{int month;int day;int year; }final;客房结构体与客户信息结构体嵌套使用:struct hotel{int price;int room_ID;struct client{char name[20];int sex;int age;char ID_card[20];int count;struct date start;}personal;}room[M];(1)用户登记模块提示用户输入自身信息以及客房信息,把数据存入room 数组中。

(2)统计模块设置计数器,顺序遍历room 数组来实现。

实现对房客数的统计。

(3)查询模块通过基本查找算法查找room 数组。

可以按房间号、用户姓名、居民身份证查询。

(4)修改模块采用基本查找算法在数组中找到要修改的数据,直接更改。

(5)显示入住费用模块根据客户输入的信息计算总费用5.系统模块图6.上机操作(1)进入客房管理系统初界面(2)进入主菜单客户信息管理系统用户登记用户统计用户查询数据修改 显示费用(3)登记入住信息(4)进入统计界面(5)进入查询菜单按房间号查询:按姓名查询:按身份证号查询:(6)进入修改菜单修改客户信息:修改客房信息:(7)显示入住费用(7)退出界面还有两个公共函数模块,一个是保存函数,使用文件指针,把数据保存在文件中,还有一个就是输出函数,把用户相关信息通过调用函数输出。

void save() //保存函数{FILE *fp;int i;if((fp=fopen("客房管理.txt","w+"))==NULL) //打开输出文件“客房管理.txt”{printf("cannot open file\n");exit(0);}for(i=0;i<M;i++){if(fwrite((&room[i]), sizeof(room[M]),1,fp)!=1)printf("file write error\n");fflush(fp);}fclose(fp); //关闭文件}int shuchu(int q){printf("姓名:%s",room[q]);printf("\n性别(其中:1表示男,2表示女!):%d",room[q].personal.sex);printf("\n年龄:%d",room[q].personal.age);printf("\n身份证号:%s",room[q].personal.ID_card);printf("\n入住年份:%d\t\t",room[q].personal.start.year);printf("月:%d\t\t",room[q].personal.start.month);printf("日:%d\t\t",room[q].personal.start.day);printf("\n房间号:%d",room[q].room_ID);printf("\n客房单价:%d",room[q].price);printf("\n入住人数:%d\n",room[q].personal.count);return 0;}7.小结经过两、三周的编程、调试、运行,总算是搞完了。

老师以前说过,做个课程设计会让你掉一层皮,这话一点也不假!一个课程设计搞下来,原本不熟悉的知识模块经过不断的改错误、调试运行基本上非常熟悉啦。

果然还是上机操作好!通过实践掌握C语言快一些。

其实C语言并不难,只要把程序分模块,然后再把模块串起来就行了。

我觉得自己的程序编的不是很好,虽然基本功能都实现了,可是还是需要完善。

比如说统计模块,我只统计了入住的房间数和未住的房间数,统计模块做的太简单,不怎么好。

不过,我自己添加了一个输出总费用的函数模块哦。

总之,通过这次课程设计,我真的学到了好多东西,最起码动手能力方面大大加强。

受益匪浅!8.附上我的源程序#include<stdio.h>#include<conio.h>#include<string.h> //在使用中要用到的字符串都包含在本文件中#include<stdlib.h> //exit()函数就包含在此文件中#define M 100int z[100]={0}; //定义一个数组存放使用的房间的标记的信息,且初始化为0int j,s,i,w=0,h; //定义几个全局变量FILE *fp; //定义一个指向文件的指针变量struct date{int month;int day;int year;}final;struct hotel{int price;int room_ID;struct client{char name[20];int age;char ID_card[20];int count;struct date start;}personal;}room[M];int shuchu(int q);void save(); //声明保存函数void dengji( ); //声明客房登记入住函数void tongji();void chaxun( ); //声明查询入住情况函数void name();void room_ID( );void ID_card();void xiugai( ); //声明客房信息修改函数void xggr_one(); //声明修改客房信息函数中的修改个人函数void xggr_s(int j);void xgkf( ); //声明修改客房信息函数中的修改客房函数void money( ); //声明显示入住费用函数int main(){int menu(); //声明主菜单函数system("color 01f");printf("\t*********************************************************************\t");printf("\t******************高级语言程序课程设计*************************\t\t\n");printf("\t*******************客房管理信息系统****************************\t\t\n");printf("\t********************三峡大学理学院*****************************\t\t\n");printf("\t****************** 周红艳2010146107**************************\t\t\n");printf("\t*******************happy everyday!*****************************\t\t\n");printf("\t*************^_^****^_^******^_^*******^_^*********************\t\n");printf("\t继续请按1,退出请按0。

");scanf("%d",&i);switch(i){case 1:menu();break; //把主菜单用函数来实现case 0:exit(0);}save();}int menu() //菜单函数{system("cls");system("color 05f");int n;do{printf("\n");printf("\t*********************欢迎登录客房信息管理系统****************\t\t\n"); printf("\t\t*********************菜单********************\n\n\n");printf("\t\t\t\t1:登记入住信息\n\n\n");printf("\t\t\t\t2:统计入住信息\n\n\n");printf("\t\t\t\t3:查询客房入住情况\n\n\n");printf("\t\t\t\t4:修改信息\n\n\n");printf("\t\t\t\t5:显示入住费用\n\n\n");printf("\t\t\t\t6:退出\n\n\n");printf("\t\t*********************菜单********************\n");printf("\n\n\t\t\t 请选择输入选项[1\\2\\3\\4\\5\\6]:");scanf("%d",&n);while(n<1||n>6){printf("请重新输入选项!\n");scanf("%d",&n);}switch(n){case 1:dengji();break; //调用登记函数case 2:tongji();break; //调用统计函数case 3:chaxun();break; //调用查询函数case 4:xiugai();break; //调用修改函数case 5:money();break; //调用入住费用函数case 6:exit(0);}}while(n!=6);scanf("%d",&n);return 0;}void dengji( ) // 登记函数{system("cls");printf("请输入登记相关信息:\n");printf("\n房间号:");scanf("%d",&j);room[j].room_ID=j;printf("\n姓名:");scanf("%s",&room[j]);printf("\n性别(其中:1表示男,2表示女!):");scanf("%d",&room[j].personal.sex);printf("\n年龄:");scanf("%d",&room[j].personal.age);printf("\n身份证号:");scanf("%s",&room[j].personal.ID_card);printf("\n入住年份:");scanf("%d",&room[j].personal.start.year);printf("月:");scanf("%d",&room[j].personal.start.month);printf("日:");scanf("%d",&room[j].personal.start.day);printf("\n客房单价:");scanf("%d",&room[j].price);printf("请输入入住人数:");scanf("%d",&room[j].personal.count);z[j]=1; //标记使用的房间为1save();printf("\n");printf("1.继续输入信息 2.主菜单 3.退出");printf("请输入选项:\n");scanf("%d",&i);switch(i){case 1:dengji();break;case 2:menu();case 3:exit(0); }}int shuchu(int q){printf("姓名:%s",room[q]);printf("\n性别(其中:1表示男,2表示女!):%d",room[q].personal.sex); printf("\n年龄:%d",room[q].personal.age);printf("\n身份证号:%s",room[q].personal.ID_card);printf("\n入住年份:%d\t\t",room[q].personal.start.year);printf("月:%d\t\t",room[q].personal.start.month);printf("日:%d\t\t",room[q].personal.start.day);printf("\n房间号:%d",room[q].room_ID);printf("\n客房单价:%d",room[q].price);printf("\n入住人数:%d\n",room[q].personal.count);return 0;}void tongji() //统计房客数量函数{system("cls");int g,i=0,count=0;for(g=1;g<=M;g++){if(z[g]==0)++count;elseif(z[g]==1){i++;printf("\n正在使用的房间号:%d\n",g);}}printf("\n未使用的房间数:%d\n",count); //通过循环输出未使用的房间数 printf("\n已使用房间总数为:%d。