基于web的餐馆内部营业管理系统实验报告

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

C#.net大型实验报告
一、实验题目:基于web的餐馆内部营业管理系统
二、实验目的和要求
基于Visual Studio实现一个餐厅内部营业管理系统,参观管理系统包括了前台营业、预定服务、外卖服务、员工管理和系统管理等主要功能模块,其具体的功能为:
(1)系统管理--菜单管理:包括新菜品的添加,已有菜品的删除,菜品价格和描述的更
改等;
(2)系统管理--库存管理:可以查看餐馆的剩余库存,方便对原料进行及时的补给。


存管理包括入库和出库两个操作,可记录主食、菜品原料、酒水等所有餐馆运营所
需的原料;
(3)系统管理--账号管理:有系统管理员进行账户的创建、删除,并且在每个账户创建
的同时会赋予不同的权限,按照实际的情况和不同的要求给予权限;
(4)员工管理--员工信息:添加、编辑或者删除员工的基本信息,主要包括员工编号、
姓名、性别、职位、基本薪金等;
(5)外卖服务--外卖订单:外卖员接订外卖,记录菜品信息和送货地址,打印外卖信息;
(6)外卖服务--外卖管理:查看外卖订单情况并执行外卖流程操作,在送货之前可以更
改外卖信息,如份数、送货地址(一般不允许退菜),最后外卖员送出外卖,把收
回的钱交给收银员。

收银员更改外卖订单号的状态为已收款;
(7)前台营业--菜单&点菜:根据顾客要求在菜单中点菜,并确定顾客就餐的桌号。


以对顾客的点菜信息再次进行编辑,更改点菜情况(新增菜品、减少菜品、增减某
菜品份数等)。

三、实验步骤:
1.母版页设计
(1) 去掉滚动条,添加css样式表文件;
(2) 分割页面,左侧为导航菜单,右侧上方为快捷按钮,右侧下方为操作区域,大
致布局如下图所示;
1)插入表格,划分出左右区域,添加样式;
2)分割左侧单元格,使其成为logo区和导航菜单区,添加样式;
3)分割右侧单元格,使其成为快捷按钮区和操作区,添加样式;
(3) 为各个区域添加所需内容
1)在logo区域放图片,作为logo;
2)在导航菜单区添加treeview控件,作为导航菜单,效果如图;
3)为快捷按钮区添加控件:打开工具箱,找到Lable控件,在HTML分类下找到
Image控件,将其拖放到快捷按钮区域,效果如图
(4) 母版页设计最终效果如图
2.创建第一张网页chy_index.aspx
(1) 在“解决方案资源管理器”中右键单击网站——选择“添加新项”——“web窗
体”,取名为:chy_index.aspx,并在“选择母板页”前打勾——单击添加。

