餐饮管理系统(1)界面图+源代码

合集下载

餐饮管理程序(PB源代码)

餐饮管理程序(PB源代码)
3日志过滤缺省为本日日志4在后改管理的销售项目一览表中增加了排行top105增加了版本校验机制6增加了错误陷阱7增加了程序中颜色自定义8修改了挂帐单位可挂帐额度的计算错误9修改了xp窗体的拖动10限制了程序只能运行1次1)
餐饮管理程序(PB源代码)
drui12009-03-14上传
餐饮管理程序
1、在后台管理中增加了前台销售一览表。
2、完成了日志察看中的查找功能。
3、日志过滤(缺省为本日日志)
4、在后改管理的销售项目一览表中增加了排行TOP10
5、增加了版本校验机制
6、增加了错误陷阱
7、增加了程序中颜色自定义
8、修改了挂帐单位可挂帐额度的计算错误
9、修改了XP窗体的拖动
10、限制了程序只能运行1次
11、增加了运行库文件察看。
12、增加了操作日志中的系统提示

餐饮管理系统代码大全

餐饮管理系统代码大全

餐饮管理系统代码大全1餐饮管理系统代码1 using System;2using System.Collections.Generic;3using ponentModel;4using System.Data;5using System.Drawing;6using System.Text;7using System.Windows.Forms;8using System.Collections;9namespace 餐饮管理系统10...{11 public partial class frmManagement : Form12 ...{13 ArrayList RoomStatus = new ArrayList();14 ArrayList VipClass = new ArrayList();15 public frmManagement()16 ...{217 InitializeComponent();18 }1920 private void 房间类型BindingNavigatorSaveItem_Click(object sender, EventArgs e)21 ...{22 this.Validate();23 this.房间类型BindingSource.EndEdit();24 this.房间类型TableAdapter.Update(this.dieteticManagementDataSet.房间类型);25 }2627 private void frmManagement_Load(object sender, EventArgs e)28 ...{29 // TODO: 这行代码将数据加载到表”dieteticManagementDataSet.管理员”中。

您能够根据需要移动或移除它。

30 this.管理员TableAdapter.Fill(this.dieteticManagementDataSet.管理员);31 // TODO: 这行代码将数据加载到表”dieteticManagementDataSet.Vip”中。

原创java餐饮管理系统源码

原创java餐饮管理系统源码

原创Java餐饮管理系统源码引言餐饮行业在当今社会具有广泛的应用和发展前景。

为了优化餐饮业务流程,提高服务质量和效率,许多餐饮企业选择使用计算机餐饮管理系统进行日常运营管理。

本文将介绍一款原创的Java餐饮管理系统源码。

功能概述该餐饮管理系统源码包括以下主要功能:1.用户管理:支持注册新用户、登录、修改密码等功能。

不同用户角色拥有不同的权限,例如管理员可以管理菜单、员工、订单等,客户可以浏览菜单、下订单等。

2.菜单管理:管理员可以添加、编辑和删除菜单,包括菜名、价格、配料等信息。

菜单可以按分类进行组织,方便用户查找和选择。

3.订单管理:客户可以浏览菜单,并选择下单。

管理员可以查看和管理订单,包括确认订单、取消订单等操作。

订单信息包括菜品、数量、价格、配送地址等。

4.员工管理:管理员可以添加、编辑和删除员工信息,包括姓名、联系方式、职位等。

员工可以登录系统,查看个人信息,接收和处理订单。

5.数据统计:系统可以生成各类报表,统计菜品销售情况、订单量、销售额等。

这些数据能够帮助餐饮企业分析经营情况,制定运营策略。

技术选型该餐饮管理系统源码基于Java语言开发,并采用以下主要技术:•后端框架使用Spring Boot,简化配置和开发流程,提供高效的Web 应用程序开发框架。

•数据库采用MySQL,存储系统的用户、菜单、订单、员工等信息。

•前端页面使用HTML、CSS和JavaScript进行开发,实现用户界面和交互逻辑。

•数据交互采用RESTful API,前后端通过JSON格式进行数据传输。

系统架构该餐饮管理系统采用分层架构,分为前端、后端和数据库三层。

•前端层:主要负责用户界面的展示和交互逻辑。

用户通过浏览器访问系统,与后端进行交互。

•后端层:负责处理用户请求,进行业务逻辑处理和数据访问。

后端使用Spring Boot框架,提供RESTful API供前端调用。

•数据库层:负责存储系统的数据。

系统使用MySQL作为数据库,存储用户、菜单、订单、员工等信息。

餐厅管理点餐系统数据库-(1)

餐厅管理点餐系统数据库-(1)

餐厅管理点餐系统数据库-(1)餐厅点餐记账数据库设计专业:姓名:学号:目录1、大作业概述 (4)2.需求分析 (4)(1)行业现状 (4)(2)系统介绍 (4)(3)用户需求分析 (4)(4)数据字典 (5)3、概念结构设计 (6)4、逻辑结构设计 (9)5、物理结构设计 (10)6、视图 (18)7、应用设计 (19)8、总结 (21)9附表 (22)1、大作业概述(1)数据库作业要求:包括6个方面:需求分析,概念结构,逻辑设计,视图,应用设计,总结(2)自己独立完成,不可百度网上资料。

2.需求分析(1)行业现状我国今年来经济不断发展,人们物质生活水平逐步提高,人们对生活质量的要求也越来越高,享受真正自动化、人性化的服务成为了人们追求高质量生活的重要内容。

在大多数的餐饮场所点菜、查看菜谱等是人工完成的,速度慢,效率低,极易出错,造成人力物力的极大浪费。

然而随着我国市场经济的快速发展,酒店餐饮点菜系统成为酒店提升服务档次,提高办公效率,提高竞争力的关键因素之餐饮业要想跟上发展形势,餐馆点餐的信息化进程也要加快脚步。

(2)系统介绍餐饮点菜系统拥有方便、快捷、效率高、掌控能力强等特点,所以,本系统是针对餐饮行业的点菜而开发的一个系统。

开发本系统的总体任务是实现点菜、结帐、查询、统计、设置的功能,(3)用户需求分析本系统的总目标是为用户提供迅速、高效的服务,减免手工处理的繁琐与误差,及时、准确地反映餐厅的工作情况、经营情况,从而提高餐厅的服务质量,获得更好的经济效益。

其具体目标包括:1)快速完成顾客的点餐。

2)准确无误地记录顾客的每笔消费记录。

3)实时、快速、准确地提供最新餐单。

