C语言程序设计结题报告
- 格式:doc
- 大小:546.50 KB
- 文档页数:19
江西师范大学高级语言课程设计结题报告课程名称高级语言程序设计课题名称酒店管理系统班级姓名 XXX 指导教师目录一、题目描述---------------------------------------3二、调研和需求分析---------------------------------3三、系统分析与设计---------------------------------51、系统功能的需求--------------------------------------------------------42、系统的主要模块--------------------------------------------------------43、部分功能程序代码展示----------------------------------------------5四、不同模块链接与设计------------------------------------------------51、总界面展示---------------------------------------------------------------52、模块功能和代码展示--------------------------------------------------9五、主要函数名称以及功能-------------------------------------------13六、部分测试与运行效果-----------------------------------------------15一、题目描述设计一个酒店管理系统,是基于三种不同的角色系统,来实现酒店入住管理功能,其中需要设计前台操作、用户操作和系统管理操作。
它的内容对企业的决策者和管理者都至关重要,所以酒店管理系统应该能够为用户提供充足的信息和快捷的查询手段,使其不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使管理者能够准确、有效地管理酒店。
二、调研与需求分析随着当前旅游业的兴起,其附属产业——酒店行业也日显火爆,特别是在旅游旺季,酒店中人工订房以及管理房间等渐渐显露出其劣势,比如:容易出错、难以管理等等,因此,通过查阅与调研,我们获得了基本的酒店系统的功能,以实现系统地管理酒店。
该系统能够从三种角色(客户、前台、系统管理)来提高工作效率。
其中,用户可以通过机器自助订房,减轻了前台的负担,也使订房速度更加便捷,使客户得到更便捷的服务。
1.系统管理员应该具有初步的对用户的浏览增加删除查看的功能,对用户密码的初始化,修改管理员自身的登录密码以及备份系统信息功能,以防系统信息丢失。
2.客户可以在自助机器上进行订房,先查看房间,然后选择适合的房间订房,查看自己历史订房信息以及修改自己的信息(身份证号与手机号),如果该用户没有注册过,那么可以在界面选择注册,注册后自动登录然后实现其他操作。
3.前台可以查看房间信息,可以查看当前酒店住店所入住用户,办理订房、退房以及查看收益信息,以实现良好的酒店财务管理等等。
三、系统分析与设计1.系统功能的需求(系统的各个子模块的业务流程和模块的功能进行简单的介绍)系统管理员管理功能模块:系统管理员拥有最高权限,能进行用户的添加、删除、各个用户信息的修改等功能,另外,具有初始化各用户密码,系统备份等功能。
前台管理功能模块:前台管理员能够浏览已入住用户、查询房间信息、修改个人信息和修改登录密码,办理订房、退房,查看收益信息功能。
顾客管理功能模块:拥有查找空房间、各类房间的价格、办理入住和退房、结账、显示顾客信息、修改个人信息、修改登录密码的功能。
经过分析,我们对程序有了初步了解。
列出了每个角色的功能以及如何实现等操作。
2.系统的主要模块程序的模块很直观的反映出软件能够实现的功能,由下面的模块可以很直观的看出我们设计的餐厅管理系统程序能够方便的实现为顾客查询房间、办理入住和退房、结账、查询顾客信息、各个用户角色登录等。
1.在系统管理员增加用户部分,实现了录入用户的编号、姓名、手机号和身份证号这一系列信息的功能。
2.在显示和添加和删除房间部分,显示全部房间具体信息。
3.在删除用户信息部分,我们设计了三个函数,可以实现删除其中无用的用户信息,回到主菜单。
4.在修改个人信息模块,我们通过可以修改的部分,也就是将身份证号与手机号进行修改。
5.在顾客办理入住模块,我们通过顾客的编号,来记录顾客的住房信息,最后能让顾客看到自己花了多少钱以下为登录流程图:主要先实现对框架的设计以及链接设计。
由此我们设计了界面函数如下图所示:进入不同的角色界面如图:系统管理:前台:客户部分功能代码展示:主函数:int main(){int c,loop=1,userTotal;char currentUserId[LENGTH_OF_USERID+1];user userArray[MAX_USER];userTotal=readUserFromFile(userArray,"user.dat"); //从文件中读入用户信息while (loop){system("cls"); //清除屏幕c=mainMenu(); //显示登录菜单switch(c){case 1: //登录系统c=login(currentUserId); //调用身份验证函数,返回用户角色enterSystem(c,currentUserId); //显示不同角色对应的菜单break;case 2: //注册账号AddUser(userArray,&userTotal,1);writeUserToFile(userArray,userTotal,"user.dat");//存盘break;default: //退出系统loop=0;break;}showtime(1);}return 0;}登陆函数:int login( char currentUserId[]){user userArray[MAX_USER]; //用户数组int userTotal; //用户总数int counter=3;char verificationCode[5]; //存放验证码char inputVerificationCode[5]; //存入用户输入的验证码char originalPassWord[LENGTH_OF_PASS+1];char password[LENGTH_OF_PASS+1];int pos;userTotal=readUserFromFile(userArray,"user.dat"); //从文件中读入用户信息while (counter>0){ system("cls");counter--;displayTopic("媛媛酒店欢迎您-->用户登录");printf("\t\t\t用户名:[ ]\b\b\b\b\b\b\b\b\b\b\b\b");scanf("%s",currentUserId);printf("\t\t\t密码:[ ]\b\b\b\b\b\b\b\b\b\b\b\b");inputPassWord(password,7);getVerificationCode(verificationCode,4);printf("\t\t\t验证码:[ ] %s\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",verificationCode);scanf("%s",inputVerificationCode);pos= userSearch(userArray,userTotal,currentUserId);if (pos==-1){ printf("该用户不存在!还有%d次登录机会。
\n",counter);getch();continue;}else{ strcpy(originalPassWord,userArray[pos].password);if (strcmp(originalPassWord,password)!=0){ printf("输入的密码有误,还有%d次登录机会。
\n",counter);getch();continue;}elseif( strcasecmp(verificationCode,inputVerificationCode)!=0){ printf("输入的验证码有误,还有%d次登录机会。
\n",counter);getch();continue;}elsereturn userArray[pos].role; //返回用户角色}}return -1; //登录失败进入不同系统函数:void enterSystem(int c,char currentUserId[]){switch(c){case 1://c==1表示系统管理员用户AdminSystem(currentUserId);break;case 2://c==2表示前台管理员登录ManagerSystem(currentUserId);break;case 3:case 0://c==3 表示用户userSystem(currentUserId);break;default:break;}}四、不同模块链接与设计如上图代码,通过用户结构体中的角色代码,来判断进入不同的界面所显示的是哪类型的角色应该显示的界面。
模块通过主函数进行链接,通过主函数来进入不同的模块函数,进而进行操作。
主模块展示int mainMenu(); //登录菜单int menuManager(); //前台角色子程序菜单int menuUser(); //用户程序菜单int menuAdmin(); //系统管理员角色子程序菜单void ManagerSystem(char currentUserId[]); //前台角色子程序void userSystem(char currentUserId[]); //客户角色子程序void AdminSystem(char currentUserId[]); //系统管理员角色子程序模块功能和代码展示功能如上图所示,部分代码如下:void AdminSystem(char currentUserId[]) //系统管理员用户{int loop=1;while(loop==1){int chose,userTotal,houseTotal,Inf_Total,money_total;inf houseInf[1000],money_All[1000];Inf_Total=read_Inf_FormFile(houseInf,"inf.dat");money_total=read_Inf_FormFile(money_All,"money.dat");//读取收益信息user userArray[MAX_USER];userTotal=readUserFromFile(userArray,"user.dat"); //从文件中读入用户信息house houseArray[1000];houseTotal=readHouseFromFile(houseArray,"house.dat");system("cls");chose=menuAdmin();switch(chose){case 1://浏览用户print_user_information(userArray,userTotal);system("pause");break;case 2://添加用户AddUser(userArray,&userTotal,0);writeUserToFile(userArray,userTotal,"user.dat"); //存盘break;case 3://删除用户delUser(userArray,&userTotal,currentUserId,0);writeUserToFile(userArray,userTotal,"user.dat"); //存盘break;case 4://初始化用户密码print_user_information(userArray,userTotal); //显示reset_UserPassword(userArray,userTotal);break;case 5://修改登录密码reset_MyPassword(userArray,userTotal,currentUserId);break;case 6://系统备份backUp(userArray,userTotal,houseArray,houseTotal,houseInf,Inf_Total,money _All,money_total);system("pause");break;default:loop=0;break;}}}五、主要函数名称以及功能char *getRole(int code);//获取角色int readUserFromFile(user userArray[],char *f); // 读取文件int readHouseFromFile(house houseArray[],char *f); //读取房间信息char *getRole(int code); //获取角色void inputPassWord(char password[],int n); //输入密码void getVerificationCode(char verificationCode[],int n); // 获取验证码int userSearch(user userArray[], int userTotal, char id[]); // 搜索用户位置void writeUserToFile(user userArray[],int userTotal,char *f); // 写入文件void printHouse(house houseArray[],int houseTotal); //查看房间信息void userChose(house houseArray[],int houseTotal,user userArray[], int userTotal,char currentUserId[]); //用户订房间void writeInformation(char currentUserId[],char name[],int number,int floor,int day,char *f); //记录入住情况写入文件void writeHouseToFile(house houseArray[],int *houseTotal,char *f); //写入房间信息int myInf(char currentUserId[],inf houseInf[],char *f); //获取我的订房记录信息到数组中void printMyInf(inf houseInf[],int counter,char currentUserId[]); //输出我的订房信息int checkOut(int a,inf houseInf[],int counter,char currentUserId[],user userArray[],int userTotal,house houseArray[],int houseTotal);//结账退房void changeUserInformation(user userArray[], int userTotal,char currentUserId[]);//更改信息void reset_MyPassword(user userArray[],int userTotal, char userId[]) ; //修改当前登录密码void managerCheck(user userArray[],int userTotal,house houseArray[],int houseTotal,int *money);//前台退房void printOnlineUser(user userArray[],int userTotal,inf houseInf[],int counter);//输出酒店已入住用户int read_Inf_FormFile(inf houseInf[],char *f); //读取入住总记录void print_Inf(int c,inf houseInf[],int Inf_Total); //输出总记录void Chose_To_Print(int a,inf houseInf[],int Inf_Total); //按要求——输出总记录void add_room(house houseArray[],int *n); //增加房间int room_search(int number,house houseArray[],int houseTotal); //搜索是否存在改号码的房间void del_room(house houseArray[],int *n); //删除房间void print_user_information(user userArray[],int userTotal); //浏览用户void AddUser(user userArray[],int *userTotal,int a); //添加用户void delUser(user userArray[],int *n,char currentUser[],int a);//删除用户void reset_UserPassword(user userArray[],int userTotal); //初始化用户密码void print_money(inf money[],int counter); //输出收益信息void backUp(user userArray[],int userTotal,house houseArray[],int houseTotal,inf houseInf[],int Inf_Total,inf money_All[],int money_total);//备份信息void backUp_user(user userArray[],int userTotal); //备份用户信息void backUp_room(house houseArray[],int houseTotal); //备份房间信息void backUp_inf(inf houseInf[],int Inf_Total); //备份入住信息void backUp_inf2(inf money_All[],int money_total); //备份收益信息void write_Information(inf houseInf[],int Inf_Total,char *f); //写入总入住信息六、部分功能测试以及效果展示用户登录:客户订房:前台浏览在酒店用户:0001到前台退房:前台收班:退出系统:。