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

 更新时间:2022年03月17日 09:45:06   作者:苏尧木子  
这篇文章主要为大家详细介绍了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”,进入“客户信息显示界面”。在此界面可按客户的性别查询客户的基本信息,此功能可以将所有客户信息显示在输出界面上,工作人员可直观观察。

六.源代码

#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"); 
} 

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

相关文章

  • VC++ 字符串String MD5计算小工具 VS2008工程

    VC++ 字符串String MD5计算小工具 VS2008工程

    基于字符串加密的MD5算法,VS2008 VC++,多字节编译工程。主要代码如下,实现了ANSI字符串加密与Unicode字符串加密,需要的朋友可以参考下
    2017-07-07
  • c++实现的常见缓存算法和LRU

    c++实现的常见缓存算法和LRU

    LRU缓存算法也叫LRU页面置换算法,是一种经典常用的页面置换算法,下面这篇文章主要介绍了c++实现的常见缓存算法和LRU,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • C++函数对象详解附带实例

    C++函数对象详解附带实例

    这篇文章主要介绍了C++函数对象详解附带实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • c++代码实现tea加密算法的实例详解

    c++代码实现tea加密算法的实例详解

    这篇文章主要介绍了c++代码实现tea加密算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • C语言预处理器使用方法讲解

    C语言预处理器使用方法讲解

    C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把C预处理器(C Preprocessor)简写为CPP
    2022-12-12
  • C++数据精度问题的解决方案(对浮点数保存指定位小数)

    C++数据精度问题的解决方案(对浮点数保存指定位小数)

    对浮点数保存指定位小数,怎么解决这个问题呢?如果有小伙伴对C++数据精度问题的解决方案感兴趣的朋友一起看看吧
    2017-08-08
  • C++实现主机字节序和网络字节序转换示例

    C++实现主机字节序和网络字节序转换示例

    这篇文章主要为大家介绍了C++实现主机字节序和网络字节序转换示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • C/C++恶意代码盘点之文件自动删除

    C/C++恶意代码盘点之文件自动删除

    恶意代码的分类包括计算机病毒、蠕虫、木马等,有些技术经常用到,有的也是必然用到。今天我们就分享一下文件自动删除,感兴趣的可以了解一下
    2022-09-09
  • C++程序的五大内存分区实例详解

    C++程序的五大内存分区实例详解

    C++内存区域,一般可分为栈内存区、堆内存区、全局/静态内存区、文字常量内存区及程序代码区5大分区,本文就带大家深刻的理解这5大内存分区,感兴趣的可以了解一下
    2021-10-10
  • C++构造函数一些常见的坑

    C++构造函数一些常见的坑

    这篇文章主要给大家分享的是C++构造函数一些常见的坑,文章围绕C++构造函数的相关资料展开关于C++构造函数坑的内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-01-01

最新评论