然后进
入母板选择对话框;
(2) 在弹出的对话框中选择前面设计的MyMasterPage.Master——单击确定;
(3) 在“解决方案资源管理器”中找到新建的index.aspx文件,右键——在浏览器中查
看,页面的效果应该跟前面的母板页效果图相同;
3.系统管理——菜单管理实现
(1) 修改原先的母版页:将ContentPlaceHolder控件移动到操作区域的一对div中;
(2) 添加新的页面文件chy_menu_add.aspx
1)插入表——在menu_add.aspx的设计视图,将鼠标放在ContentPlaceHolder1的
白色区域,暂时插入3行3列的表,单元格衬距和单元格间距为0,使用百分
比:100%;
2)在表格中设计需要的控件排列和布局
●讲第一行设置为功能标题行:将其合并单元格,输入文字“菜单菜品添加”;
●设置页面的title为“系统管理-菜单管理-菜单添加”;
●在第二行第一列中输入“菜品名称”,第二列拖入标准控件textbox,设置
ID为txt_menuname;
●在第三列拖入验证控件RequiredFieldValidator;
●单击第三行,右键插入行,在第一列输入“菜品定价”,第二列拖入标准
控件textbox,设置ID为txt_price,在txt_price右侧拖入验证控件
RequiredFieldValidator,同理,在同一个单元格内,添加折扣的输入文本
框txt_discount和验证控件
●添加足够的行,在第一列中分别输入菜品口味、制作材料、菜品描述;
●在菜品口味的下一列拖入控件DropDownList,设置ID为drop_taste;
●单击编辑项,在弹出框中输入口味的数据项;
●为drop_taste设置样式cssclass=textInput2;
●同理在drop_taste后添加菜品类型;
●为制作材料添加多行文本框,拖入控件textbox,设置ID为txt_material,
编辑样式,同理添加菜品描述;
●在第一行拖一个linkbutton控件放在字的左侧,id=link_back
cssclass=son_link text=“>>返回菜单管理<<”
●在最后一行的中间两个单元格中拖入两个imagebutton控件,id分别为
imgbtn_ok 和imgbtn_clear;
●双击两个新增按钮,创建按钮被单击事件,此时效果如图
3)数据库操作类的定义
●在web.config文件中编辑数据库连接串,并为项目添加数据库处理文件;
●添加数据库操作类:添加新项—类—命名为“chy_db.cs”,然后打开文件;
●添加命名控件System.Data.SqlClient;
●编写数据库操作类的代码
✧定义数据成员conn即数据库连接对象;
✧编写数据库连接函数;
✧添加查询功能函数,返回dataset对象
✧添加查询功能函数,返回SqlDataReader对象;
✧添加插入功能函数;
✧添加修改功能函数;
✧添加删除功能函数;
✧关闭数据库;
4)Chy_menu_add.aspx中确定按钮和清空按钮处理代码的实现
●确定按钮处理代码
●清空按钮处理代码
(3) 添加新的页面文件chy_ menu_manager.aspx
1)修改title为“系统管理—菜单管理”;
2)插入3行1列的表格;
3)制作页面:
●在第一行单元格输入标题:菜单管理,class=oper_title;
●选中第二行单元格,设置属性居中,高为30px;
●在第二行添加文本菜品类型和DropDownList控件,设置ID为drop_type,
下拉列表内容和添加页面一样;
●选中DropDownList控件,单击右上角的箭头,单击编辑项,增加一个下
拉列表项“全部”,并放在第一个;
●在DropDownList控件右侧输入文本菜品名称并拖入控件textbox,设置ID
为txt_search;
●在txt_search控件右侧输入适量空格,然后拖入标准控件imgbutton;
●选中第三行,设置属性valign=top,align=center;
●在第三行拖入数据控件GridView,添加样式;
●选中GridView,单击右上角的箭头,单击选择数据源的下拉列表,选择
新建数据源;
●在数据源配置界面,单击下拉箭头,选择conname;
●单击下一步,选择需要的数据库,单击右侧的order by按钮,设置查询结
果的排序字段,测试查询;
●选中gridview,单击右上角的箭头,设置启用分页,排序,并修改每页记
录条数;
●单击gridview任务的编辑栏,修改列标题;
●在对话框的左上角找到选择,然后单击添加,并设置属性headtext=“查
看”;
●同理,添加删除列;
●运行测试界面如图
4)根据类型分类显示:当类型下拉列表的选中项发生改变时,数据也随之发生改

●选中drop_type控件,设置属性AutoPostBack=true,单击drop_type控件
控件右上角的箭头,单击“编辑项”,修改第一项的value为%;
●选中gridview1,单击右上角的箭头,单击配置数据源,添加where字句;
5)按菜品名称查询
选择gridview1,单击右上角的箭头,单击配置数据源,添加where字句;
6)编辑功能
●源代码界面,在最后一行的上面加入控件panel;
●将chy_menu_add.aspx页面中的table整个复制过来,放在</asp:Panel>的
前面,并进行参数修改;
●选中gridview1,添加SelectedIndexChanged事件;
●编写gridview1中某记录的详情比单击事件的处理代码
●测试。

