欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計

 更新時間:2022年03月17日 10:06:48   作者:N?J?H  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)酒店客房管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

設(shè)計目標(biāo):設(shè)計一個酒店客房管理系統(tǒng),用C語言實現(xiàn)。對該系統(tǒng)的要求如下:

一、需求描述

系統(tǒng)角色:

1.總臺服務(wù)員

能夠根據(jù)住客需求完成住客登記任務(wù),并完成客房管理功能。

1)登記入住功能
2)結(jié)賬功能
3)查詢房間功能
4)客房信息打印
5)統(tǒng)計功能

2.系統(tǒng)管理員

能夠添加、刪除和修改系統(tǒng)用戶(總臺服務(wù)員),設(shè)置用戶權(quán)限。包括

1)添加新用戶
2)刪除用戶
3)修改用戶權(quán)限

二、系統(tǒng)流程描述

系統(tǒng)啟動則進(jìn)入登陸菜單。

1.登陸流程

(1)程序運行,顯示登陸界面,請用戶輸入角色、賬號及密碼。
(2)用戶輸入賬號密碼后,系統(tǒng)校驗正確與否,正確則進(jìn)入功能菜單。錯誤則提示輸入錯誤,繼續(xù)顯示登陸界面。

2.總臺服務(wù)員使用流程描述:

1)主界面:

總臺服務(wù)員登陸成功后,系統(tǒng)顯示功能菜單:“1. 登記入住 2. 結(jié)賬3.查詢客房信息 4.客房信息打印6.客房統(tǒng)計7.退出”。

2)登記入住

(1)服務(wù)員輸入數(shù)字1,系統(tǒng)進(jìn)入登記入住界面,要求總臺服務(wù)員輸入客戶信息及房間信息。
(2)總臺服務(wù)員輸入客戶姓名、性別、年齡、身份證號、所需房間類型、房間號、房間單價、入住天數(shù)。
(3)系統(tǒng)根據(jù)輸入信息顯示應(yīng)付費用??偱_服務(wù)員收取費用后輸入收費金額。系統(tǒng)在客房記錄中添加該客戶的記錄并寫入磁盤。
(4)系統(tǒng)應(yīng)保證在所需房間不足時報告錯誤。

3)結(jié)賬

(1)服務(wù)員輸入數(shù)字2,系統(tǒng)進(jìn)入結(jié)賬界面,要求總臺服務(wù)員輸入房間信息。
(2)總臺服務(wù)員輸入房間號,系統(tǒng)顯示客戶名稱、房間單價、入住天數(shù)、總金額、應(yīng)付房款、實付房款、欠費金額或退款額等相關(guān)信息。并提示總臺服務(wù)員收取欠費金額或退還押金。
(3)總臺服務(wù)員輸入補交房款或退還押金數(shù)額后,系統(tǒng)將該客戶的入住記錄放入歷史入住記錄中。并將該房間設(shè)置為空閑。

4)查詢客房信息

(1)服務(wù)員輸入數(shù)字3,系統(tǒng)進(jìn)入查詢界面,并顯示“1.按顧客名稱查詢 2.按房間號查詢”。
(2)總臺服務(wù)員輸入1.系統(tǒng)提示服務(wù)員輸入顧客名稱,輸入后,系統(tǒng)顯示該顧客的入住記錄,包括顧客信息及入住房間號、房間單價、入住天數(shù)、總金額等相關(guān)信息。 如無該顧客的信息則打印“沒有此客戶的入住信息。”
(3)總臺服務(wù)員輸入2.系統(tǒng)提示服務(wù)員輸入房間號及查詢起止時間。輸入房間號及起止時間后,系統(tǒng)顯示該房間從起始時間到結(jié)束時間的入住客戶的姓名、身份證號、入住天數(shù)等信息。

5)客房信息打印

服務(wù)員輸入數(shù)字4,系統(tǒng)進(jìn)入客房信息打印界面。系統(tǒng)打印所有房間信息,按房間號排序,包括房間號、房間類型、是否有人入住、入住人數(shù)、入住天數(shù)等信息。

6)客房統(tǒng)計

服務(wù)員輸入數(shù)字5,系統(tǒng)進(jìn)入客房統(tǒng)計界面。系統(tǒng)打印本日的入住人數(shù)、入住房間數(shù)、空置房間數(shù)、入住率統(tǒng)計、空房率統(tǒng)計、實收房款。

7)退出

服務(wù)員選擇退出,則系統(tǒng)返回到登陸界面。

3.系統(tǒng)管理員使用流程

1)主界面:

管理員登陸成功后,系統(tǒng)顯示功能菜單:“1.用戶資料打印 2.添加用戶 3.刪除用戶 4.修改用戶權(quán)限 5退出”

2)用戶資料打?。?/p>

管理員選擇用戶資料打印功能,則進(jìn)入用戶資料打印界面,提示管理員輸入用戶賬號,管理員輸入后,系統(tǒng)打印該用戶的賬號、密碼、角色、權(quán)限等信息。

3)添加用戶

管理員選擇添加用戶功能,則進(jìn)入添加用戶界面,提示管理員輸入用戶賬號和初始密碼。管理員輸入后,系統(tǒng)打印該用戶相關(guān)信息并返回主界面。

4)刪除用戶

管理員選擇刪除用戶功能,則進(jìn)入刪除用戶界面,提示管理員輸入要刪除的用戶賬號。管理員輸入后,系統(tǒng)提示已刪除該用戶信息并返回主界面。

5)修改用戶權(quán)限

