服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言实现宾馆管理系统课程设计

C语言实现宾馆管理系统课程设计

2022-10-21 14:04苏尧木子 C/C++

这篇文章主要为大家详细介绍了C语言实现宾馆管理系统课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现宾馆管理系统的具体代码,供大家参考,具体内容如下

课程设计题目: 宾馆管理系统

一、需求分析

近年来,科技进步不仅促进了全球旅游企业的快速增长,而且指导了旅游者消费观念的 更新,其中信息与通信技术的发展对酒店等企业有着深远的影响,传统的管理方式已不 能满足具有信息量大,查询量大,保存期长,要求不间断运行等特点的宾馆管理需求, 重视信息技术的发展成为我国酒店业的共识。为增强竞争能力,提高管理水平,先进的 宾馆管理系统已成为必然。宾馆管理系统可以及时了解客户信息与需求,实现宾馆管理 信息化,通过宾馆管理系统的实施可以逐步提高宾馆的现代化建设,提升员工工作效率, 良好的管理系统越来越建立服务部门的良好形象,有利于业务规范化,标准化,有利于 提高管理水平,有利于创造更高的经济效益和社会效益,使管理过程实现现代化。

二、总体设计

C语言实现宾馆管理系统课程设计

三、详细设计

本系统中主要实现客户信息的建立,查找,删除等方面功能。由主函数生成系统主菜单,为进入各个界面提供通道。主要为 SWITCH 开关语句进入不同的界面,输入“1”进入宾馆信息建立界面,输入“2”进入信息添加界面,输入“3”进入客户姓名查询界面,输入“4”进入客户性别查询界面,输入“5”进入房号查询界面。输入“6”进入入住时间查询界面,输入“7”进入客户信息修改界面,输入“8”进入客户信息删除界面,输入“9”进入客户信息删除界面,输入“0”退出系统。程序由 C 语言结合数据结构中建立一个线性链表的知识编程

四、调试与测试

五、用户手册

1.在主菜单输入“1”进入“宾馆信息建立界面”。此界面可建立客户的基本信息:姓名,性别,证件号,入住时间,天数,房号,押金,离开时间等,并返回主菜单。

2.宾馆信息添加功能

在主菜单输入“2”进入“宾馆信息添加界面”。此界面可以添加客户个数和客户基本信息:姓名,性别,证件号,入住时间,天数,房号,押金,离开时间等,并返回到菜单进行下一步。

3. 客户姓名查询功能

在主菜单输入“3”进入“客户姓名查询界面”。在此界面首先根据提示输入 1 表示按照姓名查找,然后输入客户姓名确定进行查询客户的基本信息并显示出来。此功能可以方便的查询到某一姓名的客户
的客房信息。

4.客户性别查询功能

在主菜单输入“4”,进入“客户性别查询界面”。在此界面可按客户的性别查询某一性别的所有客户的基本信息,此功能可以查询同一性别的客人信息,并比较不同性别客流量,以制定计划增加客流量。

5.宾馆房号查询功能

在主菜单输入“5”,进入“宾馆房号查询界面”。在此界面可按已知的房号查询客户的基本信息,此功能可以确定某房间的住入情况,若无人则显示没有该房间信息,若有人住入可根据之前建立或添加的客户信息显示出住在该房间的客人登记信息。

6.入住时间查询功能

在主菜单输入“6”,进入“入住时间查询界面”。在此界面可通过大概的入住时间查询客户登记的基本信息,此功能可以查询在同一天住入宾馆的客

7.客户信息修改功能

在主菜单输入“7”,进入“客户信息修改界面”。在此界面先通过先前的客户姓名查找到该客户信息,再根据要修改的客户姓名,修改客户信息。此功能可以方便的对需要增加住宿时间的客户进行维
护。

8.客户信息删除功能

在主菜单输入“8”,进入“客户信息删除界面”。在此界面可按客户的姓名删除客户的基本信息,使用 del()函数,输入客户姓名,确定删除按 1,此功能可以将保存时间过长现在已不需要保留
的客户的信息删除。

9.客户信息显示功能

在主菜单输入“9”,进入“客户信息显示界面”。在此界面可按客户的性别查询客户的基本信息,此功能可以将所有客户信息显示在输出界面上,工作人员可直观观察。

