东北大学软件学院C语言程序设计大作业

餐厅管理系统

这一份是自己做的,里面应该有超级多的bug来着,等我闲了改一下

//100张桌子
//1-4人  1-50号桌
//5-8人  51-70号
//9-15人 71-80号
//16-∞人 81-100号#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <windows.h>
#define NOT 99//数组
char *array_name[10] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};                //菜名
double array_price[10] = {12.00, 23.00, 34.00, 45.00, 56.00, 67.00, 78.00, 89.00, 90.00}; //菜价
int array_rank[10] = {0};                                                                 //排名
unsigned int pin = 123456;                                                                //初始化密码
//变量
int num_of_consumers;       //顾客数量
int array_table[NOT] = {0}; //餐桌状态
FILE *fmenu;                //菜单文件
FILE *faccount;             //账单文件//结构体
typedef struct Dish
{int Dish_ID;      //菜的编号char Dish_NP[20]; //菜名 价格
} DISH;typedef struct Table
{/* data */int table_ID;           //桌子编号int dish_ID[100] = {0}; //点的菜struct Table *nextPtr;DISH array_dish[15]; //菜的信息的结构体数组
} TABLE;//Funcation
void Fun_interface();                         //用户界面
int Fun_switch(int choose1);                  //选项
int Fun_search();                             //匹配合适桌号
TABLE *CreateOne(int table_ID2);              //点菜
void Fun_menu(FILE *fmenu1);                  //菜单文件
void Fun_account(TABLE *head, int table_ID2); //结账
double Fun_compare(double pay1, double sum1); //比较实际支付金额与应付金额
int Fun_pin();                                //密码
void Fun_interface2();                        //账目管理界面
int Fun_switch2(int choose2);                 //在账目管理界面选择操作
void Fun_rank();                              //排名TABLE *head = (TABLE*)malloc(sizeof(TABLE));
TABLE *p = NULL;
TABLE *t = (TABLE*)malloc(sizeof(TABLE));int main(void)
{int choose;Fun_interface();scanf("%d", &choose);//链接首尾head->nextPtr = t;t->nextPtr = NULL;Fun_switch(choose);
}int Fun_switch(int choose1)
{int table_ID1;int flag; //检测密码是否正确,Y 1;N 0switch (choose1){case 1:table_ID1 = Fun_search();Fun_menu(fmenu);*CreateOne(table_ID1);puts("Finished.Choose Again.");scanf("%d", &choose1);Fun_switch(choose1);break;case 2:puts("Please intput your tableID:");scanf("%d", &table_ID1);Fun_account(p, table_ID1);puts("Finished.Choose Again.");scanf("%d", &choose1);Fun_switch(choose1);break;case 3:Fun_interface2();Fun_switch2(choose1);puts("Finished.Choose Again.");scanf("%d", &choose1);Fun_switch(choose1);/*        flag = Fun_pin();while (flag == 0){puts("Wrong.Again?");puts("Enter 0 for Yes,else for No.");scanf("%d", &yn);if (!yn){flag = Fun_pin();}else{break; //Problem!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}}*/break;case 4:Fun_rank();puts("Finished.Choose Again.");scanf("%d", &choose1);Fun_switch(choose1);break;default:break;}
}void Fun_rank()
{int array_rank1[10] = {0}; //排序int i, n;int temp, temp1;
//排序存在问题problem!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!for (i = 9; i < 0; i--){for (n = 0,i = 9; n < i - 1; n++){if (array_rank1[i] < array_rank[n]){array_rank1[i] = array_rank[n];}}}puts("Stars Rank:\n");for (n = 0; n < 10; n++){printf("%s:", array_name[n]);for (i = 0; i < array_rank[n]; i++){printf("* ");temp = i;}if (temp < array_rank[temp1]){printf("\n");}}puts("Rank 4:");for (i = 0; i < 4; i++){printf("No.%d:%s\n", i + 1, array_name[array_rank1[9 - i]]);}
}/*
void Fun_rank()
{int array_rank1[10];for (int i = 0; i < 10; i++){for (int n = 0; n < i - 1; n++){if (array_rank1[i] < array_rank[n]){array_rank1[i] = array_rank[n];}}}puts("******************");
for (int i = 0; i < 4; i++)
{
}
}
*/int Fun_switch2(int choose2)
{int flag;int old_pin;puts("Please choose.");scanf("%d", &choose2);switch (choose2){case 1:puts("Please enter your PIN:");if (flag = Fun_pin()){puts("Please enter your new PIN.");puts("Between 100000 and 999999.");old_pin = pin;scanf("%d", &pin);if (pin >= 100000 && pin <= 999999){puts("Succeed.");puts("Please choose again.");scanf("%d", &choose2);Fun_switch2(choose2);}else{pin = old_pin;printf("Error.");puts("Please choose again.");scanf("%d", &choose2);Fun_switch2(choose2);}}break;case 2:puts("Please enter your PIN:");if (flag = Fun_pin()){faccount = fopen("Account.txt", "r");while (!feof(faccount)){int ch;if ((ch = fgetc(faccount)) != EOF)putchar(ch);}fclose(faccount);}case 3:Fun_interface();scanf("%d", &choose2);Fun_switch(choose2);default:break;}
}int Fun_again()
{int yn; //是否重新输入puts("Wrong Pin.Again?");puts("0 for Yes.Else for No.");scanf("%d", &yn);if (!yn){return Fun_pin(); //调用函数输入密码}
}int Fun_pin()
{int your_pin;scanf("%d", &your_pin);if (your_pin == pin){return 1;}else{return Fun_again(); //调用函数确定是否再次输入}
}void Fun_account(TABLE *pPtr, int table_ID2)
{int i = 0;int n;double sum = 0; //总价,后面会改变赋值double acc_sum; //输入到账本中的总数double pay;     //支付int flag = 0;//结账时间/*time_t timep;struct tm *time;time (&timep);time = gmtime(&timep);*/while (pPtr != NULL){if (pPtr->table_ID == table_ID2){puts("You order is:");printf("%7s%7s%7s\n", "NUM", "NAME", "PRICE");for (i = 0; pPtr->dish_ID[i] != 0; i++){printf("%7d%7s%7lf\n", pPtr->dish_ID[i], array_name[pPtr->dish_ID[i] - 1], array_price[pPtr->dish_ID[i] - 1]);sum += array_price[pPtr->dish_ID[i] - 1];}n = i + 1;break;}/*{for (int i = 0; pPtr->dish_ID[i] != 0; i++){printf("%d%s", pPtr->dish_ID[i], pPtr->array_dish->Dish_NP[i]);}}*/else{pPtr = pPtr->nextPtr;}}if (array_table[table_ID2 - 1] != 0){printf("You have ordered %d dishes.\n", n);printf("You need to pay %.2lf yuan.\n", sum);acc_sum = sum;puts("You payed: ");scanf("%lf", &pay);flag = Fun_compare(pay, sum);while (flag != 0){scanf("%lf", &pay);flag = Fun_compare(pay, flag);}}else{puts("No Account.");}SYSTEMTIME sys;GetLocalTime(&sys);faccount = fopen("Account.txt", "a+");fprintf(faccount, "%7s %7s %7s\n", "NUM", "NAME", "PRICE");for (i = 0; pPtr->dish_ID[i] != 0; i++){fprintf(faccount, "%7d %7s %7lf\n", pPtr->dish_ID[i], array_name[pPtr->dish_ID[i] - 1], array_price[pPtr->dish_ID[i] - 1]);}fprintf(faccount, "%7s %7s %7s %7s %7s %7s\n", "MOUTH", "DAY", "HOURS", "MIN", "SECONDS", "YEAR");fprintf(faccount, "%4d %02d %02d %02d %02d %02d %03d %1d\n", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds, sys.wDayOfWeek);fprintf(faccount, "%s\n", "Finial_Payment");fprintf(faccount, "%.2lf\n", acc_sum);fclose(faccount);array_table[table_ID2 - 1] = 0;free(pPtr);pPtr = NULL;puts("Save Susseed.");
}double Fun_compare(double pay1, double sum1)
{int flag1 = 0;if (pay1 < sum1){printf("Please pay another %.2lf yuan.\n", sum1 - pay1);flag1 = 1;return sum1 - pay1;}else if (pay1 > sum1){printf("This is your %.2lf yuan.\n", pay1 - sum1);return flag1;}else{printf("Welcome your next coming.\n");return flag1;}
}TABLE *CreateOne(int table_ID2)
{int i = -1;int line = 0;char find_str[2];find_str[0] = '*';char file_str[256];p = (TABLE *)malloc(sizeof(TABLE));p->table_ID = table_ID2;find_str[1] = table_ID2;fmenu = fopen("menu1.txt", "r");do{++i;puts("Please choose dishes.Enter 0 to end:");scanf("%d", &p->dish_ID[i]);array_rank[p->dish_ID[i] - 1]++;/*while (fgets(find_str, sizeof(find_str), fmenu)){ line++;if (strstr(file_str, find_str)){       head->array_dish->Dish_NP[i] = *file_str;fclose(fmenu);}   }   */} while (p->dish_ID[i] != 0);fclose(fmenu);p->nextPtr = head->nextPtr;head->nextPtr = p;
}int Fun_search()
{int i;int n;int table_ID2;puts("Please inter the number of consumers:");scanf("%d", &num_of_consumers);if (num_of_consumers >= 1 && num_of_consumers <= 4){i = 0;n = 4;}else if (num_of_consumers >= 5 && num_of_consumers <= 8){i = 4;n = 8;}else if (num_of_consumers >= 9 && num_of_consumers <= 15){i = 8;n = 15;}else if (num_of_consumers >= 16){i = 15;n = 100;}for (; i < n; i++){if (array_table[i] == 0){array_table[i] = 1;table_ID2 = i + 1;printf("You can eat at table *%d", table_ID2);break;}}return table_ID2;
}void Fun_menu(FILE *fmenu1)
{fmenu1 = (fopen("menu1.txt", "r"));int num;char name[100];double price;printf("%7s%7s%7s\n", "NUM", "NAME", "PRICE");fscanf(fmenu1, "%d%29s%lf", &num, name, &price);while (!feof(fmenu1)){printf("%7d%7s%7.2lf\n", num, name, price);fscanf(fmenu1, "%d%29s%lf", &num, name, &price);}fclose(fmenu1);
}
void Fun_interface()
{puts("**********************");puts("Carteen Service System");puts("**********************");puts("1.Table");puts("2.Settle Accuouts");puts("3.Account Managment");puts("4.Rank");puts("5.Quit");puts("Please Choose:");
}void Fun_interface2()
{puts("**********************");puts("Account Manage System");puts("**********************");puts("1.Modify PIN");puts("2.Check Account");puts("3.Return Service System");
}

东北大学软件学院C语言程序设计大作业:餐厅管理系统相关推荐

  1. c语言程序设计创新大作业,C语言程序设计大作业报告.pdf

    C语言程序设计大作业报告 课程设计(大作业)报告 课程名称: C 语言程序设计 设计题目: 实验设备管理系统 院 系: 信息技术学院 班 级: 2015级物联网工程 1班 设 计 者: 何盛 高陶 王 ...

  2. 数据结构与c语言程序设计 考研,2017年东北大学软件学院858C语言程序设计与数据结构考研题库...

    一.填空题 1. 设有一个空找,栈顶指针为1000H (十六进制),现有输入序列为1,2,3, 4, 5,经过PUSH ,PUSH , POP , PUSH , POP ,PUSH ,PUSH 之后, ...

  3. C语言程序设计大作业--飞翔的小鸟(含注释)

    一.效果展示 二.实验代码 #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<t ...

  4. C语言总结项目和入门大作业——信息管理系统(多文件版)

    文章目录 八. C语言入门大作业--信息管理系统(多文件版) 一. 功能模块的划分: 二. 多文件的编写 三. 基本函数的实现(重点) 四.文件操作函数 五.函数的辅助函数 六.多文件编程和联系 七. ...

  5. 吉大20春学期C语言程序设计作业二,c语言程序设计 教学课件 ppt 作者 吉大17秋学期《C语言程序设计》作业一...

    代做奥鹏各大学作业 离线作业毕业论文 QQ客服: QQ:3577624279 aopencls 吉大17秋学期<C语言程序设计>作业一 试卷总分:100 得分:0 一. 单选题 (共 10 ...

  6. 程序设计大作业:教务管理系统(C语言)

    写在前头: 这个大作业是大一写的,所以比较低能,全篇只涉及C语言相关知识,且有些内容我自己看了都嫌弃.嘿嘿. 我整理了资源,可以免费下载:程序设计大作业:教务管理系统(C语言)-C文档类资源-CSDN ...

  7. C++大作业(面向对象程序设计大作业)——销售公司员工管理

    面向对象程序设计大作业 目录 面向对象程序设计大作业 1.问题重述 2.编程思想 2.1数据结构 2.2功能确定 3.类的设计 3.1UML图标准 3.2本题类图 4.运行结果 1.输出所有信息 2. ...

  8. C语言期末大作业-学生成绩管理系统(完整源码+设计报告)

    C语言-学生成绩管理系统 一.学生成绩管理系统源码(完整) 二.程序设计报告 1.课程设计目的 2.课程设计任务与要求: 4.课程设计成果(运行截图) 5.课程设计心得 一.学生成绩管理系统源码(完整 ...

  9. 兰州大学C语言程序设计课程作业,【兰州大学|兰州大学C语言程序设计课程作业( 五 )】语言程序设计|课程|作业-傻大方...

    『易坊知识库摘要_兰州大学|兰州大学C语言程序设计课程作业( 五 )』34.用户未作答标准答案exp04. 以下叙述中正确的是 在程序的一行上可以出现多个有效的预处理命令行使用带参的宏时,参数的类型应 ...

最新文章

  1. mysql 用户 多主机_MySQL单主机多实例部署
  2. 2018年阿里妈妈搜索广告转化预测
  3. 分子排列不同会导致_生物信息遇上Deep learning(7): ReLeaSE--强化学习做药物分子设计...
  4. uni.$emit和uni.$on用法;uni-app微信小程序页面通讯;微信小程序页面通讯
  5. 深入理解Docker Volume(一)
  6. 级数求和(洛谷-P1035)
  7. 文本分析-预处理:Python文本分析工具NLTK
  8. DOS7.1安装与学习
  9. Matlab中绘制折线图(附matlab代码)
  10. SEO网络营销培训机构都是如何给新手SEO培训的,新手SEO看完就知道套路,以后就不会上当受骗
  11. IOS版Telegram启用中文界面的方法
  12. androidP 对反射的限制之黑名单机制
  13. SHELL编程之三剑客
  14. 【报错】fatal: unable to access
  15. PixiJS学习(8)预加载
  16. 浪潮信息人工智能巨量模型“源1.0”,切实促进AI行业高质量发展
  17. 南京大学《软件分析》1--Introduction
  18. office365字体选项卡里的字体发虚不清晰
  19. 如何将footer标签固定在底部_让footer固定在页面底部
  20. SuperWeChatPC开源开放开发者SDK-打造你的超级微信

热门文章

  1. 电子邮件群发软件,电子邮箱注册哪个好?
  2. AB DeviceNet设备网故障总表
  3. 数据库系统概念笔记——第三章:SQL
  4. Linux写文件断电保存,linux 写文件操作,异常掉电后,文件损坏丢失(0kb)
  5. jap_spring
  6. 输入一个整数,判断是奇数还是偶数?
  7. 粉红色情人节表白浪漫婚礼相册PPT模板
  8. 皮一下之笑出腹肌的台词
  9. 红米手机是android版本,红米Note的手机系统是什么?能升级安卓4.3吗?
  10. Mac重启后环境变量配置不生效的问题