管理員選擇修改用戶權(quán)限功能,則進(jìn)入修改用戶權(quán)限界面,提示管理員輸入要修改的用戶賬號。管理員輸入后,系統(tǒng)打印該用戶的權(quán)限,并提示管理員輸入要修改后的權(quán)限,管理員輸入后,系統(tǒng)打印該用戶的信息并返回主界面。

6)退出

管理員選擇退出,則系統(tǒng)返回到登陸界面。

1)聲明部分

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<Windows.h>
#include<string.h>
#define LEN sizeof(struct hotel)
typedef struct hotel
{
?? ?int might1;//管理員訪問權(quán)限1
?? ?int might2;//服務(wù)員訪問權(quán)限2
?? ?int might3;//客房訪問權(quán)限3
?? ?char account[20];//賬戶
?? ?char possword[20];//密碼
?? ?char name[20];//姓名
?? ?char sex[5];//性別
?? ?int age;//年齡
?? ?char ID[20];//身份證號
?? ?char time[20];//入住時間
?? ?char phone[20];//聯(lián)系電話
?? ?char room[15];//房間類型
?? ?int numder;//房間號
?? ?int price;//房間單價
?? ?int day;//入住天數(shù)
?? ?int cope;//總價
?? ?int payment;//
?? ?int debt;
?? ?char manage[5];//是否結(jié)賬
?? ?struct hotel *next;//
}LinkList;
void menu1(struct hotel *p);
void menu22(struct hotel *p);
void menu2(struct hotel *p);
void menu33(struct hotel *p);
void menu3(struct hotel *p);
void ADD(LinkList *p);//添加客戶
void ADD1(LinkList *p);//添加服務(wù)員
void amend(LinkList *p);//修改自己或服務(wù)員的密碼
void Remove(LinkList *p);//刪除服務(wù)員
void Seller(LinkList *p);//客房結(jié)賬
void amend2(LinkList *p);//修改客戶信息
void Inquire(LinkList *p);//客房查詢
void statistics1(LinkList *p);//某日客房統(tǒng)計
void statistics3(LinkList *p);//客房統(tǒng)計
void statistics2(LinkList *p);//服務(wù)員統(tǒng)計
void set(LinkList *p);//設(shè)置房間數(shù)量
void statistics(LinkList *p);//客房打印

2)添加客戶

