亲宝软件园·资讯

展开

C语言宾馆管理系统

苏尧木子 人气:0

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

一、需求分析

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

二、总体设计

三、详细设计

本系统中主要实现客户信息的建立,查找,删除等方面功能。由主函数生成系统主菜单,为进入各个界面提供通道。主要为 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"); 
} 

加载全部内容

相关教程
猜你喜欢
用户评论