浏览菜单管理页面,单击某记录的“详情”,是否能弹出该记录的
编辑界面
●设计页面,双击修改按钮和关闭按钮,自动加入事件处理代码
✧关闭的处理代码编写
✧修改按钮处理代码
7)删除功能
●选中gridview1,添加RowDeleting事件;
●编写删除处理代码
●选中gridview1,双击RowDataBound,自动添加数据行绑定处理函数,编
写函数
●运行测试界面
(4) 用超链接把相关网页串联起来
1)设置从chy_menu_manager 转到chy_menu_add页面
●打开chy_menu_manager的设计页面,在搜索按钮的后面拖入html分类
input(Button)控件,设置属性ID为Btn_add;
●在源代码界面,增加onclick事件,使按钮单击使跳转到菜品添加页面
2)设置从chy_menu_add返回chy_menu_manager页面
●打开chy_menu_add.aspx的设计页面,选中超链接按钮“<<返回菜单管理
<<”到源码界面将其改为html的超链接
3)设置从左侧的菜单打开chy_menu_manager页面
●打开母版页,选择左侧的treeview,编辑节点,找到节点菜单管理,将右
侧属性navigateurl设置为menu_manager.aspx;
4.“前台营业”—“菜单&点菜”功能的实现
(1) 添加页面chy_order_add.aspx,然后进行初步的界面设计;
(2) 制作界面,并实现菜单数据的读取:
1)修改页面标题title为“前台营业-点菜”;
2)插入12行4列的表格,边距和边框都为0,width=“98%”;
3)合并第一行,输入标题——点菜,css设置为oper_title;
4)在你第二行第一列输入——订单编号,css:align="right" height="25px"
width="20%"
5)第二列<td width="30%">,然后拖入lable控件,设置:ID="L_ordernum"
Font-Size="12px" Text="订单编号数据"
6)第三列<td width="20%">然后写入文字“桌号:”,接着拖入lable控件,设置:
ID="L_tablenum" Font-Size="12px" Text="未选"
7)第四列,拖入控件buttom,设置ID="Btn_tablechoose" CausesValidation="False"
Text="选择桌号" CssClass="btn_orange"
8)第三行第一列<td align="left" height="30px" bgcolor="#F3F3F3"
style="padding-left:10px;background:url(./images/bg3.jpg); ">。

输入文本“热菜菜谱:”
9)第二列:<td bgcolor="#F3F3F3" style="background:url(./images/bg3.jpg); ">,第
三列:<td style=" background:url(./images/bg3.jpg); ">,第四列:<td style="background:url(./images/bg3.jpg); ">
10)在第三列输入“冷菜菜谱:”
●在热菜菜谱的前面拖入html的image控件,冷菜菜谱同理;
11)第四行第一列<td align="center" height="25px" bgcolor="#F3F3F3"> 拖入
textbox控件,设置:ID="TextBox1" CssClass="textInput2"。