void ADD(LinkList *p)
{
?? ?struct hotel *q, *n = p;
?? ?struct hotel *h = p->next;
?? ?struct hotel *m = p->next;
?? ?int flag = 0;
?? ?system("cls");
?? ?q = (struct hotel *)malloc(sizeof(struct hotel));
?? ?q->next = NULL;
?? ?printf("請依次輸入:客戶姓名,性別,年齡,ID,入住時間(年.月.日),聯(lián)系電話\n");
?? ?scanf("%s%s%d%s%s%s", q->name, q->sex, &q->age, q->ID, q->time, q->phone);
?? ?printf("請依次輸入客戶的:房間類型,房間號,房間單價,入住天數(shù),付款\n");
?? ?scanf("%s%d%d%d%d", q->room, &q->numder, &q->price, &q->day, &q->payment);
?? ?strcpy(q->manage, "NO");
?? ?getchar();
?? ?q->cope = q->price *q->day;
?? ?q->debt = q->cope - q->payment;
?? ?q->might1 = 0;
?? ?q->might2 = 0;
?? ?q->might3 = 3;
?? ?strcpy(q->account, "0");
?? ?strcpy(q->possword, "0");
?? ?if (q->numder>m->age)
?? ?{
?? ??? ?printf("超出房間限額!\n");
?? ??? ?Sleep(2000);
?? ??? ?menu3(p);
?? ?}
?? ?while (h != NULL)
?? ?{
?? ??? ?if (h->numder == q->numder &&strcmp(h->manage, "NO") == 0)
?? ??? ?{
?? ??? ??? ?flag = 1;
?? ??? ??? ?printf("此房間客戶暫未退房");
?? ??? ??? ?Sleep(1000);
?? ??? ??? ?ADD(p);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?h = h->next;
?? ?}
?? ?while (n->next != NULL)
?? ?{
?? ??? ?n = n->next;
?? ?}
?? ?n->next = q;
?? ?if (flag == 0)
?? ?{
?? ??? ?printf("\t添加成功\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?else
?? ??? ?printf("\t添加失敗\n");
?? ?getchar();
?? ?menu3(p);
}

3)添加服務(wù)員

void ADD1(LinkList *p)
{
?? ?struct hotel *q, *n = p;
?? ?struct hotel *h = p->next;
?? ?int flag = 0;
?? ?system("cls");
?? ?q = (struct hotel *)malloc(sizeof(struct hotel));
?? ?q->next = NULL;
?? ?printf("請輸入添加的賬號\n");
?? ?scanf("%s", q->account);
?? ?printf("請輸入添加的密碼\n");
?? ?scanf("%s", q->possword);
?? ?getchar();
?? ?q->might1 = 0;
?? ?q->might2 = 2;
?? ?q->might3 = 0;
?? ?strcpy(q->name, "0");
?? ?strcpy(q->sex, "0");
?? ?q->age = 0;
?? ?strcpy(q->ID, "0");
?? ?strcpy(q->room, "0");
?? ?strcpy(q->manage, "0");
?? ?strcpy(q->time, "0");
?? ?strcpy(q->phone, "0");
?? ?q->numder = 0;
?? ?q->price = 0;
?? ?q->day = 0;
?? ?q->debt = 0;
?? ?q->payment = 0;
?? ?q->cope = 0;
?? ?while (h != NULL)
?? ?{
?? ??? ?if (strcmp(h->account, q->account) == 0)
?? ??? ?{
?? ??? ??? ?flag = 1;
?? ??? ??? ?printf("賬號重復(fù)!");
?? ??? ??? ?Sleep(1000);
?? ??? ??? ?menu2(p);
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?h = h->next;
?? ?}
?? ?while (n->next != NULL)
?? ?{
?? ??? ?n = n->next;
?? ?}
?? ?n->next = q;
?? ?if (flag == 0)
?? ?{
?? ??? ?printf("\t添加成功\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?else
?? ??? ?printf("\t添加失敗\n");
?? ?getchar();
?? ?menu2(p);
}

4)修改密碼或賬戶

void amend(LinkList *p)
{
?? ?struct hotel *q = p->next;
?? ?char acc[20], poss[20], ac[20];
?? ?int flag = 0, i;
?? ?system("cls");
?? ?printf("請輸入要修改的賬號:");
?? ?scanf("%s", acc);
?? ?while (q != NULL)
?? ?{
?? ??? ?if (strcmp(q->account, acc) == 0)
?? ??? ?{
?? ??? ??? ?flag = 1;
?? ??? ??? ?printf("1.僅修改密碼\n2.密碼賬戶均修改\n");
?? ??? ??? ?scanf("%d", &i);
?? ??? ??? ?if (i == 1)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("請輸入新密碼:");
?? ??? ??? ??? ?scanf("%s", poss);
?? ??? ??? ??? ?strcpy(q->possword, poss); break;
?? ??? ??? ?}
?? ??? ??? ?if (i == 2)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("請輸入新賬號:");
?? ??? ??? ??? ?scanf("%s", ac);
?? ??? ??? ??? ?getchar();
?? ??? ??? ??? ?printf("請輸入新密碼:");
?? ??? ??? ??? ?scanf("%s", poss);
?? ??? ??? ??? ?strcpy(q->account, ac);
?? ??? ??? ??? ?strcpy(q->possword, poss); break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?q = q->next;
?? ?}
?? ?if (flag == 0)
?? ?{
?? ??? ?printf("賬戶錯誤!\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?if (flag == 1)
?? ?{
?? ??? ?printf("修改成功!\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?getchar();
?? ?getchar();
?? ?menu2(p);
}

5)修改客戶信息

void amend2(LinkList *p)
{
?? ?struct hotel *q = p->next;
?? ?int i, j = 0, k;
?? ?char na[20], se[5], I[20], ti[20], Ph[20], roo[15];
?? ?int ag, nu, pr, da;
?? ?system("cls");
?? ?printf("請輸入修改內(nèi)容的房間號:\n");
?? ?scanf("%d", &nu);
?? ?while (q != NULL)
?? ?{
?? ??? ?if (q->numder == nu)
?? ??? ?{
?? ??? ??? ?printf("請選擇將要修改的內(nèi)容:\n");
?? ??? ??? ?printf("1.姓名\n");
?? ??? ??? ?printf("2.性別\n");
?? ??? ??? ?printf("3.年齡\n");
?? ??? ??? ?printf("4.身份證號\n");
?? ??? ??? ?printf("5.聯(lián)系電話\n");
?? ??? ??? ?printf("6.入住時間\n");
?? ??? ??? ?printf("7.房間號");
?? ??? ??? ?printf("8.房間類型\n");
?? ??? ??? ?printf("9.房間單價\n");
?? ??? ??? ?printf("10.入住天數(shù)\n");
?? ??? ??? ?printf("11.返回上一層\n");
?? ??? ??? ?scanf("%d", &i);
?? ??? ??? ?switch (i)
?? ??? ??? ?{
?? ??? ??? ?case 1:printf("請輸入新修改的姓名\n"); scanf("%s", na); j = 1; strcpy(q->name, na); break;
?? ??? ??? ?case 2:printf("請輸入新修改的性別\n"); scanf("%s", se); j = 1; strcpy(q->sex, se); break;
?? ??? ??? ?case 3:printf("請輸入新修改的年齡\n"); scanf("%d", &ag); j = 1; q->age = ag; break;
?? ??? ??? ?case 4:printf("請輸入新修改的身份證號\n"); scanf("%s", I); j = 1; strcpy(q->ID, I); break;
?? ??? ??? ?case 5:printf("請輸入新修改的聯(lián)系電話\n"); scanf("%s", Ph); j = 1; strcpy(q->phone, Ph); break;
?? ??? ??? ?case 6:printf("請輸入新修改的入住時間\n"); scanf("%s", ti); j = 1; strcpy(q->time, ti); break;
?? ??? ??? ?case 7:printf("請輸入新修改的房間號\n"); scanf("%d", &nu); j = 1; q->numder = nu; break;
?? ??? ??? ?case 8:printf("請輸入新修改的房間類型\n"); scanf("%s", roo); j = 1; strcpy(q->room, roo); break;
?? ??? ??? ?case 9:printf("請輸入新修改的房間單價\n"); scanf("%d", &pr); j = 1; q->price = pr; q->cope = (q->price)*(q->day); q->debt = q->cope - q->payment; break;
?? ??? ??? ?case 10:printf("請輸入新修改的入住天數(shù)\n"); scanf("%d", &da); j = 1; q->day = da; q->cope = q->price*q->day; q->debt = q->cope - q->payment; break;
?? ??? ??? ?case 11:menu3(p); break;
?? ??? ??? ?default:printf("請輸入合法量!\n"); break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?q = q->next;
?? ?}
?? ?if (j == 1)
?? ?{
?? ??? ?printf("修改成功!\n");
?? ?}
?? ?if (j == 0)
?? ?{
?? ??? ?printf("修改失敗\n");
?? ?}
?? ?printf("按回車鍵返回\n");
?? ?getchar();
?? ?getchar();
?? ?menu3(p);
}

6)刪除

void Remove(LinkList *p)
{
?? ?struct hotel *n = p->next;
?? ?struct hotel *h = p->next->next;
?? ?int flag = 0;
?? ?char acc[20];
?? ?system("cls");
?? ?printf("請輸入要刪除的賬戶:");
?? ?scanf("%s", acc);
?? ?while (h != NULL)
?? ?{
?? ??? ?if (strcmp(h->account, acc) == 0)
?? ??? ?{
?? ??? ??? ?n->next = h->next;
?? ??? ??? ?flag = 1;
?? ??? ??? ?free(h); break;
?? ??? ?}
?? ??? ?n = h;
?? ??? ?h = h->next;
?? ?}
?? ?if (flag == 1)
?? ?{
?? ??? ?printf("刪除成功!\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?if (flag == 0)
?? ?{
?? ??? ?printf("刪除失??!\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?getchar();
?? ?getchar();
?? ?menu2(p);
}

7)結(jié)賬

void Seller(LinkList *p)
{
?? ?struct hotel *q = p->next;
?? ?char man[5];
?? ?int nu, i;
?? ?int flag = 0;
?? ?system("cls");
?? ?printf("請輸入該客戶房間號:");
?? ?scanf("%d", &nu);
?? ?while (q != NULL)
?? ?{
?? ??? ?if ((q->numder == nu)&&strcmp(q->manage,"NO")==0)
?? ??? ?{
?? ??? ??? ?flag = 1;
?? ??? ??? ?printf("客戶:%s 身份證號:%s 房間號:%d 房間單價:%d 入住天數(shù):%d 實付:%d ?再付:%d ?共計%d元\n", q->name, q->ID, q->numder, q->price, q->day, q->payment, q->debt, q->cope);
?? ??? ??? ?printf("再付%d\n", q->debt);
?? ??? ??? ?printf("1.確定結(jié)賬\n2.返回\n");
?? ??? ??? ?scanf("%d", &i);
?? ??? ??? ?switch (i)
?? ??? ??? ?{
?? ??? ??? ?case 1:q->debt = 0; q->payment = q->cope; strcpy(q->manage, "YES"); break;
?? ??? ??? ?case 2:menu3(p); break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?q = q->next;
?? ?}
?? ?if (flag == 0)
?? ?{
?? ??? ?printf("\t無該客戶信息\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?else
?? ?{
?? ??? ?printf("結(jié)賬成功\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?getchar();
?? ?getchar();
?? ?menu3(p);
}

8)客房查詢

void Inquire(LinkList *p)
{
?? ?struct hotel *q = p->next;
?? ?int nu;
?? ?char na[20];
?? ?int a;
?? ?int flag = 0;
?? ?system("cls");
?? ?printf("1.按照姓名查詢;\n2.按照房間號查詢;\n");
?? ?scanf("%d", &a);
?? ?getchar();
?? ?if (a == 1)
?? ?{
?? ??? ?printf("請輸入姓名:");
?? ??? ?scanf("%s", na);
?? ??? ?while (q != NULL)
?? ??? ?{
?? ??? ??? ?if (strcmp(q->name, na) == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?flag = 1;
?? ??? ??? ??? ?printf("姓名:%s 性別:%s 年齡:%d 身份證號:%s 入住時間:%s 聯(lián)系電話:%s", q->name, q->sex, q->age, q->ID, q->time, q->phone);
?? ??? ??? ??? ?printf("房間類型:%s 房間號:%d 房間單價:%d 入住天數(shù):%d 總計:%d ? 實付:%d 再付:%d ?是否結(jié)賬:%s\n", q->room, q->numder, q->price, q->day, q->cope, q->payment, q->debt, q->manage);
?? ??? ??? ?}
?? ??? ??? ?q = q->next;
?? ??? ?}
?? ?}
?? ?if (a == 2)
?? ?{
?? ??? ?printf("請輸入房間號:");
?? ??? ?scanf("%d", &nu);
?? ??? ?while (q != NULL)
?? ??? ?{
?? ??? ??? ?if (q->numder == nu)
?? ??? ??? ?{
?? ??? ??? ??? ?flag = 1;
?? ??? ??? ??? ?printf("姓名:%s 性別:%s 年齡:%d 身份證號:%s 入住時間:%s 聯(lián)系電話:%s", q->name, q->sex, q->age, q->ID, q->time, q->phone);
?? ??? ??? ??? ?printf("房間類型:%s 房間號:%d 房間單價:%d 入住天數(shù):%d 總計:%d ?實付:%d 再付:%d ?是否結(jié)賬:%s\n", q->room, q->numder, q->price, q->day, q->cope, q->payment, q->debt, q->manage);
?? ??? ??? ?}
?? ??? ??? ?q = q->next;
?? ??? ?}
?? ?}
?? ?if (flag == 0)
?? ?{
?? ??? ?printf("\t無該客戶信息\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?if (flag == 1)
?? ?{
?? ??? ?printf("\t查詢結(jié)束\n");
?? ??? ?printf("\t請按回車鍵返回菜單\n");
?? ?}
?? ?getchar();
?? ?getchar();
?? ?menu3(p);
}

9)某日客房統(tǒng)計

void statistics1(LinkList *p)
{
?? ?struct hotel *q = p->next;
?? ?int m = 0, i = 0;
?? ?float a = 0, b = 0, c = 0,k=0;
?? ?char tim[20];
?? ?system("cls");
?? ?printf("請輸入統(tǒng)計時間:\n");
?? ?scanf("%s", tim);
?? ?while (q != NULL)
?? ?{
?? ??? ?if (strcmp(q->time, tim) == 0)
?? ??? ?{
?? ??? ??? ?a = a + 1;
?? ??? ??? ?if (m == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("%s結(jié)賬房間有\(zhòng)n", tim);
?? ??? ??? ??? ?m = m + 1;
?? ??? ??? ?}
?? ??? ??? ?if (strcmp(q->manage, "YES") == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("%d\n", q->numder);
?? ??? ??? ??? ?k= k+1;
?? ??? ??? ??? ?b = b + 1;
?? ??? ??? ?}
?? ??? ??? ?if (b == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("無\n");
?? ??? ??? ??? ?b = b + 1;
?? ??? ??? ?}
?? ??? ??? ?if (i == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("%s入住房間有\(zhòng)n", tim);
?? ??? ??? ??? ?i = i + 1;
?? ??? ??? ?}
?? ??? ??? ?if (strcmp(q->manage, "NO") == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("%d\n", q->numder);
?? ??? ??? ??? ?c = c + 1;
?? ??? ??? ?}
?? ??? ??? ?if (c == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("無入住\n");
?? ??? ??? ?}
?? ??? ?}
?? ??? ?q = q->next;
?? ?}
?? ?if (a != 0)
?? ?{
?? ??? ?printf("此日結(jié)賬率:百分之%0.0f %\n", (k / a) * 100);
?? ??? ?printf("此日入住率:百分之%0.0f %\n\n", (c / a) * 100);
?? ?}
?? ?if (a == 0)

?? ?{
?? ??? ?printf("\t暫時無客戶信息\n");
?? ?}
?? ?printf("\t請按回車鍵返回菜單\n");
?? ?getchar();
?? ?getchar();
?? ?menu3(p);
}

10)客房統(tǒng)計

void statistics3(LinkList *p)
{
?? ?struct hotel *q = p->next->next;
?? ?struct hotel *n = p->next;
?? ?float m = p->next->age;
?? ?int i, j = 0, k, c = 1;
?? ?float a = 0, b = 0;
?? ?system("cls");
?? ?printf("空置房間有:\n");
?? ?for (i = 1; i <= m; i++)
?? ?{
?? ??? ?j = 0;
?? ??? ?q = p->next;
?? ??? ?while (q != NULL)
?? ??? ?{
?? ??? ??? ?if (i == q->numder&&strcmp(q->manage, "NO") == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?c++;
?? ??? ??? ??? ?j = 1;
?? ??? ??? ?}
?? ??? ??? ?q = q->next;
?? ??? ?}
?? ??? ?if (j == 0)
?? ??? ?{
?? ??? ??? ?printf("%d ?", i);
?? ??? ??? ?c++;
?? ??? ?}
?? ??? ?a++;
?? ?}
?? ?q = p->next;
?? ?printf("\n");
?? ?printf("暫住房間有:\n");
?? ?while (q != NULL)
?? ?{
?? ??? ?if (strcmp(q->manage, "NO") == 0)
?? ??? ?{
?? ??? ??? ?printf("%d ? ", q->numder);
?? ??? ??? ?b++;
?? ??? ??? ?k = 1;
?? ??? ?}
?? ??? ?q = q->next;
?? ?}
?? ?if (k = 0)
?? ?{
?? ??? ?printf("暫無入?。n");
?? ?}
?? ?printf("\n");
?? ?printf("當(dāng)前空房率:百分之%0.0f\n", ((m - b) / m) * 100);
?? ?printf("當(dāng)前住房率:百分之%0.0f\n", (b / m) * 100);
?? ?printf("按回車鍵返回主菜單!\n");
?? ?getchar();
?? ?getchar();
?? ?menu3(p);
}

11)服務(wù)員統(tǒng)計

void statistics2(LinkList *p)
{
?? ?struct hotel *q = p->next;
?? ?int c = 0, i = 0;
?? ?system("cls");
?? ?while (q != NULL)
?? ?{
?? ??? ?if (i == 0)
?? ??? ?{
?? ??? ??? ?printf("賬號 ? 密碼\n");
?? ??? ??? ?i = 2;
?? ??? ?}
?? ??? ?if (q->might2 == 2)
?? ??? ?{
?? ??? ??? ?printf("%s ?%s\n", q->account, q->possword);
?? ??? ??? ?c = c + 1;
?? ??? ?}
?? ??? ?q = q->next;
?? ?}
?? ?if (c == 0)
?? ?{
?? ??? ?printf("暫無服務(wù)員信息\n");
?? ?}
?? ?printf("\t請按回車鍵返回菜單\n");
?? ?getchar();
?? ?getchar();
?? ?menu2(p);
}

12)設(shè)置房間數(shù)量

void set(LinkList *p)
{
?? ?struct hotel *q = p->next;
?? ?system("cls");
?? ?printf("當(dāng)前房間數(shù)量為:%d\n", q->age);
?? ?printf("請輸入房間數(shù)量:\n");
?? ?scanf("%d", &(q->age));
?? ?printf("設(shè)置成功!\n");
?? ?printf("按回車鍵返回菜單!\n");
?? ?getchar();
?? ?getchar();
?? ?menu2(p);
}

13)客房打印

void statistics(LinkList *p)
{
?? ?struct hotel *q = p->next;
?? ?system("cls");
?? ?if (q == NULL)
?? ?{
?? ??? ?printf("\t暫時無客戶信息\n");
?? ?}
?? ?else
?? ?{
?? ??? ?printf("姓名 ? ?性別 年齡 身份證號 ? ? ? ? ? 入住時間 ? ? ? ? ?聯(lián)系電話 ? ? 房間類型 房間號 房間單價 入住天數(shù) 共計 實付 再付 ?是否結(jié)賬 \n");
?? ??? ?while (q != NULL)
?? ??? ?{
?? ??? ??? ?if (q->might3 == 3)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("%s %s %d %s %s %s %s %d %d %d %d %d %d %s \n", q->name, q->sex, q->age, q->ID, q->time, q->phone, q->room, q->numder, q->price, q->day, q->cope, q->payment, q->debt, q->manage);
?? ??? ??? ?}
?? ??? ??? ?q = q->next;
?? ??? ?}
?? ?}
?? ?printf("\t請按回車鍵返回菜單\n");
?? ?getchar();
?? ?getchar();
?? ?menu3(p);
}

14)讀入磁盤文件

void saveHotelFile(LinkList *L)
{
?? ?FILE *fp;
?? ?LinkList *p;
?? ?p = L->next;
?? ?fp = fopen("hotel.txt", "w");
?? ?if (fp == NULL)
?? ?{
?? ??? ?printf("無法打開此文件\n");
?? ??? ?exit(0);
?? ?}
?? ?while (p)
?? ?{
?? ??? ?fprintf(fp, "%d %d %d %s %s %s %s %d %s %s %s %s %d %d %d %d %d %d %s \n", p->might1, p->might2, p->might3, p->account, p->possword, p->name, p->sex, p->age, p->ID, p->time, p->phone, p->room, p->numder, p->price, p->day, p->cope, p->payment, p->debt, p->manage);
?? ??? ?p = p->next;
?? ?}
?? ?fclose(fp);
}

15)開辟節(jié)點

void ListInsert(LinkList *L, LinkList *n)
{
?? ?LinkList *q = L;
?? ?n->next = NULL;
?? ?while (q->next != NULL)
?? ?{
?? ??? ?q = q->next;
?? ?}
?? ?q->next = n;
}

16)向鏈表讀取

void readHotelput(LinkList* L)
{
?? ?FILE* fp;
?? ?LinkList* n;
?? ?LinkList* m;
?? ?char ch;
?? ?char acc[20], po[20], na[20], se[5], I[20], ti[20], Ph[20], roo[15], man[5], a[20], b[20];
?? ?int mi1, mi2, mi3, ag, nu, pr, da, co, s, pa, de;
?? ?fp = fopen("hotel.txt", "r");
?? ?if (fp == NULL)
?? ?{
?? ??? ?fp = fopen("hotel.txt", "w");
?? ?}
?? ?else
?? ?{
?? ??? ?if (fgetc(fp) == -1)
?? ??? ?{
?? ??? ??? ?printf("此程序為首次使用,請自定義賬號和密碼\n");
?? ??? ??? ?printf("賬號:\n");
?? ??? ??? ?scanf("%s", a);
?? ??? ??? ?getchar();
?? ??? ??? ?printf("密碼:\n");
?? ??? ??? ?scanf("%s", b);
?? ??? ??? ?getchar();
?? ??? ??? ?m = (LinkList*)malloc(sizeof(LinkList));
?? ??? ??? ?strcpy(m->account, a);//初始賬戶
?? ??? ??? ?strcpy(m->possword, b);//初始密碼
?? ??? ??? ?strcpy(m->name, "0");
?? ??? ??? ?strcpy(m->sex, "0");
?? ??? ??? ?strcpy(m->ID, "0");
?? ??? ??? ?strcpy(m->room, "0");
?? ??? ??? ?strcpy(m->manage, "0");
?? ??? ??? ?strcpy(m->time, "0");
?? ??? ??? ?strcpy(m->phone, "0");
?? ??? ??? ?m->might1 = 1;
?? ??? ??? ?m->might2 = 0;
?? ??? ??? ?m->might3 = 0;
?? ??? ??? ?m->age = 0;
?? ??? ??? ?m->numder = 0;
?? ??? ??? ?m->price = 0;
?? ??? ??? ?m->day = 0;
?? ??? ??? ?m->debt = 0;
?? ??? ??? ?m->payment = 0;
?? ??? ??? ?m->cope = 0;
?? ??? ??? ?m->next = NULL;
?? ??? ??? ?L->next = m;
?? ??? ?}
?? ??? ?if (fgetc(fp) != -1)
?? ??? ?{
?? ??? ??? ?fseek(fp, -2L, 1);
?? ??? ?}
?? ??? ?while (!feof(fp))
?? ??? ?{
?? ??? ??? ?fscanf(fp, "%d %d %d %s %s %s %s %d %s %s %s %s %d %d %d %d %d %d %s ", &mi1, &mi2, &mi3, acc, po, na, se, &ag, I, ti, Ph, roo, &nu, &pr, &da, &co, &pa, &de, man);
?? ??? ??? ?n = (LinkList*)malloc(sizeof(LinkList));
?? ??? ??? ?strcpy(n->account, acc);
?? ??? ??? ?strcpy(n->possword, po);
?? ??? ??? ?strcpy(n->name, na);
?? ??? ??? ?strcpy(n->sex, se);
?? ??? ??? ?strcpy(n->ID, I);
?? ??? ??? ?strcpy(n->time, ti);
?? ??? ??? ?strcpy(n->phone, Ph);
?? ??? ??? ?strcpy(n->room, roo);
?? ??? ??? ?strcpy(n->manage, man);
?? ??? ??? ?n->might1 = mi1;
?? ??? ??? ?n->might2 = mi2;
?? ??? ??? ?n->might3 = mi3;
?? ??? ??? ?n->age = ag;
?? ??? ??? ?n->numder = nu;
?? ??? ??? ?n->price = pr;
?? ??? ??? ?n->day = da;
?? ??? ??? ?n->debt = de;
?? ??? ??? ?n->payment = pa;
?? ??? ??? ?n->cope = co;
?? ??? ??? ?ListInsert(L, n);
?? ??? ??? ?/*n=n->next;*/
?? ??? ?}
?? ?}
?? ?fclose(fp);
}

17)判斷是否為服務(wù)員

void menu33(struct hotel *p)
{
?? ?int i = 0;
?? ?struct hotel *h = p->next->next;
?? ?char a[20], b[20];
?? ?system("cls");
?? ?printf("請輸入賬戶:");
?? ?scanf("%s", a);
?? ?getchar();
?? ?printf("請輸入密碼:");
?? ?scanf("%s", b);
?? ?getchar();
?? ?while (h != NULL)
?? ?{
?? ??? ?if ((strcmp(h->account, a) == 0) && (strcmp(h->possword, b) == 0) && h->might2 == 2)
?? ??? ?{
?? ??? ??? ?i = 1;
?? ??? ??? ?menu3(p); break;
?? ??? ?}
?? ??? ?h = h->next;
?? ?}
?? ?if (i == 0)
?? ?{
?? ??? ?Sleep(1500);
?? ??? ?printf("密碼或賬號錯誤!\n");
?? ??? ?menu1(p);
?? ?}
}

18)頁面3

void menu3(struct hotel *p)
{
?? ?int i;
?? ?system("cls");
?? ?while (1)
?? ?{
?? ??? ?printf("\t--------------------------\n"); Sleep(50);
?? ??? ?printf("\t **歡迎登陸酒店管理系統(tǒng)** \n"); Sleep(50);
?? ??? ?printf("\t| 1.登記入住 ? ? ? ? ? ? |\n"); Sleep(50);
?? ??? ?printf("\t| 2.結(jié)賬 ? ? ? ? ? ? ? ? |\n"); Sleep(50);
?? ??? ?printf("\t| 3.修改客戶信息 ? ? ? ? |\n"); Sleep(50);
?? ??? ?printf("\t| 4.查詢客房信息 ? ? ? ? |\n"); Sleep(50);
?? ??? ?printf("\t| 5.某日客房信息統(tǒng)計 ? ? |\n"); Sleep(50);
?? ??? ?printf("\t| 6.客房統(tǒng)計 ? ? ? ? ? ? |\n"); Sleep(50);
?? ??? ?printf("\t| 7.客房信息打印 ? ? ? ? |\n"); Sleep(50);
?? ??? ?printf("\t| 8.返回上一層 ? ? ? ? ? |\n"); Sleep(50);
?? ??? ?printf("\t| 9.退出(保存) ? ? ? ? |\n"); Sleep(50);
?? ??? ?printf("\t--------------------------\n");
?? ??? ?printf("\t請選擇您要進(jìn)行的操作:\n");
?? ??? ?scanf("%d", &i);
?? ??? ?switch (i)
?? ??? ?{
?? ??? ?case 1:ADD(p); break;
?? ??? ?case 2:Seller(p); break;
?? ??? ?case 3:amend2(p); break;
?? ??? ?case 4:Inquire(p); break;
?? ??? ?case 5:statistics1(p); break;
?? ??? ?case 6:statistics3(p); break;
?? ??? ?case 7:statistics(p); break;
?? ??? ?case 8:menu1(p); break;
?? ??? ?case 9:saveHotelFile(p); exit(0);
?? ??? ?default:printf("\t輸入不合法量\n"); Sleep(1500); system("cls");
?? ??? ?}
?? ?}
}

19)判斷是否為管理員

void menu22(struct hotel *p)
{
?? ?struct hotel *h = p->next;
?? ?char a[20], b[20];
?? ?int i = 0;
?? ?system("cls");
?? ?printf("請輸入賬戶:");
?? ?scanf("%s", a);
?? ?getchar();
?? ?printf("請輸入密碼:");
?? ?scanf("%s", b);
?? ?getchar();
?? ?while (h != NULL)
?? ?{
?? ??? ?if ((strcmp(h->account, a) == 0) && (strcmp(h->possword, b) == 0) && h->might1 == 1)
?? ??? ?{
?? ??? ??? ?i = 1;
?? ??? ??? ?menu2(p); break;
?? ??? ?}
?? ??? ?h = h->next;
?? ?}
?? ?if (i == 0)
?? ?{
?? ??? ?Sleep(1500);
?? ??? ?printf("密碼或賬號錯誤!\n");
?? ??? ?menu1(p);
?? ?}
}

20)頁面2

void menu2(struct hotel *p)
{
?? ?int c;
?? ?system("cls");
?? ?while (1)
?? ?{
?? ??? ?printf("\t---------------------------\n"); Sleep(50);
?? ??? ?printf("\t **請選擇您要進(jìn)行的操作** ?\n"); Sleep(50);
?? ??? ?printf("\t|?? ?1.添加服務(wù)員 ? ? ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t|?? ?2.修改賬戶或密碼 ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t|?? ?3.刪除服務(wù)員 ? ? ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t|?? ?4.統(tǒng)計服務(wù)員信息 ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t|?? ?5.返回上一層 ? ? ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t|?? ?6.設(shè)置房間數(shù)量 ? ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t|?? ?7.退出(保存) ? ? ? ? ?|\n");
?? ??? ?printf("\t---------------------------\n");
?? ??? ?printf("\t請選擇您要進(jìn)行的操作:\n");
?? ??? ?scanf("%d", &c);
?? ??? ?switch (c)
?? ??? ?{
?? ??? ?case 1:ADD1(p); break;
?? ??? ?case 2:amend(p); break;
?? ??? ?case 3:Remove(p); break;
?? ??? ?case 4:statistics2(p); break;
?? ??? ?case 5:menu1(p); break;
?? ??? ?case 6:set(p); break;
?? ??? ?case 7:saveHotelFile(p); exit(0);
?? ??? ?default:printf("請輸入合法量!\n"); Sleep(1500); system("cls");
?? ??? ?}
?? ?}
}

21)頁面1

void menu1(struct hotel *p)
{
?? ?int a;
?? ?system("cls");
?? ?while (1)
?? ?{
?? ??? ?printf("\t_________________________\n"); Sleep(50);
?? ??? ?printf("\t| ?歡迎進(jìn)入酒店管理系統(tǒng) |\n"); Sleep(50);
?? ??? ?printf("\t| ? **請選擇您的身份** ?|\n"); Sleep(50);
?? ??? ?printf("\t| ?1.管理員 ? ? ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t| ?2.服務(wù)員 ? ? ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t| ?3.退出 ? ? ? ? ? ? ?|\n"); Sleep(50);
?? ??? ?printf("\t_________________________\n\n");
?? ??? ?printf("\t請選擇您要進(jìn)行的操作:\n");
?? ??? ?scanf("%d", &a);
?? ??? ?switch (a)
?? ??? ?{
?? ??? ?case 1:menu22(p); break;
?? ??? ?case 2:menu33(p); break;
?? ??? ?case 3:saveHotelFile(p); exit(0);
?? ??? ?default:printf("請輸入合法量!\n"); Sleep(1000); menu1(p);
?? ??? ?}
?? ?}
}

22)主函數(shù)

int main()
{
?? ?LinkList *p;
?? ?p = (struct hotel *)malloc(sizeof(struct hotel));
?? ?p->next = NULL;
?? ?readHotelput(p);
?? ?menu1(p);
?? ?/*saveHotelFile(p);*/
?? ?system("pause");
?? ?return 0;
}

稍微改了一下,管理員初始賬號和密碼可以自定義,有了管理員的密碼和賬號之后才可以添加服務(wù)員哦。
這個代碼使用傳首地址的方法,也可以通過設(shè)置靜態(tài)指針存首尾地址,這樣會更簡單。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言中調(diào)用匯編語言詳解

    C語言中調(diào)用匯編語言詳解

    這篇文章主要介紹了C語言中調(diào)用匯編語言,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • 舉例講解C語言對歸并排序算法的基礎(chǔ)使用

    舉例講解C語言對歸并排序算法的基礎(chǔ)使用

    這篇文章主要介紹了C語言對歸并排序算法的使用,歸并排序算法的平均事件復(fù)雜度為(n\log n),需要的朋友可以參考下
    2016-05-05
  • C語言函數(shù)指針與回調(diào)函數(shù)的實現(xiàn)

    C語言函數(shù)指針與回調(diào)函數(shù)的實現(xiàn)

    本文主要介紹了C語言函數(shù)指針與回調(diào)函數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • C語言變長數(shù)組 struct中char data[0]的用法詳解

    C語言變長數(shù)組 struct中char data[0]的用法詳解

    下面小編就為大家?guī)硪黄狢語言變長數(shù)組 struct中char data[0]的用法詳解。小編覺得挺不錯的現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • c/c++?Error:?redefinition?of?'xxx'的問題及解決方法

    c/c++?Error:?redefinition?of?'xxx'的問題及解決方法

    兩個類/文件同時引用定義ReplyInfo的頭文件,會造成頭文件中定義重復(fù)定義,本文給大家分享c/c++?Error:?redefinition?of?‘xxx’?的問題及解決方法,感興趣的朋友一起看看吧
    2023-08-08
  • Matlab實現(xiàn)同步子圖視角的方法詳解

    Matlab實現(xiàn)同步子圖視角的方法詳解

    這篇文章主要和大家分享三個可以Matlab中更簡便實現(xiàn)同步子圖視角的技巧,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下
    2022-06-06
  • C++中指針的數(shù)據(jù)類型和運算相關(guān)知識小結(jié)

    C++中指針的數(shù)據(jù)類型和運算相關(guān)知識小結(jié)

    這篇文章主要介紹了C++中指針的數(shù)據(jù)類型和運算相關(guān)知識小結(jié),是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C語言動態(tài)內(nèi)存規(guī)劃詳解

    C語言動態(tài)內(nèi)存規(guī)劃詳解

    這篇文章主要介紹了C語言動態(tài)內(nèi)存的規(guī)劃,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • C語言驅(qū)動開發(fā)內(nèi)核特征碼掃描PE代碼段

    C語言驅(qū)動開發(fā)內(nèi)核特征碼掃描PE代碼段

    這篇文章主要為大家介紹了C語言驅(qū)動開發(fā)內(nèi)核特征碼掃描PE代碼段,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • C語言中深度優(yōu)先搜索(DFS)算法的示例詳解

    C語言中深度優(yōu)先搜索(DFS)算法的示例詳解

    這篇文章主要通過兩個簡單的示例為大家詳細(xì)介紹一下C語言中深度優(yōu)先搜索(DFS)算法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02

最新評論