六.源代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
#include"stdio.h"
#include"stdlib.h" 
#include"string.h"
typedef struct
{
    char name[50];  
    char sex[50]; 
    char ID[50];
    char come[50];  
    char day[50];
    char number[50]; 
    char type[50];
    char price[50];  
    char yushou[50];
    char yajin[50];  
    char leave[50];
}datatype;
typedef struct node
{
    datatype data;  
    struct node *next; 
}listnode; 
typedef listnode *linklist;
linklist head;
listnode *p;
void Output_allInfo(linklist head);//输出所有客户信息  
void Delete_info(linklist head);//客户信息的删除 
void Info_Modify(linklist head);//按客户姓名的信息修改 
listnode *Name_Search(linklist head); //按姓名查找宾馆信息 
listnode *Sex_Search(linklist head);//按性别查找宾馆信息  
listnode *Roomnum_Search(linklist head);//按房间号查找宾馆信息
listnode *Cometime_Search(linklist head) ;//按入住时间查找 
char Display_Menu();//菜单输出函数 
listnode* Add(linklist head,int b);//增加客户信息
linklist Create(int a);//宾馆客户信息的建立  
void SaveInfoToFile(linklist head);//保存顾客信息到文件中
listnode *ReadInfoFromFile();//信息从文件读出
int main()//主函数 
    int i,a;
    for(;;) 
    
        switch(Display_Menu())  
        {
        case 1: printf("**2.宾馆信息的建立**\n");           
            printf("输入你想输入的数目:");         
            scanf("%d",&i);       head=Create(i); break;  
        case 2: printf("**1.从文件读入客户信息!**\n");        
            ReadInfoFromFile();             break;      
        case 3: printf("**3.宾馆信息的添加**\n");          
            printf("输入你想添加的人数:");       
            scanf("%d",&a);       
            Add(head,a); break
        case 4:  printf("**4.客户姓名的查询**\n");        
            p=Name_Search(head);             if(p!=NULL)       
            {       
                printf("姓名\t 性别\t 证件\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");     
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID,      
                    p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );      
                printf("\n");  
            
            else printf("该用户不存在!");break;       
        case 5: printf("**5.客户性别的查询**\n");    
            p=Sex_Search(head);          
            if(p!=NULL)         
            {
                printf("姓名\t 性别\t 证件\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");   
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID,    
                    p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );      
                printf("\n");   
            }
            else
                printf("该用户不存在!");break;  
        case 6: 
            printf("**6.客户房号的查询**\n");     
            p=Roomnum_Search(head);     
            if(p!=NULL)  
            {
                printf("姓名\t 性别\t 证件\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");   
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID, 
                    p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );   
                printf("\n");     
            }
            else printf("该房间信息不存在!");break
        case 7:
            printf("**7.客户性别的查询**\n");    
            p=Cometime_Search(head);
            if(p!=NULL)   
            {
                printf("姓名\t 性别\t 证件\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");    
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID,
                    p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );    
                printf("\n");  
            }    
            else printf("该房间信息不存在!");break;
        case 8: printf("**8.宾馆信息的修改**\n");         
            Info_Modify(head);break
        case 9: printf("**9.宾馆信息的删除**\n"); 
            Delete_info(head);break;   
        case 10: printf("**10.宾馆信息的输出**\n");    
            Output_allInfo(head); break;  
        case 11:printf("11.保存顾客信息");      
            SaveInfoToFile(head); break;
            //保存顾客信息到文件中   
        case 0:printf("**0.退出**\n");     
            exit(0);   
        default: break
        
    }
    return 0; 
}
//菜单函数 
char Display_Menu() 
{  
    int  i;  
    FILE *fp;
    char ch; 
    printf("\n\n\n\n\n\n");
    printf("                         欢迎使用宾馆信息管理系统!") ;   
    if((fp=fopen("F:\\Cyy Report\\menu.txt","r"))==NULL) 
    {
        printf("菜单文件打开失败!");  
        exit(0);  
    
    ch=fgetc(fp);
    while(ch!=EOF) 
    {
        putchar(ch); 
        ch=fgetc(fp);
    }
    printf("\n");
    for(;;)  
    
        scanf("%d",&i); 
        printf("\n");  
        if(i<0||i>11) 
            printf("选择错误,重新选择:\n");   
        else break;
    }   
    return i;
}
listnode *ReadInfoFromFile() 
    FILE *fp;  
    int b; 
    fp=fopen("F:\\Cyy Report\\customer.txt","r");  
    listnode *p=NULL,*q=NULL,*head=NULL;
    p=(listnode *)malloc(sizeof(listnode));   
    head->next=p;     
    b=1;
    if(!fp)  
    {
        printf("文件打开失败!");  
        exit(0); 
    }
    else printf("文件打开成功");  
    while(!feof(fp)) 
    {  
        /*fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->next->data.name,p->next->data.se x,p->next->data.ID,          p->next->data.come,p->next->data.day,p->next->data.number,p->next->data.price,p->next->data. yajin,p->next->data.leave );*/
        q=(listnode *)malloc(sizeof(listnode));   
        fscanf(fp,"%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,   
            p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave); 
        p->next=q;
        q=p ;
        b++;
    }
    head=Add(head,b); 
    printf("\n"); 
    fclose(fp);  
    return head; 
}
//宾馆客户信息的建立 
linklist Create(int a)
{
    linklist head=(listnode *)malloc(sizeof(listnode));
    listnode *p,*q;  
    q=head;
    while(a--) 
    {
        p=(listnode *)malloc(sizeof(listnode)); 
        printf("姓名\t 性别\t 证件\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n "); 
        scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,   
            p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave); 
        q->next=p;   
        q=p; 
    
    q->next=NULL; 
    return head; 
}
listnode* Add(linklist head,int b)//增加顾客信息 
{
    listnode *m,*n,*p;
    m=head;
    n=m->next;  
    while(n->next!=NULL)
    {
        m=n;  
        n=n->next; 
    }
    while(b--) 
    {
        p=(listnode *)malloc(sizeof(listnode));   
        printf("姓名\t 性别\t 证件\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n "); 
        printf("***************************\n"); 
        scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,        
            p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );  
        n->next=p;
        n=p; 
    }
    n->next=NULL; 
    return head; 
}
//按姓名查找宾馆信息 
listnode *Name_Search(linklist head) 
{
    listnode *p;  
    char name[10];
    int i;  
    printf("按 1 表示姓名查找:");  
    p=head->next ; 
    scanf("%d",&i);  
    if(i==1) 
    {
        printf("输入要查询的姓名:");  
        scanf("%s",&name);
        while(p&&strcmp(p->data.name,name)>0)   
            p=p->next;   
        if(p==NULL||strcmp(p->data.name,name)<0)
            p=NULL;
    }
    else
        printf("输入错误!");  
    return p;
}
//按性别查找宾馆信息  
listnode *Sex_Search(linklist head)
{
    listnode *p; 
    char sex[10];
    int i;  
    printf("按 1 表示性别查找:");  
    scanf("%d",&i);
    p=head->next ;  
    if(i==1)  
    {
        printf("输入要查询的性别:");  
        scanf("%s",&sex); 
        while(p&&strcmp(p->data.sex,sex)>0)
            p=p->next; 
        if(p==NULL||strcmp(p->data.sex,sex)<0) 
            p=NULL;  
    }
    return p; 
}
//按房间号查找宾馆信息  
listnode *Roomnum_Search(linklist head)
{
    listnode *p;
    char number[10]; 
    int i;
    printf("按 1 表示房间号查找:");  
    p=head->next ;
    scanf("%d",&i);
    if(i==1)  
    {
        printf("输入要查询的房间号:");   
        scanf("%s",&number);
        while(p&&strcmp(p->data.number,number)>0)  
            p=p->next; 
        if(p==NULL||strcmp(p->data.number,number)<0)  
            p=NULL; 
    }
    return p; 
}
//按入住时间查找 
listnode *Cometime_Search(linklist head) 
{
    listnode *p; 
    char come[10]; 
    int i;  
    printf("按 1 表示性别查找:");  
    p=head->next ;
    scanf("%d",&i); 
    if(i==1) 
    {
        printf("输入要查询的入住时间:");  
        scanf("%s",&come); 
        while(p&&strcmp(p->data.come,come)>0) 
            p=p->next;  
        if(p==NULL||strcmp(p->data.come,come)<0)
            p=NULL; 
    }
    return p; 
}
//按客户姓名的信息修改  
void Info_Modify(linklist head) 
{  
    listnode *p;
    p=Name_Search(head);
    if(p==NULL)
    
        printf("宾馆信息不存在!\n");  
    }  
    else
    {
        printf("姓名\t 性别\t 证件\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n ");
        printf("***************************\n");   
        scanf("%s%s%s%s%s%s%s%s%s",p->data.name,p->data.sex,p->data.ID,       
            p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );  printf("宾馆信息已修改!");    
    }
}
//客户信息的删除
void Delete_info(linklist head) 
{
    int i;  
    listnode *p,*q; 
    p=Name_Search(head);  
    if(p==NULL) 
    {
        printf("信息不存在!\n");   
        return;  
    }  
    else
    {
        printf("按 1 删除:");   
        scanf("%d",&i);
        if(i==1) 
        {
            q=head;
            while(q!=NULL&&q->next!=p)  
                q=p->next;
            q->next=p->next; 
            free(p); 
            printf("信息已删除!");    
        }
    }
}
//宾馆信息的输出 
void Output_allInfo(linklist head) 
{
    listnode *p; 
    p=head;  
    printf("姓名\t 性别\t 证件\t 入住\t 天数\t 房号\t 价格\t 押金\t 离开\n "); 
    while(p->next!=NULL)  { 
        
        printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->next->data.name,p->next->data.sex,p-> next->data.ID,      
            p->next->data.come,p->next->data.day,p->next->data.number,p->next->data.price,p->next->data. yajin,p->next->data.leave ); 
        p=p->next ;
    }
}
void SaveInfoToFile(linklist head) 
    FILE *fp;
    listnode *p; 
    p=head->next; 
    if(p==NULL) 
    
        printf("现在没有顾客信息,请先输入顾客信息!\n\n"); 
        return
    }
    fp=fopen("F:\\Cyy Report\\customer.txt","w");  
    if(!fp) 
    
        printf("文件不存在!\n");
        return;
    }
    while(p)  
    {
        fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->data.name,p->data.sex,p->data.ID,      p->data.come,p->data.day,p->data.number,p->data.price,p->data.yajin,p->data.leave );     
        p=p->next; 
    }  
    fclose(fp);  
    printf("文件保存成功!\n"); 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_43192247/article/details/86693528

