学校食堂订餐系统是一项较为简单的系统,适合大一新生作为期末课程设计
#include <stdio.h>
void main_munu()
{
char a[6][20]={"","点餐","添菜","减菜","结算"};
int i;
for(i=1;i<5;i++)
{
printf("\t%d.%s\n",i,a[i]);
}
printf("\t0.点餐结束\n");
}
void menu_caipin(){
char a[10][20]={"香辣土豆丝 10","鱼香肉丝 18","木须肉 15","鱼 88",
"手撕圆白菜 12","麻婆豆腐 8","小鸡炖蘑菇 48","肘子 58","米饭 3","带鱼 25"};
printf("请具体选择菜品:\n");
for (int i = 0; i < 10; i ++) {
printf("\t\t%d.%s\n",i+1,a[i]);
}
printf("\t\t0.返回上层菜单\n");
}
int main(int agrc,const char *argv[])
{
printf("*******宁夏大学 *****\n");
printf("****** 欢迎您点餐 *********\n");
int M;
int n;
int k;
int m;
int x[10] = {0};
int price1[10] = {0};
int price[10] = {10,18,15,88,12,8,48,58,3,25};
int total = 0;
char name[10][20]={"香辣土豆丝 ","鱼香肉丝 ","木须肉 ","鱼 ","手撕圆白菜","麻婆豆腐 ","小鸡炖蘑菇","肘子 ","米饭 ","带鱼 "};
while (1) {
do {
main_munu();
scanf("%d",&M);
if(M==0)
break;
switch (M)
{
case 1:
{
menu_caipin();
while (1)
{
scanf("%d",&n);
if (n == 0)
{
break;}
price1[n-1] += price[n-1];
x [n-1] ++;
}
}if (n == 0)break;
case 2:
{ menu_caipin();
printf("请选择要添加的菜:>");
while(1)
{scanf("%d",&k);
if (k == 0) {
break;
}
price1[k-1] += price[k-1];
x [k-1] ++;
}
}
if(k == 0)break;
case 3:
{
printf("请选择要减少的菜:>");
menu_caipin();
while(1)
{
scanf("%d",&m);
if(m==0)
{
break;}
price1[m-1] -= price[m-1];
x [m-1] --;
}
}
if(m == 0)break;
case 4:
{
printf("菜名\t\t单价(元)\t数量\t总价格(元)\n----------------------------------\n");
for (int j = 0; j < 10; j++)
{
if (price1[j] != 0) {
printf("%s\t\t%3d\t\t%3d\t%3d\n",name[j],price[j],x[j],price1[j]);
total += price1[j];
}
}
printf("总价格:\t\t\t\t\t%3d\n",total);
printf("祝您用餐愉快,期待您的下次光临!\n");
break;
}
break;}
if(n == 0)
break;
}
while(n) ;}
return 0;
}
课程设计说明书:
C语言实现学生餐厅管理系统
一、选题的背景
1. 传统订餐方式存在的问题:在传统的食堂订餐中,学生或员工需要亲自到食堂排队选餐,这可能会浪费时间,尤其是在高峰期。此外,传统订餐方式也存在着沟通不畅、容易出现错误等问题。
2. 移动互联网的普及:随着移动互联网的普及,人们越来越习惯使用手机进行各种操作,包括订餐。因此,开发一款基于移动互联网的食堂订餐系统可以方便学生或员工随时随地进行订餐。
3. 提高食堂管理效率:食堂订餐系统可以实现自动化的订餐管理,包括菜品管理、订单管理、财务管理等,从而提高食堂的管理效率。
4. 满足个性化需求:通过食堂订餐系统,学生或员工可以根据自己的口味和需求选择菜品,还可以设置特殊要求,如不加辣椒、少放盐等,从而满足个性化需求。
基于以上背景,开发一款食堂订餐系统可以提高订餐的便利性、准确性和效率,同时也可以提高食堂的管理水平和服务质量。
二、设计思路
在设计学校食堂点菜管理系统时,我们需要考虑以下几个方面:
1. 功能需求分析:
- 订餐管理:包括添加、修改、删除和查询订餐信息。
- 菜品管理:包括添加、修改、删除和查询菜品信息。
- 用户管理:包括注册、登录、修改密码等功能。
- 订单管理:包括查看订单、取消订单等功能。
2. 数据库设计:
- 设计数据库表,包括用户表、菜品表、订餐表等。
- 考虑表之间的关系,如用户表和订餐表之间的一对多关系。
3. 系统架构设计:
- 采用客户端/服务器架构,客户端通过网络与服务器进行通信。
- 服务器负责处理客户端的请求,并将结果返回给客户端。
4. 界面设计:
- 设计用户友好的界面,包括登录界面、订餐界面、菜品展示界面等。
- 考虑界面的布局、颜色、字体等因素,以提高用户体验。
5. 系统测试:
- 进行单元测试、集成测试和系统测试,确保系统的稳定性和可靠性。
- 测试系统的功能、性能、安全性等方面
基于以上几个方面,我们可以开始进行学校食堂点菜管理系统的设计和实现。在设计和实现过程中,我们还需要不断地进行测试和调试,确保系统的稳定性和正确性。
三、程序模块及流程图
在设计学生管理系统的程序时可以根据设计思路设计如下几个模块:
1、主菜单模块:
2、菜品选择模块:
3、菜品结算模块:
其中,主循环中包括了对各个模块的处理。当用户输入命令时,系统会根据命令调用相应的功能模块进行处理,并将结果返回给用户。如果发生异常情况,异常处理模块会检测并处理异常,然后返回错误信息给用户。
四、程序清单
模块一:
#include <stdio.h>
void main_munu()
{
char a[6][20] = {"","点餐","添菜","减菜","结算"};
int i;
for (i = 1; i < 5; i++)
{
printf("\t%d.%s\n", i, a[i]);
}
printf("\t0.点餐结束\n");
}
void menu_caipin() {
char a[10][20] = {"宫保鸡丁 10", "酱爆鸭片 18", "木须肉 15", "沸腾鱼 88","手撕圆白菜 12", "麻婆豆腐 8", "小鸡炖蘑菇 48", "水晶肘子 58","米饭 3", "香酥带鱼 25"};//定义字符数组,存放菜名
printf("请具体选择菜品:\n");
for (int i = 0; i < 10; i++) {
printf("\t\t%d.%s\n", i + 1, a[i]);
}
printf("\t\t0.返回上层菜单\n");
}
int main(int argc, const char *argv[])
{
printf("*******宁夏大学餐店 *****\n");
printf("****** 欢迎您点餐 *********\n");
}
模块二:
while (1) {
do {
main_munu();
scanf("%d",&M);
if(M==0)
break;
switch (M)
{
case 1:
{
menu_caipin();
while (1)
{
scanf("%d",&n);
if (n == 0)
{
break;}
price1[n-1] += price[n-1];
x [n-1] ++;
}
}if (n == 0)break;
case 2:
{ menu_caipin();
printf("请选择要添加的菜:>");
while(1)
{scanf("%d",&k);
if (k == 0) {
break;
}
price1[k-1] += price[k-1];
x [k-1] ++;
}
}
if(k == 0)break;
case 3:
{
printf("请选择要减少的菜:>");
menu_caipin();
while(1)
{
scanf("%d",&m);
if(m==0)
{
break;}
price1[m-1] -= price[m-1];
x [m-1] --;
}
}
if(m == 0)break;
模块三:
case 4:
{
printf("菜名\t\t单价(元)\t数量\t总价格(元)\n-----------------------------------\n");
for (int j = 0; j < 10; j++)
{
if (price1[j] != 0) {
printf("%s\t\t%3d\t\t%3d\t%3d\n",name[j],price[j],x[j],price1[j]);
total += price1[j];
}
}
printf("总价格:\t\t\t\t\t%3d\n",total);
printf("祝您用餐愉快,期待您的下次光临!\n");
break;
}
break;}
if(n == 0)
break;
}
while(n) ;}
return 0;
}
五、设计结果说明
模块一:
提供的代码定义了两个函数 main_munu() 和 menu_caipin() 。其中, main_munu() 函数用于打印点餐菜单的选项,而 menu_caipin() 函数用于打印具体菜品的菜单选项。
在main()函数中,首先打印了欢迎信息,然后调用 main_munu() 函数打印点餐菜单。具体实现如图1所示。
图1 模块一 主菜单模块
模块二:
这个程序实现了基本的学校食堂点餐系统的菜品选择功能,通过while循环语句来实现对点菜系统的管理。具体实现如图2所示。
图2 模块二 菜品选择模块
模块三:
这个程序代码是一个 switch语句的循环,它会根据n的值执行不同的操作而进行菜品结算程序的运行。具体实现如图3所示。
图3 模块三 菜品结算模块
六、总结
通过本次课程设计,我成功构建了一个学校食堂订餐系统,实现了用户界面设计、菜品展示、订餐、订单管理等功能。在系统开发过程中,我遇到了一些技术挑战,通过团队协作和学习,成功解决了这些问题。未来,我可以进一步优化系统的性能和用户体验,增加更多便捷的功能,为学校食堂提供更好的服务。
以下是我对本次课程设计的总结:
在本次课程设计中,我主要负责开发一个学校食堂订餐管理系统,包括点菜
、添菜、减菜、结算、结束点菜等功能。我采用了C语言作为开发语言。在开发过程中,我遇到了一些困难,例如如何设计用户界面、如何实现文件的读写等。但是通过查阅资料和参考其他程序,我逐渐解决了这些问题。
因此,我学到了很多东西。我学到了如何设计和实现一个实际的系统。在开发过程中,我需要考虑到系统的可扩展性、可维护性和可测试性等因素。我还学到了如何使用伪代码来描述程序流程和函数功能,这有助于我在编写代码之前更好地理解程序逻辑。
此外,我认为本次课程设计的难点在于如何设计和实现一个稳定而可靠的系统。在开发过程中,我们需要考虑到很多细节问题,例如如何保证数据的完整性和一致性、如何处理异常情况等。这些问题需要我不断地思考和解决,以确保系统的稳定性和可靠性。因此,我认为在未来的学习和实践中,我需要更加注重细节问题,以提高我的系统设计和实现能力。
总之,本次课程设计是一次非常有意义的经历。通过这个项目,我不仅提高了自己的编程能力和系统设计能力,还学到了很多实用的技能和知识。我相信这些经验和知识将对我未来的学习和工作产生积极的影响。同时,我也意识到自己在某些方面还需要进一步提高,例如在用户界面设计和异常处理等方面。我会继续努力学习和实践,以更好地掌握这些技能。