然后键入合适的空格,再拖入imagebutton控件,设置ID="imgbtn_add1"
●第二列设置bgcolor="#F3F3F3" 拖入标签,设置如下<asp:Label
ID="L_help1" runat="server" Text="0,0"></asp:Label>
●第三列:将第一列的2个控件复制过来即可 ,td: align="center"
●第四列:复制第二列的标签<asp:Label ID="L_help2" runat="server"
Text="0,0"></asp:Label>
12)在第五行第一列:<td align="center" bgcolor="#F3F3F3" >,添加div 并
设置属性,如下<div style="height:330px; width:100%; overflow:auto;
margin-top:5px;"> </div>
13)在div中拖入控件listbox,设置属性ID为ListBox1
14)Listbox绑定的数据源通过编程实现,讲属于热菜的菜品罗列出来
●在cs页面,添加命名空间:using System.Data.SqlClient;
●设置全局数据源对象ds1;
●编写自定义函数,从数据库获取热菜菜品数据,然后绑定到listbox1中
●在page_load函数中调用我们的自定义函数get_data1,使页面加载时,就
将热菜数据绑定到listbox1中
15)第五行第二列,添加div并设置属性,加入控件gridview,效果如图
16)第五行第三列<td align=”center”>,然后将第一列中的整个div复制过来;
17)第五行第四列<td align=”center”>,然后将第二列中的整个div复制过来;
18)第六行
●第一列:把第三行第一列的内容复制过来修改为酒水类,同时把单元格的
样式设置也复制过来
●同理把第三行其余的内容和样式复制到第六行对应的列,进行修改;
19)第七行
●样式和内容复制第四行的内容;
●注意lable控件的id需要修改,分别为L_help3 和L_help4;
20)第八行:样式和内容均复制第五行的内容,修改部分样式与属性;
21)第九行第二列拖入控件button,设置ID为btn_ok2;
22)编写程序实现冷菜,酒水类和主食listbox列表的内容显示
●冷菜
●酒水类
●主食与甜点
●在page_load函数中调用新创建的3个自定义函数,加入if判断,只有第一
次打开页面时才绑定数据;
(3) 编程实现点菜过程
4)点菜:
●选中textbox1添加属性AutoPostBack为true;
●为textbox1添加TextChanged事件
●定义暂时存放点菜数据的数据结构:DataTable类型是内存中的表结构,
用来暂时存放用于点的菜;
●创建自定义函数set_data函数,为gridview1绑定点菜的数据
●添加imgbtn_add1的单击事件,并在cs页面编写代码
●同理实现订单号的生成:在page_load函数的if语句中编写代码,订单有精
确到秒的日期事件加一个10-99的随机数构成,然后再第二行的第一个单
元格中添加button控件,设置属性ID为btn_ok1,text为提交订单
5)删除点菜数据
●选中gridview1,添加事件RowDeleting
●同理处理其他点菜删除的功能;
6)点菜份数更改
●选中gridview1,单击右上角任务中的编辑模板,选中里面的
drop_amount1,修改属性AutoPostBack为true,添加事件
SelectedIndexChanged
●在cs页面先创建一个函数,这个函数为四个gridview共用的方法,要保证
四个gridview中的份数下拉列表的控件id都为Drop_amount1
●到设计界面,选中gridview1,找到事件RowDataBound,然后单击右侧的
小三角,选择刚刚写的函数gridviewx;
●同理管理修改剩余的3个;
(4) 选择桌号功能的实现
1)添加“选择桌号”按钮的单击事件,并编写代码
2)在table的外面添加panel控件
3)插入3行3列的表格,第一行第二个单元格写入标题:选择座位
4)第二行第二列插入DropDownList控件,修改属性ID为drop_style;
5)第二行第三行拖入button控件,设置text属性和cssclass属性;
6)合并第三行单元格,设置单元格水平居中,然后拖入datalist控件,数据源设
置,添加where字句和order by字句;
7)单击datalist控件的属性生成器,设置属性;
8)单击datalist的编辑模板,在模板编辑区域的第一行回车,然后从工具箱拖入
button控件,设置button控件属性;
9)根据座位的不同状态给予不同的实现方式:添加事件Itemdatabound
●在page_load函数的if语句中添加viewstate,存放选中的桌号id;
●编写事件代码,主要目的是根据座位的不同状态用合适的方式显示出来
10)添加panel1上的确定按钮的单击事件,并编写代码,选定座位
11)Panel1确定按钮的右边,加入适当空格后,拖入button控件,座位取消按钮
●添加按钮的单击事件,并编写代码
●修改选择桌号按钮的处理代码,调用刚刚写好的存储过程,处理下座位的
状态,是数据更新到最新情况,然后重新读取座位数据绑定到datalist1,
在打开选择座位的界面
(5) 设置从左侧的菜单打开chy_order_add页面:打开母版页,选择左侧的treeview,
编辑节点,找到节点菜单&点菜,将右侧属性navigateurl设置为chy_order_add.aspx;
5.员工管理——员工信息实现:与“系统管理——菜单管理”功能模块制作相似,两个页
面分别是员工信息添加(chy_emmploy_add)和员工信息管理(chy_emmploy_manager);
(1)员工信息添加页面:添加员工的姓名,性别,身份证号,出生年月,聘用日期,职
位,基本薪金,联系电话,住址等基本信息;
1)员工性别和职位用的是dropdownlist控件,其余使用textbox控件,一个确定
按钮,一个清空按钮;
2)确定按钮实现事件代码:
3)清空按钮实现事件代码:
4)运行结果:
(2)员工信息管理页面:显示员工姓名,身份证号码,职位,基本薪金,联系电话,住
址等基本信息,查看员工信息详情(可修改员工信息),删除员工信息,根据职位搜索相关职位员工,根据员工姓名搜索员工;
1)显示员工基本信息使用GridView控件,根据职位搜索使用dropdownlist控件,
姓名搜索框为textbox,搜索按钮为imagebutton,以及一个添加按钮;
2)点击详情,弹出员工信息查看与详情界面:其界面与员工添加界面相似,确定
按钮更改为修改按钮,清空按钮改为关闭按钮;
3)详情被单击事件的处理代码:
4)删除被单击事件的处理代码:
5)关闭按钮的处理代码:
6)修改按钮处理代码:
7)运行结果图:
四、实验总结
这次实训我选择的是餐厅内部营业管理系统。