4)方便查询顾客消费情况。

(4)数据字典1)数据项⑵数据结构3、概念结构设计概念结构设计是将分析得到的用户需求抽象为概念模型的过程,即在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系的模型。

概念结构的主要特点是能真实、充分地反映现实世界,易于理解,易于更改,易于向关系、网状、层次等各种数据模型转换。

[餐饮管理]餐饮管理系统代码

[餐饮管理]餐饮管理系统代码

(餐饮管理)餐饮管理系统代码餐饮管理系统代码1usingSystem;2using.Generic;3using;4using;5using;6using;7using.Forms;8using;9namespace餐饮管理系统10...{11publicpartialclassfrmManagement:Form12...{13ArrayListRoomStatus=newArrayList();14ArrayListVipClass=newArrayList();15publicfrmManagement()16...{17InitializeComponent();18}1920privatevoid房间类型BindingNavigatorSaveItem_Click(objectsender,EventArgse)22();23this.房间类型();24this.房间类型(.房间类型);25}2627privatevoidfrmManagement_Load(objectsender,EventArgse)28...{29//TODO:这行代码将数据加载到表“dieteticManagementDataSet.管理员”中。

您可以根据需要移动或移除它。

30this.管理员(.管理员);31//TODO:这行代码将数据加载到表“”中。

您可以根据需要移动或移除它。

32.Fill(.Vip);3334//TODO:这行代码将数据加载到表“dieteticManagementDataSet.餐牌”中。

您可以根据需要移动或移除它。

35this.餐牌(.餐牌);36//TODO:这行代码将数据加载到表“dieteticManagementDataSet.食品类别”中。

您可以根据需要移动或移除它。

37this.食品类别(.食品类别);38//TODO:这行代码将数据加载到表“dieteticManagementDataSet.商品”中。

智慧餐系统源代码设计方案

智慧餐系统源代码设计方案

智慧餐系统源代码设计方案智慧餐系统是一种基于计算机技术和物联网技术的餐饮管理系统,旨在提高餐厅的运营效率和用户体验。

下面是一个智慧餐系统的源代码设计方案,包括系统架构、数据库设计、前端设计和后端设计。

1. 系统架构智慧餐系统的系统架构可以采用三层架构,即前端、后端和数据库三层。

- 前端层:前端层主要负责用户界面和用户交互,可以使用HTML、CSS和JavaScript等技术来实现。

- 后端层:后端层主要负责业务逻辑和数据处理,可以使用Java、Python等编程语言来实现,并使用框架如Spring MVC来简化开发。

- 数据库层:数据库层主要负责数据的存储和管理,可以使用关系型数据库如MySQL或非关系型数据库如MongoDB来实现。

2. 数据库设计智慧餐系统的数据库设计需要根据实际需求进行设计,一般包括以下几个表:- 用户表:用于存储用户的基本信息,包括用户ID、用户名、密码、手机号等。

- 菜品表:用于存储菜品的信息,包括菜品ID、菜名、价格、图片等。

- 订单表:用于存储订单的信息,包括订单ID、用户ID、菜品ID、下单时间、订单状态等。

3. 前端设计智慧餐系统的前端设计需要考虑用户交互和用户体验,可以采用响应式设计来适配不同的设备。

- 登录页面:用于用户登录,需要校验用户输入的用户名和密码。

- 菜单页面:用于展示菜品信息,可以根据用户的选择进行筛选和排序。

- 订单页面:用于展示用户订单的信息,包括订单状态和菜品详情。

- 结算页面:用于用户结算订单,可以选择支付方式和配送方式。

4. 后端设计智慧餐系统的后端设计需要实现业务逻辑和数据处理,可以采用面向对象的编程思想和设计模式。

- 用户管理:包括用户登录和注册功能,需要进行用户身份验证和密码加密。

- 菜品管理:包括菜品的增删改查功能,需要进行菜品信息的验证和管理。

- 订单管理:包括订单的生成和更新功能,需要对订单状态进行管理和更新。

5. 安全性设计智慧餐系统的安全性设计需要考虑用户数据的保护和系统的防护。

C语言实现餐饮点餐管理系统

C语言实现餐饮点餐管理系统

C语⾔实现餐饮点餐管理系统本⽂实例为⼤家分享了C语⾔实现餐饮点餐管理系统的具体代码,供⼤家参考,具体内容如下具体代码如下/*项⽬名称:南航餐饮管理系统组员:梁⽂新,刘青林,刘艺,施瑞⽂(组长)*///当注册⽤户名为:root,密码为:root的账号时,系统默认为初始管理员//头⽂件#include<stdio.h>#include<stdlib.h>#include<time.h>#include<conio.h>#include<windows.h>#include<string.h>//宏定义区#define M sizeof(struct User)//⽤户表的⼤⼩#define N sizeof(struct stapleFood)//主⾷表⼤⼩#define P sizeof(struct non_stapleFood)//副⾷表⼤⼩#define Q sizeof(struct Drink_beverage) //饮品表⼤⼩#define X sizeof(struct Table)//餐桌表⼤⼩#define Y sizeof(struct Form)//订单表⼤⼩//结构体struct User //⽤户表{char userName[10];//⽤户名char passWord[18];//密码int isVIP;//会员标记int isAdministrator;//管理员标记float money;//余额struct User *next;//指针域};typedef struct User user;typedef user* pUser;struct stapleFood //主⾷{char name[20];float price;struct stapleFood *next;};struct non_stapleFood //副⾷{char name[20];float price;struct non_stapleFood *next;};typedef struct non_stapleFood non_staple_food;typedef non_staple_food *pNon_stapleFood;struct Drink_beverage //饮品{char name[20];float price;struct Drink_beverage *next;};typedef struct Drink_beverage drinkBeverage;typedef drinkBeverage *pDrinkBeverage;struct Table //餐桌{int ID;//餐桌编号int People;//已坐⼈数int count;//可容纳⼈数char Username[10];//订餐⼈struct Table *next;};typedef struct Table table;typedef table *pTable;struct Form //订单{char name[20];float price;struct Form *next;};typedef struct Form orderForm;typedef orderForm *pOrder;//⾃定义函数区//⽤户客户端void Default();//欢迎界⾯void User_Login();//⽤户登录界⾯void Logon();//注册界⾯pUser readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址void save_User(pUser p1);//将⽤户信息保存到⽂件中void User_Menu();//⽤户菜单void User_Order();//点餐void Order_StapleFood();//主⾷void Order_nonStapleFood();//副⾷void Order_DrinkBeverage();//饮品void Order_Form(int ID,int number);//订单void User_List_Table();//餐桌列表void Apply_VIP_Menu();//会员办理菜单void Add_money(pUser head);//充值void Updata_User(pUser head);//更新⽤户表void Apply_VIP(pUser head);//办理会员void User_Wallet();//我的钱包//管理员客户端void Administrator_Menu();//管理员菜单void Administrator_Login();//管理员登录void Check_User();//查看⽤户void Find_User();//查找⽤户void All_User();//查看所有⽤户void All_VIP();//本店会员void Setup_administrator();//设置管理员void Food();//菜品信息void Add_Food();//添加菜单void save_stapleFood(pStapleFood p);//保存主⾷信息void save_non_stapleFood(pNon_stapleFood p);//保存副⾷信息void save_drinkBeverage(pDrinkBeverage p);//保存饮品信息pStapleFood readStapleFoodFile();//从主⾷⽂件中读取⽤户信息,返回⼀个表头地址pNon_stapleFood readNonStapleFoodFile();//从副⾷⽂件中读取⽤户信息,返回⼀个表头地址pDrinkBeverage readDrinkBeverageFile();//从饮品⽂件中读取⽤户信息,返回⼀个表头地址void Table();//餐桌管理void Add_Table();//添加餐桌void save_Table(pTable p);//保存餐桌信息pTable readTableFile(); //从餐桌⽂件中读取⽤户信息,返回⼀个表头地址void Clear_Table();//清理餐桌void Clear_oneTable();//清理指定餐桌void Administrator_List_Table();//餐桌列表//公共函数void toxy(int x,int y);//将光标移动到x,y坐标处void HideCursor(int x);//隐藏光标char *HidePassword();//隐藏密码void Exit();//退出系统void Change();//切换账号void Amend_passWord();//修改密码void List_Food();//菜单列表//全局变量区char _userName[10];char _passWord[18];//记录当前⽤户pOrder orderHead=NULL,p2=NULL;//记录当前⽤户的订单int num=0;//函数实现区void toxy(int x,int y)//将光标移动到x,y坐标处{COORD pos={x,y};HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(Out,pos);}void HideCursor(int x)//隐藏光标 ,当x为0时,隐藏,为1时,显⽰{CONSOLE_CURSOR_INFO cursor_info ={1,x};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); }void Default()//欢迎界⾯{char t;//⽤于选择do{HideCursor(0); //隐藏光标system("color 72");toxy(28,8);printf(" 欢迎来到南航餐饮! ");toxy(26,9);printf("-----------------------------");toxy(27,11);printf("1.登录 2.注册 3.管理员登录");while(1) //死循环为防⽌其他按键⼲扰{t=getch();//不回显函数if(t=='1')//如果按1,则进⼊登录界⾯User_Login();else if(t=='2')//如果按2,则进⼊注册界⾯Logon();else if(t=='3')Administrator_Login();}//如果既不是1也不是2和3,则循环输⼊}while(1);//永远为真}void User_Menu()//⽤户菜单{char t;//⽤于选择菜单选项do{system("cls");HideCursor(0); //隐藏光标system("color 74");toxy(32,3);printf("南航餐饮点餐系统!");toxy(32,4);printf("当前⽤户:%s",_userName);toxy(30,5);printf("*********************");toxy(32,7);printf("| 1.菜单列表 |");toxy(32,9);printf("| 2.餐桌列表 |");toxy(32,11);printf("| 3.会员办理 |");toxy(32,13);printf("| 4.修改密码 |");toxy(32,15);printf("| 5.我的钱包 |");toxy(32,17);printf("| 7.退出系统 |");t=getch();//不回显函数,输⼊⼀个值switch(t){case '1':User_Order();break;case '2':User_List_Table();break;case '3':Apply_VIP_Menu();break;case '4':Amend_passWord();break;case '5':User_Wallet();break;case '6':Change();break;case '7':Exit();break;default :break;}}while(1);//永远为真}char *HidePassword()//隐藏密码{char password[18];//密码char *p;//指向密码的指针int i=0;//记录密码位数char t;//输⼊密码for(;;) //此处为输⼊密码不回显操作{t=getch(); //输⼊kif(t=='\r') //如果输⼊k为回车,则跳出循环{break;}else if(t=='\b') //如果输⼊k为删除键{if(i>0) //如若密码还没完全删除{printf("\b");printf(" ");printf("\b");i--;}}else //如果输⼊的k既不是删除键,也不是回车键{password[i]=t; //把k的值赋给_password[i];printf("*"); //输出*号,保护⽤户隐私i++; //密码位数加1}}password[i]='\0';//在数组末端加⼀个结束符p=password;//让p指向该数组return p; //返回⼀个指向密码的指针}pUser readUserFile()//从⽂件中读取⽤户信息,返回⼀个表头地址{FILE *fp; //⽂件指针int n=0;//记录链表的结点数pUser head=NULL;//定义头指针pUser p2,p,pre;fp=fopen("User.txt","a+"); //以只读的⽅式打开⽂件if(fp==NULL){printf("cannot open file\n");}else{while(!feof(fp)) //判断⽂件位置标志是否移动到⽂件末尾{n++;p=(pUser)malloc(M); //向内存申请⼀段空间fread(p,M,1,fp); //将fp所指向的⽂件中的内容赋给pif(n==1){head=p;p2=p;}else //创建链表{pre=p2;p2->next=p;p2=p;}}p2->next=NULL;}if(n<=2)head->next=NULL;elsereturn head; //返回头指针}void save_User(pUser p1) //将p1所指向的内容存储到⽂件中{FILE *fp; //⽂件指针fp=fopen("User.txt","a+"); //以追加的⽅式打开⽂件if(fp==NULL){printf("cannot open file\n");}if(fwrite(p1,M,1,fp)!=1) //将p1所指向的1个⼤⼩为N的数据结构写⼊fp所指向的⽂件中{printf("file write error\n");}fclose(fp); //关闭⽂件}void User_Login()//登录页⾯{char *q,t,c;//q指针⽤于接收 *HidePassword()函数返回的指向密码的指针,t和c均⽤于选择pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址do{HideCursor(1);//显⽰管光标system("cls");//清屏system("color 73");//设置颜⾊toxy(28,8);printf("南航餐饮管理系统登录界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(40,11);scanf("%s",_userName);toxy(40,13);q=HidePassword();//输⼊密码strcpy(_passWord,q);//将获得的密码复制给_passWord[]数组while(p!=NULL&&strcmp(p->userName,_userName)!=0) //遍历链表,寻找当前输⼊的账户的账号 {p=p->next;}if(p!=NULL) //如果p不为空{if(strcmp(p->passWord,_passWord)==0) //如果输⼊的密码正确{toxy(32,16);printf("正在登陆....");Sleep(500); //暂停0.5秒system("cls");toxy(32,10);printf("登陆成功!");break; //跳出循环}else //如果输⼊的密码错误{toxy(32,16);printf("正在登陆....");Sleep(500);system("cls");toxy(30,8);printf("-------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 密码错误!是否继续? |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("-------------------------");while(1)//⽆限循环为防⽌其他按键⼲扰{t=getch(); //输⼊tif(t=='1'){system("cls"); //清屏break;}else if(t=='2') //如果输⼊t为n,进⼊开始界⾯{system("cls"); //清屏Default();break;}}else //如果p为空,即输⼊的账号不正确{toxy(32,16);printf("正在登陆....");Sleep(500);system("cls");toxy(30,8);printf("-------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 账号错误!是否继续? |");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("-------------------------");while(1) //死循环防⽌其他按键⼲扰{c=getch();if(c=='1'){system("cls");break;}else if(c=='2'){system("cls"); //清屏Default();}}}}while(1);Sleep(500); //暂停0.5秒User_Menu(); //账号密码均正确,进⼊⽤户主菜单}void Logon()//注册界⾯{pUser p1;pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址p1=(pUser)malloc(M); //向内存申请⼀段空间char *q1,*q2;//q1,q2分别⽤于接收 *HidePassword()函数返回的值char userName[10],passWord[18],againPassword[18],c,k,t;//c,k,t均⽤于选择 do{system("cls");system("color 73");HideCursor(1);//显⽰光标int flag=0;//标记信息库中是否存在要注册⽤户名toxy(28,8);printf("南航餐饮管理系统注册界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(32,15);printf("确认密码:");toxy(42,11);scanf("%s",userName);//输⼊⽤户名toxy(42,13);q1=HidePassword();//输⼊密码strcpy(passWord,q1);toxy(42,15);q2=HidePassword();//输⼊确认密码strcpy(againPassword,q2);while(p!=NULL) //遍历链表,寻找当前输⼊的账户的账号{if(strcmp(p->userName,userName)==0)//如果信息库中存在该⽤户名{toxy(32,17);printf("⽤户名已存在,请重新注册!");flag=1;//flag为1时表⽰⽤户名已存在break;//跳出循环}p=p->next;}if(flag)//如果⽤户名已存在{HideCursor(0);//隐藏光标toxy(32,21);printf("1.是\t2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='1')//如果继续,则重新注册continue;else if(t=='2')//如果不继续,则回到⾸页{system("cls");//清屏Default();//回到⾸页}}if(strcmp(passWord,againPassword)==0) //如果输⼊的两次密码均正确 {strcpy(p1->userName,userName);strcpy(p1->passWord,passWord);strcpy(_userName,userName);strcpy(_passWord,passWord);p1->isVIP=0;p1->money=0;if(strcmp(userName,"root")==0&&strcmp(passWord,"root")==0)p1->isAdministrator=1;elsep1->isAdministrator=0;toxy(32,16);printf("正在注册....");Sleep(500);break; //跳出循环}else //如果输⼊的两次密码不同{toxy(32,16);printf("正在注册....");Sleep(500);system("cls");toxy(30,8);printf("------------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("|两次密码不⼀致!是否继续注册?|");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("------------------------------");while(1){c=getch();if(c=='1'){system("cls");break;}else if(c=='2'){system("cls");Default();break;}}}}while(1);save_User(p1); //调⽤函数,将p1所指向的内容存储到⽂件中system("cls");toxy(32,10);printf("注册成功!");Sleep(500); //暂停0.5秒toxy(32,12);printf("正在⾃动为您登陆....");Sleep(500);User_Menu(); //注册成功后进⼊主菜单}void User_Order()//点餐{int ID;int number;do{while(1){system("cls");HideCursor(1);int flag=0;pTable T,Thead;Thead=readTableFile();T=Thead;int j=11;toxy(12,6);printf("餐桌列表(按任意键继续)");toxy(2,8);printf("餐桌编号 | 可坐⼈数 | 已坐⼈数");toxy(0,9);printf("--------------------------------------");while(T!=NULL){toxy(6,j);printf("%-10d%-10d%d",T->ID,T->count,T->People); j++;T=T->next;}toxy(38,12);printf("请选择餐桌号:");scanf("%d",&ID);toxy(40,14);printf("请选择⼈数:");scanf("%d",&number);T=Thead;while(T!=NULL){if(T->ID==ID){if((T->count)-(T->People)>=number){toxy(38,16);printf("占座成功!按任意键继续点餐");flag=1;break;}else{toxy(38,16);printf("占座失败!该餐桌座位不够");flag=0;break;}}T=T->next;}if(T==NULL&&flag==0){toxy(38,16);printf("该餐桌编号不存在,请重新输⼊");Sleep(1000);continue;}else if(T!=NULL&&flag==0){toxy(38,17);printf("是否继续 1.是 2.否");while(1){ch=getch();if(ch=='1'||ch=='2')break;}if(ch=='1')continue;else if(ch=='2')break;}else if(flag)break;}if(ch=='2')break;getch();do{system("cls");printf("-----------------");toxy(28,10);printf("1) 主⾷");toxy(28,12);printf("2) 副⾷");toxy(28,14);printf("3) 饮品");toxy(28,16);printf("4)订单");toxy(28,18);printf("5)返回");t=getch();switch(t){case '1':Order_StapleFood();break;case '2':Order_nonStapleFood();break;case '3':Order_DrinkBeverage();break;case '4':Order_Form(ID,number);break;case '5':break;default :break;}if(t=='5')break;}while(1);if(t=='5')break;}while(1);}void Order_StapleFood()//主⾷{char t;do{system("cls");pStapleFood p,head=readStapleFoodFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("主⾷菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0) {p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(40,10);printf("点餐成功!是否继续?1.是 2.否");while(1){if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);}void Order_nonStapleFood()//副⾷{char t;do{system("cls");pNon_stapleFood p,head=readNonStapleFoodFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("副⾷菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0){p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(36,10);printf("点餐成功!是否继续?1.是 2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);pDrinkBeverage p,head=readDrinkBeverageFile();pOrder p1;p=head;char foodName[20];int i=8;toxy(10,4);printf("饮品菜单");toxy(6,6);printf("菜名\t\t\t价格");toxy(0,7);printf("-----------------------------------");while(p!=NULL){toxy(6,i);printf("%-22s%.2f",p->name,p->price);i++;p=p->next;}toxy(40,8);printf("请输⼊您要点的菜名:");scanf("%s",foodName);p=head;while(p!=NULL&&strcmp(p->name,foodName)!=0){p=p->next;}if(p){p1=(pOrder)malloc(Y);strcpy(p1->name,foodName);p1->price=p->price;num++;if(num==1){orderHead=p1;p2=p1;}else{p2->next=p1;p2=p1;}p2->next=NULL;toxy(36,10);printf("点餐成功!是否继续?1.是 2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='2')break;}else{toxy(36,10);printf("没有找到这道菜,请检查您输⼊的菜名是否正确!"); Sleep(1500);}}while(1);}void Order_Form(int ID,int number)//订单{do{system("cls");int i=10;char t;float totalPrice=0;float actualPayment=0;pOrder p=orderHead;pUser q,head;pTable T,Thead;q=head;if(orderHead==NULL){printf("我的订单");toxy(22,8);printf("菜品名称\t\t价格");toxy(20,9);printf("***************************");while(p!=NULL){toxy(22,i);printf("%-18s%.2f",p->name,p->price);i++;totalPrice+=p->price;p=p->next;}head=readUserFile();q=head;toxy(20,i);printf("***************************");while(q!=NULL&&strcmp(q->userName,_userName)!=0) {q=q->next;}if(q){toxy(24,++i);printf("总价: %.2f",totalPrice);if(q->isVIP)actualPayment=totalPrice*0.85;elseactualPayment=totalPrice;toxy(24,++i);printf("实付: %.2f",actualPayment);}toxy(22,++i);printf("1.确认⽀付 2.取消订单 3.返回");while(1){t=getch();if(t=='1'||t=='2'||t=='3')break;}if(t=='1'){Thead=readTableFile();T=Thead;while(T!=NULL&&T->ID!=ID){T=T->next;}toxy(24,++i);printf("正在⽀付....");if(q->money>=actualPayment){q->money-=actualPayment;T->People+=number;Updata_User(head);Updata_Table(Thead);Sleep(1500);system("cls");toxy(24,10);printf("⽀付成功!按任意键返回");orderHead=NULL;getch();break;}else{Sleep(1500);system("cls");toxy(24,10);printf("余额不⾜!按任意键返回");getch();break;}}else if(t=='2'){orderHead=NULL;break;}else if(t=='3')void User_List_Table()//餐桌列表{system("cls");pTable p,head;head=readTableFile();p=head;int i=11;toxy(32,6);printf("餐桌列表(按任意键继续)");toxy(22,8);printf("餐桌编号 | 可坐⼈数 | 已坐⼈数");toxy(20,9);printf("--------------------------------------");while(p!=NULL){toxy(26,i);printf("%-10d%-10d%d",p->ID,p->count,p->People);i++;p=p->next;}getch();}void Apply_VIP_Menu()//办理会员{char t; //t⽤于选择do{system("cls");system("color 75");HideCursor(0);pUser head=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址toxy(32,6);printf("会员办理");toxy(30,8);printf("1) 充值 ");toxy(30,10);printf("2) 办理会员");toxy(30,12);printf("3) 返回");t=getch();switch(t){case '1':Add_money(head);break;case '2':Apply_VIP(head);break;case '3':break;default :break;}if(t=='3')//如果输⼊3,则跳出循环,该函数⽣命周期结束,回到上⼀级菜单break;}while(1);}void Add_money(pUser head)//充值{float money;//输⼊要充值的钱pUser p;p=head;//head为从上⼀级菜单传过来的参数,为⽤户信息链表的头结点while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登录账户的信息 {p=p->next;}while(1){system("cls");system("color 76");toxy(32,6);printf("南航餐饮充值中⼼");if(p!=NULL){if(p->isVIP==0)//如果不是会员{toxy(20,8);printf("对不起,您还不是会员,请先办理会员后再来充值!");toxy(32,10);printf("请按任意键返回!");break;}else if(p->isVIP==1)//如果是会员{HideCursor(1);toxy(32,8);printf("请输⼊充值⾦额(⼀次不少于200):");printf("正在充值....");Updata_User(head);//更新⽤户表toxy(32,10);printf("充值成功 ");toxy(32,12);printf("请按任意键返回!");break;}else//如果充值⾦额⼩于200{toxy(32,10);printf("⼀次⾄少充值200元!");Sleep(1500);continue;}}}}getch();}void Apply_VIP(pUser head)//办理会员{system("cls");system("color 76");pUser p=head;//head为从上⼀级菜单传过来的参数,为⽤户信息链表的头结点char t;float money;toxy(32,6);printf("南航餐饮会员办理中⼼");while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登录账户的信息 {p=p->next;}do{if(p!=NULL){if(p->isVIP==1)//如果已经是会员{toxy(20,8);printf("您已是本店尊贵会员,⽆需再次办理!");toxy(32,10);printf("请按任意键返回!");getch();break;}else if(p->isVIP==0)//如果还没办理会员{toxy(30,8);printf("提⽰:");toxy(30,9);printf("1.办理会员⾄少充值500");toxy(30,10);printf("2.冲500送200,冲1000送500");toxy(32,12);printf("是否确认办理会员?");toxy(32,13);printf("1.是\t2.否");while(1){t=getch();if(t=='1')break;else if(t=='2')break;}if(t=='1'){while(1){system("cls");HideCursor(1);toxy(32,10);printf("请输⼊充值⾦额:");scanf("%f",&money);if(money>=500&&money<1000){money+=200;p->money+=money;p->isVIP=1;Updata_User(head);toxy(32,12);}else if(money>=1000){money+=500;p->money+=money;p->isVIP=1;Updata_User(head);toxy(32,12);printf("恭喜,您已成为本店尊贵会员!");toxy(32,14);printf("请按任意键返回主菜单");getch();User_Menu();}else{toxy(32,12);printf("办理会员⾄少充值500");Sleep(2000);}}}else if(t=='2')break;}}}while(1);}void Updata_User(pUser head)//更新⽂件{FILE *fp;pUser p=head->next; //使p指向第⼆个结点fp=fopen("User.txt","w"); //先清空原⽂件内容再将修改后的信息写⼊⽂件if(fp==NULL){printf("cannot open file\n");}if(fwrite(head,M,1,fp)!=1) //将head所指向的数据写⼊fp所指向的⽂件{printf("file write error\n");}fclose(fp); //关闭⽂件fp=fopen("User.txt","a"); // 打开User.txt⽂件,⽅式为追加while(p!=NULL) //p不为空就执⾏循环体{if(fwrite(p,M,1,fp)!=1) //将p所指向的1个⼤⼩为N的数据结构写⼊fp所指向的⽂件{printf("file write error\n");}p=p->next; //使p指向下⼀个结点}fclose(fp); //关闭⽂件}void Amend_passWord()//修改密码{system("cls"); //清屏HideCursor(0); //隐藏光标,看着更舒服pUser p,head;head=readUserFile();do{p=head;char password[18],newpassword[18],t,k,*q1,*q2;int i=0;toxy(34,5); //将光标移动到坐标为(50,5)的位置printf("南航餐饮点餐系统");toxy(34,8);printf("修改密码");toxy(32,10);printf("请输⼊旧密码:");q1=HidePassword();strcpy(password,q1);toxy(32,12);printf("请输⼊新密码:");q2=HidePassword();strcpy(newpassword,q2);while(p!=NULL&&strcmp(p->userName,_userName)!=0)//遍历链表,寻找当前登陆账户的账号 {p=p->next;}if(p!=NULL) //如果p不为空break; //跳出循环}else //如果旧密码输⼊错误{system("cls");toxy(30,8);printf("--------------------------");toxy(30,9);printf("| |");toxy(30,10);printf("| 密码错误!是否继续? |");toxy(30,11);printf("| |");toxy(30,12);printf("| 1.是 2.否 |");toxy(30,13);printf("| |");toxy(30,14);printf("--------------------------");while(1){t=getch(); //输⼊tif(t=='1'){system("cls");break;}else if(t=='2')User_Menu();}}}}while(1); //永远为真Updata_User(head);//修改密码toxy(32,14);printf("修改成功!正在跳转...");Sleep(500); //暂停0.5秒}void User_Wallet()//我的钱包{system("cls");system("color 78");pUser p,head;head=readUserFile();p=head;while(p!=NULL&&strcmp(p->userName,_userName)!=0) {p=p->next;}if(p!=NULL){toxy(32,10);printf("账户余额为:%.2f",p->money);toxy(32,12);printf("请按任意键返回");}getch();}void Change()//切换账号{system("cls");Default();}void Exit()//退出点餐系统{char t;toxy(30,10);printf("-----------------------");toxy(30,11);printf("| 您确定要退出吗? |");toxy(30,13);printf("| 1.确定 2.取消 |");toxy(30,14);printf("-----------------------");while(1){t=getch(); //输⼊tswitch(t){case '1':system("cls");toxy(32,10);printf("已安全退出软件");toxy(32,12);printf("谢谢使⽤!");toxy(32,14);printf("by-by^_^");exit(0); break; //终⽌程序case '2':break; //调⽤函数,进⼊菜单default :break;}if(t=='2')break;}}void Administrator_Menu()//管理员菜单{char t;//⽤于选择菜单选项do{system("cls");HideCursor(0); //隐藏光标system("color 74");toxy(32,3);printf("南航餐饮管理系统!");toxy(32,4);printf("当前管理员:%s",_userName);toxy(30,5);printf("*********************");toxy(32,7);printf("| 1.菜品信息 |");toxy(32,9);printf("| 2.餐桌管理 |");toxy(32,11);printf("| 3.查看⽤户 |");toxy(32,13);printf("| 4.本店会员 |");toxy(32,15);printf("| 5.设置管理员 |");toxy(32,17);printf("| 6.修改密码 |");toxy(32,19);printf("| 7.切换账号 |");toxy(32,21);printf("| 8.退出系统 |");t=getch();//不回显函数,输⼊⼀个值switch(t){case '1':Food();break;case '2':Table();break;case '3':Check_User();break;case '4':All_VIP();break;case '5':Setup_administrator();break;case '6':Amend_passWord();break;case '7':Change();break;case '8':Exit();break;default :break;}}while(1);//永远为真}void Administrator_Login()//管理员登录{char *q,t,c;//q指针⽤于接收 *HidePassword()函数返回的指向密码的指针,t和c均⽤于选择 pUser p=readUserFile();//从⽂件中读取⽤户信息,返回⼀个表头地址do{HideCursor(1);//显⽰管光标system("cls");//清屏system("color 73");//设置颜⾊toxy(28,8);printf("南航餐饮管理员登录界⾯");toxy(26,9);printf("-----------------------------");toxy(32,11);printf("⽤户名:");toxy(32,13);printf("密码:");toxy(40,11);scanf("%s",_userName);toxy(40,13);q=HidePassword();//输⼊密码strcpy(_passWord,q);//将获得的密码复制给_passWord[]数组。

餐饮管理系统代码大全(doc 9页)

餐饮管理系统代码大全(doc 9页)

餐饮管理系统代码大全(doc 9页)餐饮管理系统代码1 using System;2using System.Collections.Generic;3using ponentModel;4using System.Data;5using System.Drawing;6using System.Text;7using System.Windows.Forms;8using System.Collections;9namespace 餐饮管理系统10...{11 public partial class frmManagement : Form12 ...{13 ArrayList RoomStatus = new ArrayList();28 ...{29 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.管理员”中。

您可以根据需要移动或移除它。

30 this.管理员TableAdapter.Fill(this.dieteticManagementData Set.管理员);31 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.Vip”中。

您可以根据需要移动或移除它。

32this.vipTableAdapter.Fill(this.dieteticManageme ntDataSet.Vip);3334 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.餐牌”中。

您可以根据需要移动或移除它。

35 this.餐牌TableAdapter.Fill(this.dieteticManagementData Set.餐牌);36 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.食品类别”中。

您可以根据需要移动或移除它。

37 this.食品类别TableAdapter.Fill(this.dieteticManagementData Set.食品类别);38 // TODO: 这行代码将数据加载到表“dieteticManagementDataSet.商品”中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

餐饮管理系统1、前言在餐饮业务竞争越来越激烈的今天,如何提高服务质量,其管理能力显的越来越重要。

尤其是对一些大的餐饮店,餐饮店内部服务项目越多,管理难度越大,既要处理前台又要处理后台的工作,所以一个好的管理系统可以提高酒店的管理水平也可以大幅度提高酒店服务水平。

1.1目的随着当今社会信息化的日新月异的发展,计算机应用已经渗透到日常工作的许多方面无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平。

为了企业创先进、争一流,为了企业的发展一套好的系统必不可少.现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地.1.2定义餐饮管理系统,SQL,E-R图1.3 参考资料《数据库应用系统开发技术》朱如龙刘焰机械出版社2004年8月《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社2004年8月2、系统设计2.1系统目标设计餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。

2.2开发设计思想餐厅系统是按照国内餐饮行业最新要求开发的全心概念的信息管理系统。

该系统将餐厅收银、往来帐务结算及销售情况统计工作在单计算机或网络系统中完成。

主要特点包括:*代码菜谱编制,方便统计,方便输入;*开单、改单、结算、打印、用户界面方便友好;*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;*报表真实,实用性强,如:收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。

*账务系统共讷讷感的完整性。

一旦该系统正式运行,餐厅每日的营业账和全部往来客户的账务操作结算都将依靠计算机,该系统面对当前餐厅餐饮业各种负复杂的结算要求应具有很强的应变能力。

为此本系统为适应拥护的要求,设计了完整的转帐功能。

*帐务系统的可扩充性。

由于餐厅业务的扩展,势必要求帐务结算系统随之扩展,在不修改程序的前提下,本系统可在相当可观的范围内,由用户扩展其营业项目和结算手段。

*帐务操作数据的可校验性。

本系统提供了多种方便的查询,校核和统计功能,共帐务操作人员和专职人员自校对帐务数据。

如当班收银员下班的时候直接统计当班期间的输单、收银情况。

为餐饮企业管理人员提供及时准确的经营状况和帐务信贷系统情况。

餐厅系统需要完成的功能有以下几点:*定餐管理:定餐修改、定餐取消、定金处理、定餐统计、定餐查询、定餐报表。

*收款管理:立帐、校费明细录入、特色菜自定义、追加消费、消费修改、消费取消、加位、更改台号、折扣设定、消费服务设定、帐单打印、现付结算和房帐转录。

*交班管理:统计当班数据、为下班操作做准备、当班帐务流水报表。

*系统报表:餐饮销售分析报表、每菜销售统计报表、营业收入报表、每菜销售统计日报表和当班特色菜报表。

*系统维护:餐厅代码设定、餐台号码以及贵宾房设定特色分类设定、特色编码设定、折扣设定、货币设定、服务费率设定、营业统计项目设定、成本统计项目设定、使用者权限维护、系统备份、系统恢复。

*餐饮成本核算:成本统计项目设定、成本管理。

2.3系统功能模块设计在系统功能分析的基础上,考虑Visual C++的编程特点,得到如下面功能模块图。

图1-1为餐厅系统餐饮系统的功能模块图。

餐饮系统功能图由上面的餐饮系统的功能分析,可以看出一个餐饮管理系统是一个复杂的系统工程,涉及到系统的各个方面。

由于篇幅的问题就不具体的介绍了。

3、数据库设计在数据库系统开始设计的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不必要的人力和物力。

3.1数据库需求分析在仔细调查餐饮日产管理过程的基础上,得到本系统所处理的数据流程图如图1-2所示。

餐饮管理数据流程图针对本市里,通过对餐饮系统管理系统的内容和数据流程分析,设计的数据项和数据结构如下。

*菜谱信息。

包括的数据项有菜谱号、名称、所属价格、种类、描述等。

*值班员信息。

包括数据项有值班员的姓名和口令。

*荣誉客户信息。

包括的数据项有客户号、客户姓名、年龄、性别、职称、联系电话、工作单位等。

*定餐信息。

包括的数据项有客户号、桌号、结算日期、打折情况和总计等。

有了上面的数据结构、数据项和数据流程,就能进行下面的数据库设计。

3.2数据库概念设计本实例根据上面的设计规划出的实体有:菜谱实体、值班员实体、客户实体、定餐实体和结算实体。

各个实体具体的描叙E-R图及其之间的关系描述如下。

图1-3为菜谱实体E-R图。

菜谱实体E-R图图1-4为值班员实体E-R图值班员实体E-R图图1-5为客户实体E-R图客户实体E-R图图1-6为订餐信息实体E-R图订餐信息实体E-R 图图1-7为结算信息实体E-R 图实体和实体之间的关系E-R 图如图1-8所示实体之间的关系E-R3.3数据库逻辑结构设计在 上面的实体以及实际实体之间关系的基础上,形成数据库中表格以及各个表格之间的关系。

餐饮管理系统数据库中各个表格的设计结果如下面的几个表格所示。

每个表格表示在数据库中的一个表表1-1为值班员ZSP表1-2为菜谱信息表CP表1-3为荣誉客户信息表KH表1-3 荣誉客户信息表KH表1-4为定餐信息表表1-4 定餐信息表表1-5为结算信息表JS3.4数据字典数据项数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}菜谱信息数据项描述荣誉客户信息数据项描述订餐信息数据项描述用户数据结构描述3.5 数据库物理结构设计数据库物理设计指确定数据库在物理设备上的存储结构与存取方法。

确定数据库的物理结构:是否聚集存储,如何建立索引,数据的存放位置,确定系统配置等。

介于本系统数据库的简单性,我们没有采用聚集存储之类的结构设计。

4、功能模块设计4.1 设计登录和口令管理模块在未登录时,主对话框中的按钮,除了“登录”“退出”“帮助”“关于”等项,全是不可用的。

为达到这一效果,在CRMSDlg::OnInitDialog()中加入如下代码:GetDlgItem(IDC_BTN_UPDPWD)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_DC)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_JS)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_KH)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_CP)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_ZBY)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_VIEWDC)->EnableWindow(FALSE);然后在资源编辑器加入如图所示的登录对话框。

