C语言课设-电话订餐管理系统

一、设计需求

        某餐厅有大、中、小三种餐桌各5个,餐桌号分别为A1-A5,B1-B5,C1-C5,大餐桌可供8-10人用餐,中餐桌可供5-7人用餐,小餐桌可供1-4人用餐。电话订餐信息包括:订餐编号、订餐者姓名、订餐者电话、用餐时间、用餐人数、订餐是否成功,如下表所示。

订餐编号

订餐者姓名

订餐者电话

用餐时间

用餐人数

订餐是否成功

餐桌号

FPY201900001

张三

13012345678

12:00

5

B1

FPY201900002

李四

13212345678

12:10

8

A3

FPY201900003

王五

13312345678

12:20

2

/

FPY201900004

赵六

13412345678

12:30

3

C1

FPY201900005

陈七

13512345678

12:40

12

/

二、功能设计

        假定该餐厅每个餐桌只接待一桌顾客(即不考虑餐桌可以分批使用的情况)。订餐时,系统自动根据用餐人数分配大、中、小三种餐桌,餐桌号也是自动分配(即按从小到大的顺序分配),如果该类型的餐桌没有了,则订餐失败,如果人数大于10,也是订餐失败。

        给该餐厅设计一套电话订餐系统,并具有以下功能:

        1、输入功能:输入信息包括订餐编号、订餐者姓名、订餐者电话、用餐时间、用餐人数。(要求:① 至少输入10条订餐信息;② 可以在原有记录的基础上,添加新的记录;③ 要求订餐编号不能重复,输入过程中如果出现相同的订餐编号,应给出报错信号,并重新输入;④ 订餐编号、订餐者姓名、订餐者电话要求用字符数组或字符指针;输入基本订餐信息后,系统自动分配餐桌,并记录是否订餐成功)

        2、排序功能:对所有录入的订餐信息记录进行排序,并以表7的方式输出。(要求:至少提供三种排序方式,如按订餐编号排序、按订餐者姓名排序、按用餐时间等。)

        3、统计功能:对录入的订餐记录进行统计。(要求:自己设计统计表格的形式,但必须包括以下统计信息:订到大、中、小餐桌的桌数,订餐成功的桌数,某个时间段内的订餐次数等)。

        4、查询功能:查找满足一定条件的订餐记录信息,并以表8的方式输出查询结果。(要求:① 提供三种查询方式:按订餐编号查询、按订餐者姓名查询、按用餐时间是否在某个区间查询;② 如果满足条件的记录有多条,应全部列出;③ 如果没有满足条件的记录,应给出相应的提示。)

        5、 修改功能:输入订餐编号,若存在,则可以对其各项信息进行修改;如果该订餐信息不存在,必须有相应的提示。(要求:修改之前应再次确认是否修改。)

        6、 删除功能:输入订餐编号,若存在,删除其所有信息;否则,须有相应的提示。(要求:删除之前应再次确认是否删除。)

        7、退出系统:退出系统之前,要再次确认。

三、代码实现

1.结构体功能

struct information 
{                     
    char name[8];    
    int sum;
    char time[10];   
    char phone[20];     
    char number[20];     
    char table[2];  
    int T;    
	int P;         
}guest[MaxSize];

2.输入、排序、统计、查询、修改等功能函数

以输入Insert函数为例