延伸 · 阅读

精彩推荐
  • C/C++深入理解C++的对象模型

    深入理解C++的对象模型

    本文在介绍C++使用的对象模型之前,先介绍了2种对象模型:简单对象模型(a simple object model)和表格驱动对象模型(a table-driven object model),这样介绍对后...

    单刀土豆9792021-04-13
  • C/C++C++ Primer Plus 第四章之C++ Primer Plus复合类型学习笔记

    C++ Primer Plus 第四章之C++ Primer Plus复合类型学习笔记

    数组(array)是一种数据格式,能够存储多个同类型的值。每个值都存储在一个独立的数组元素中,计算机在内存中依次存储数组的各个元素,今天给大家...

    Soler索莱尔HO10962021-12-03
  • C/C++VC中SDK与MFC的区别浅析

    VC中SDK与MFC的区别浅析

    这篇文章主要介绍了VC中SDK与MFC的区别浅析,需要的朋友可以参考下...

    C语言程序设计9462021-01-23
  • C/C++OpenSSL动态链接库源码安装教程

    OpenSSL动态链接库源码安装教程

    Openssl 是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能。这篇文章主要介绍了OpenSSL动态链接库源码安装,需要的朋...

    尘世中迷途小码农7982022-02-23
  • C/C++利用Matlab制作一款刮刮乐抽奖特效

    利用Matlab制作一款刮刮乐抽奖特效

    七夕节还不知道送啥,教你用MATLAB制作一款刮刮乐抽奖特效,让她的手气决定她的礼物。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下...

    slandarer7292022-10-10
  • C/C++C语言之从字符数组中删除特定的字符

    C语言之从字符数组中删除特定的字符

    本篇文章主要介绍了从字符数组中删除特定字符的实现方法,有需要的朋友可以参考下...

    -FIGHTING-4332021-03-03
  • C/C++记录一个C++在条件查询时遇到的问题(推荐)

    记录一个C++在条件查询时遇到的问题(推荐)

    这篇文章主要介绍了记录一个C++在条件查询时遇到的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参...

    小镇拾光6112021-10-20
  • C/C++C语言 pthread_create() 函数讲解

    C语言 pthread_create() 函数讲解

    这篇文章主要介绍了C语言 pthread_create() 函数讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    Ruigel14642021-12-14