主对话框的事件处理函数CRMSDlg::OnBtnLogin()的代码如下,它来处理登陆事务。

若成功,则使所有的按钮变为可用,示意登录成功。

void CRMSDlg::OnBtnLogin(){CDlgLogin dlg;dlg.DoModal();try{CString sql_;sql_.Format("SELECT ZBY_NAME FROM ZBY WHERE ZBY_NAME='%s' AND ZBY_PSWD='%s'",dlg.m_name, dlg.m_pswd);_bstr_t sql = sql_;_RecordsetPtr pRst;pRst = m_DBCnt->Execute(sql, NULL, adCmdText);if (!pRst->adoEOF){MessageBox("登录成功!");GetDlgItem(IDC_BTN_UPDPWD)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_DC)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_JS)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_KH)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_CP)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_ZBY)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_VIEWDC)->EnableWindow(TRUE);} else{MessageBox("登录失败!");}pRst->Close();}catch(_com_error& e){AfxMessageBox(e.ErrorMessage());return;}}void CRMSDlg::OnBtnUpdpwd(){CDlgUpdPwd dlg;dlg.DoModal();if (dlg.m_newpswd!=dlg.m_newpswd2){MessageBox("两次输入新密码不一致!");return;}下面是一段SQL语句:sql_format(“SELECT ZBY NAME FORM ZBY WHERE ZBY NAME+’%s’”“AND ZBY_PSWD=’%s’”dlg.m_name,dlg.m_pswd);这里并没有取出ZBY表中的所有字段(ZBY_NAME和ZBY_PSWD),然后把密码字段和用户的输入作比较来决定登录的与否;而是只取出了值班员名字(ZBY_NAME),密码的校验放在数据库服务器端进行。

这主要是基于安全考虑。

如果没有确实的需要,就竟量不从数据库里取用户密码这种敏感数据。

虽然这只是一个细节,但是很多安全漏洞都是又对这种细节的忽视应起的。

登录成功后可以单击“修改口令”按钮激活“修改口令”界面如图所示。

这部分事务的处理代码和登录处理类时,只是更为繁琐。

所以只给代码,void CRMSDlg::OnBtnUpdpwd(){CDlgUpdPwd dlg;dlg.DoModal();if (dlg.m_newpswd!=dlg.m_newpswd2){MessageBox("两次输入新密码不一致!");return;}try{CString sql_;sql_.Format("SELECT ZBY_NAME FROM ZBY WHERE ZBY_NAME='%s' AND ZBY_PSWD='%s'",dlg.m_name, dlg.m_oldpswd);_bstr_t sql = sql_;_RecordsetPtr pRst;pRst = m_DBCnt->Execute(sql, NULL, adCmdText);if (pRst->adoEOF){MessageBox("密码错误!");pRst->Close();return;}pRst->Close();sql_.Format("Update ZBY SET ZBY_PSWD='%s' WHERE ZBY_NAME='%s'",dlg.m_newpswd, dlg.m_name);sql = sql_;m_DBCnt->Execute(sql, NULL, adCmdText);MessageBox("修改密码成功!");}catch(_com_error& e){AfxMessageBox(e.ErrorMessage());return;}}4.2设计值班员管理模块下面开始设计值班员表(ZBY0的管理界面。

相关文档
最新文档