void Insert(int *count)
{
    int i,j,bb;
    char num[20];
    if (A+B+C == MaxSize)
    {
        printf("空间已满!");
        return;
    }
    printf("请输入编号:");
    scanf("%s",num);
    for (i = 0; i < *count; i++)  /*查找符合条件的记录 */
		if (   strcmp(guest[i].number,num) == 0&&guest[i].P == 1)
        {
            printf("已经有相同的编号!!!");
            return;
        }
	strcpy(guest[i].number, num) ;	/*接收插入数据 */
    printf("请输入姓名:");
    scanf("%s", guest[i].name);
    printf("请输入人数:");
    scanf("%d", &guest[i].sum);
    if (guest[i].sum>10)
    {
    	printf("没有能够容纳这么多人的桌子!!\n");
    	return;
	}
    printf("请输入电话号码:");
    scanf("%s", &guest[i].phone);
    printf("请输入用餐时间:");
    scanf("%s", guest[i].time);
    (*count)++;
    guest[i].P=1;
    if (guest[i].sum <= 4)
        {
            C++;
            if (C <= 5)
            {
              guest[i].T = 1;//订餐成功 
              guest[i].table [0]= 'C';
			  guest[i].table[1] = 49;
			  for(j = 0;j < *count;j++)
			    if(guest[j].P == 1&&guest[j].table[0] == 'C')
				{
					if(j == i)   continue;
					else
					{
						if(guest[i].table[1] == guest[j].table[1])  guest[i].table[1]++;
						else  break;
					}		
				}
            }
            else
            {
				printf("小号餐桌不够!\n");
				C = 5;
                guest[i].T = 0;
                guest[i].table[0] = 47;//47的ASCII是\ 
                guest[i].table[1] = 0;
            }
        }
    else
        {
        if (guest[i].sum <= 7)
            {
                B++;
                if (B <= 5)
                {
                    guest[i].T = 1;
					guest[i].table[0] = 'B';
					guest[i].table[1] = 49;
                    for( j = 0;j < *count;j++)
						if(guest[j].P == 1&&guest[j].table[0] == 'B')
							{	if(j == i)  continue;
								else
								{
									if(guest[i].table[1] == guest[j].table[1])  guest[i].table[1]++;
									else  break;
								}
							}
                }
                else
                {
					printf("中号餐桌不够!\n");
					B = 5;
                    guest[i].T = 0;
					guest[i].P = 0;
                    guest[i].table[0] = 47;
                    guest[i].table[1] = 0;
                }
                
            }
        else
            {
            if (guest[i].sum <= 10)
                {
                A++;
                if (A <= 5)
                {
                	guest[i].T = 1;
                    guest[i].table[0] = 'A';
					guest[i].table[1] = 49;
					for( j = 0;j < *count;j++)
						if(guest[j].P == 1&&guest[j].table[0] == 'A')
							{	if(j == i)  continue;
								else
								{
								if(guest[i].table[1] == guest[j].table[1])  guest[i].table[1]++;
								else break;
								}
							}
                }
                else
                {
					printf("大号餐桌不够!\n");
					A = 5;
					guest[i].P = 0;
                    guest[i].T = 0;
                    guest[i].table[0] = 47;
                    guest[i].table[1] = 0;
                }
                }

            else
            {
				guest[i].P = 0;
                guest[i].T = 0;
                guest[i].table[0] = 47;
                guest[i].table[1] = 0;
            }
            }
        }
	if(guest[i].T == 1)
		  printf("订餐成功!\n");
	else 
		printf("订餐失败\n");
}

3.主函数main

int main()
{ 
    char pass[80],zh[100];
    int oi = 0;
    printf("用户名:");
	scanf("%s",&zh);
    while (1)
    {
        printf("请输入密码:");
        scanf("%s",&pass);
        oi++;
        if (strcmp(pass, "123456789") != 0)
            printf("密码错误,请再试一次\n");
        else break;
        if (oi == 3)exit(0);
    }
    if (oi >= 3)printf("请稍后再尝试\n");
    else printf("欢迎进入订餐信息管理系统。\n");

    int i;
    int count = 0;
    do {   
        printf("\n");
        printf("*******************************************************************\n");
        printf("**                         1---输入订单信息                      **\n");
        printf("**                         2---查询订单信息                      **\n");
        printf("**                         3---修改订单信息                      **\n");
        printf("**                         4---删除订单信息                      **\n");
        printf("**                         5---排序订单信息                      **\n");
        printf("**                         6---统计订单信息                      **\n");
        printf("**                         7---退出订餐系统                      **\n");
        printf("*******************************************************************\n");
        printf("\n");
        scanf("%d", &i); 
        switch (i)
        {
        case 1:Insert(&count);     break;
        case 2:Search(count);      break;
        case 3:Change(count);      break;
        case 4:Delete(&count);     break;
        case 5:Order(count);       break;
        case 6:Stasistic(count);   break;
        case 7:
		{
			char sure;
			printf("你是否退出系统(Y/N)\n");
			scanf("%c",&sure);
			if(sure=='Y')
			{
				printf("感谢使用本订餐系统,期待下次再会!");
				return 0;
			}
			else continue;
			system("cls");
		}
		break;    
        default:printf("错误选择!请重选");
        break;
        }
    } while (1);
    
    return 0;
}

4.其他代码详见附件

四、完整代码附件

  • 56
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值