这次的实训虽然难度较大,但跟着老师发的实验步骤,一步一步的操作,最后还是成功完成了这次实训。

在实训过程中,因为需要操作的东西很多,难度较大,有时错一步,就会导致后面的结果无法显示,我总结了这次实训中我遇到的问题与解决方法。

1.最开始分割页面时需要插入表格,这里我不能很好的利用设计界面,快捷的插入
表格,只能在源代码中通过代码的方式添加,在后续的程序中出现了插入列与行时整张表格不能很好的呈现,之后我问了老师老师告诉我可以通过设计界面的html分类中的table控件添加表格;
2.数据库的连接出现问题:在不同的电脑上数据库的服务器名称,用户名和密码都
是不同的,所以在编辑数据库连接串时,经常会忘记更改数据库的服务器名称,有些数据库时直接登录的,不需要用户名和密码,这些都会导致数据库的连接失败,所以在不需要用户名与密码时需要在守护据库连接串中添加integrated security=sspi,每次连接数据库时要注意服务器名称的更改;
3.在制作菜单管理页面时,点击菜品类型下拉列表是会出现“drop_taste”有一个
无效SelectedValue,因为它不在项目列表中或者“drop_type”有一个无效SelectedValue,因为它不在项目列表中等这些类似的错误,这是因为下拉列表中的各项数据与数据库中对应的值不相符,只要将下拉列表中的值与数据库相对应就可以解决这个问题;
4.在与数据库有关的语句,例如查询,添加,删除,修改等,经常会出现用户代码
为处理SqlException,“where”附近有语法错误等数据库语句问题,这时候一般都是数据库语句错误,表名、列名、引号错误,只要将数据库语句写对就可以了;
5.在点菜页面,点完菜修改份数之后,出现了用户代码为处理
IndexOutOfRangeException,在位置4处没有任何行,通过老师的检查,发现是没有给gridview控件rowdatabound事件,使droplist无法正确获得数据,继续进行下面的程序;
6.有时候在没有完成一个阶段的程序编写时运行,会出现某些控件关联到一些没有实际程序编写的事件,只要把这些无关的事件删除,就可以进行下面的程序;
这次的实训也有很多的不足,在最后之作员工管理系统时,由于数据库表的不同经常还在写数据库语句时出现表名,列名的错误,因为与菜单管理系统相似,会在写按钮处理代码时,忘记一些语句,以及员工查询与详情的页面不够美观与严谨,会出现两行之间的间距消失等,这一些小不足希望能在接下来的学习中弥补。

总的来说,这次的实训让我受益匪浅,让我认识到了我的很多不足,首先要感谢对我精心指导的老师,帮助我早实训过程中解决了很多我解决不了额度问题,让我能继续完成借来的内容和实训的成功。

这次我收获最大的是让我认识到做程序不能着急,越着急越不利。

把心态摆平稳,从简单做起,不能急于求成。

只要坚持,没有什么是不能过去的。

相关文档
最新文档