餐饮管理方案系统实训报告.docx
《餐饮管理方案系统实训报告.docx》由会员分享,可在线阅读,更多相关《餐饮管理方案系统实训报告.docx(22页珍藏版)》请在冰点文库上搜索。
餐饮管理方案系统实训报告
餐饮管理系统
1、绪论
近年来,随着人们生活水平的不断提高,餐饮业的消费持续增长,竞争越来越激烈。
然而,传统餐饮企业的日常运作是靠人工管理,从原材料入库到客人点单,再到结账基本上由人工完场记录,这样不仅耗费人力资源而且容易导致记录丢失或重复等错误,造成管理水平低下。
2、需求分析
本系统应用计算机对餐饮企业信息进行管理,具有手工管理所无法比拟多的优点,极大地提高了信息管理的效率。
本系统运用MicrosoftSQLServer2005为后台数据库,以C#为前台开发工具,系统实现了前台管理、食物类型管理、食物管理、桌台管理、开台信息、点菜、结账的功能。
餐厅管理部分:
实现菜单类别管理、菜式管理、桌台管理和预订管理。
菜单类别管理:
实现食物类别的添加和删除,删除时要将此食物类别下的食物一并删除(给出用户提示);
菜式管理:
实现菜式的添加和删除;
3、设计
3.1数据库设计
数据表设计
用户表
W_user表:
列名:
类型
说明
备注
Userid
Nvarchar(50)
用户ID
主键
Username
用户名
Useridentity
身份证
User_birthday
Date
生日
Phone
电话
Gender
Int
性别
Useraddress
地址
Usertype
用户类型
0为普通用户,1为超级管理员
Pwd
用户密码
桌子表
W_table表
Tid
桌子编号
Tname
餐桌名
Position
Nvarchar(100)
餐桌位置
Describe
Nvarchar(500)
描述
Status
int
1正在使用,0为空闲
桌子信息w_table
餐桌状态
开台记录(用餐记录)
W_orders表
Ordered
订单ID
_time
用餐时间或者预定用餐时间
Numbers
用餐人数
外键,来自w_table
接待人员
外键,来自W_USER
Amount
Decimal(18,2)
实收金额
客户用餐明细
W_guestfood表
Id
自增
Foodid
外键,来自w_food
Number
数量
Remark
Lineprice
行计算价
服务人员
客户用餐明细信息
W_guestfood
食物编号
系统编号
订单号
行计价
食物类型
W_foodtype表
Typeid
食物类别ID
Foodtype
食物类别名
餐厅食物
W_food表
食物ID
Foodname
名称
Foodprice
价格
Unite
单位
图1业务流程图
图2餐饮管理系统功能结构图
3.2前台设计
3.2.1登陆界面:
功能:
用户可以通过此界面登陆系统
图3.1登陆界面
3.2.2main界面的实现
前台管理,实现各种界面管理,可以通过图片信息查看桌子是否已使用,也可选中图标单击右键选择相应业务
图3.2主界面
3.2.3食物类型管理
可自动添加食物类别,删除食物类别的同时也删除该类别下的食物
图3.3食物类型管理
3.2.4食物管理
可添加删除食物
图3.4食物管理
3.2.5桌台信息
可查看桌子的具体信息及使用状态(0为空闲,1为使用)
图3.5桌台管理
3.2.6开台
此界面可也选择用餐人数及服务员和用餐时间
图3.6开台界面
3.2.7点菜
单击左边菜谱,输入数量选择服务人员,注明备注单击保存即完成点菜功能
图3.7点菜界面
3.2.8结账
根据订单号结账
图3.8结账界面
4、具体实现
前台程序设计
4.1Cdb类:
实现C#与数据库连接,调用相应存储过程
publicclassCdb
{
privatestringappsettingk1=System.Configuration.ConfigurationManager.AppSettings["k1"];
privateSqlConnectionconn=null;
publicCdb()
conn=newSqlConnection(appsettingk1);
}
publicDataSetgetDataset(Stringstorename,SqlParameter[]parameters)
SqlCommandcmd=newSqlCommand(storename,conn);
cmd.CommandType=CommandType.StoredProcedure;
SqlDataAdapterad=newSqlDataAdapter(cmd);
DataSetds=newDataSet();
if(parameters!
=null)
for(inti=0;i{cmd.Parameters.Add(parameters[i]);}}ad.Fill(ds);returnds;}publicintExcuteStore(Stringstorename,SqlParameter[]parameters){conn.Open();SqlCommandcmd=newSqlCommand(storename,conn);cmd.CommandType=CommandType.StoredProcedure;if(parameters!=null){for(inti=0;i{cmd.Parameters.Add(parameters[i]);}}try{cmd.ExecuteNonQuery();return0;}catch(Exceptionk){stringm=k.Message;return-1;}finally{conn.Close();}}}4.2登陆界面:publiclogin(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){if(textUid.Text==""||textPwd.Text==""){MessageBox.Show("请输入用户名和密码");return;}Business.CtablesAdmindb=new_1217.Business.CtablesAdmin();if(db.login(textUid.Text,textPwd.Text)==1){MessageBox.Show("超级用户");this.Hide();Mainm2=newMain();m2.ShowDialog();}if(db.login(textUid.Text,textPwd.Text)==0){MessageBox.Show("普通用户,请通过PID登陆!");}if(db.login(textUid.Text,textPwd.Text)==-1){MessageBox.Show("对不起,您没有访问权限!");} }privatevoidbutton2_Click(objectsender,EventArgse){Application.Exit();}4.3食物类型管理、食物管理、开台、结账//添加食物类型privatevoidbutton1_Click(objectsender,EventArgse){if(textBox1.Text==""){MessageBox.Show("不能为空!");return;}Business.CtablesAdmintb=new_1217.Business.CtablesAdmin();if(tb.addfoodtype(textBox1.Text)==0){MessageBox.Show("添加成功");bindGridView();}}//删除食物类型privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){if(e.ColumnIndex==0){if(MessageBox.Show("确定要删除吗,若删除则会删除该类下所有的菜名!","添加成功"MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Cancel){return;}inttypeid=int.Parse(dataGridView1.SelectedCells[1].Value.ToString());Business.CtablesAdmintb=new_1217.Business.CtablesAdmin();if(tb.delfoodtype(typeid)==0){MessageBox.Show("删除成功!");bindGridView();}else{MessageBox.Show("删除失败!");}}}//添加食物privatevoidbutton1_Click(objectsender,EventArgse){if(textname.Text==""||textunite.Text==""||foodtype.Text==""){MessageBox.Show("填写不完整,请重新输入!");return;}Business.CtablesAdmintb1=new_1217.Business.CtablesAdmin();Business.CtablesAdmintb2=new_1217.Business.CtablesAdmin();intc=int.Parse(tb2.atypeid(foodtype.Text).Rows[0][0].ToString());if(tb1.addfood(c,textname.Text,textunite.Text,textprice.ToString())==0){MessageBox.Show("食物添加成功!");bindGridView1();}else{MessageBox.Show("食物添加失败!");}}//删除食物?privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){dataGridView1.AutoGenerateColumns=false;if(MessageBox.Show("确定要删除吗?”,”提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Cancel){return;}else{intfoodid=int.Parse(dataGridView1.SelectedCells[1].Value.ToString());Business.CtablesAdmintb=new_1217.Business.CtablesAdmin();if(tb.delfoodtype(foodid)==0){MessageBox.Show("删除成功");bindGridView1();}else{MessageBox.Show("删除失败");}}}//开台privatevoidbutton1_Click(objectsender,EventArgse){if(numbers.Text==""){MessageBox.Show("请输入用餐人数");}intuid=int.Parse(comboBox1.SelectedValue.ToString());if(uid==0){MessageBox.Show("请选择服务员");return;}Business.CtablesAdmint=newCtablesAdmin();t.usetable1(dateTimePicker1.Text,int.Parse(numbers.Text),_tid,comboBox1.SelectedValue.ToString());t.upstatus(_tid);MessageBox.Show("保存成功");this.Close();}privatevoid取消开台ToolStripMenuItem_Click(objectsender,EventArgse){if(listView1.SelectedItems.Count!=1){MessageBox.Show("请选择一张桌子");return;}stringtid=listView1.SelectedItems[0].SubItems[1].Text;Business.CtablesAdmint=new_1217.Business.CtablesAdmin();if(t.cancleusetable(tid)==0){Business.CtablesAdminb=newBusiness.CtablesAdmin();b.cancleusetable(tid);b.updatestatus(tid);MessageBox.Show("取消成功");}} 4.4点菜、结账//点菜privatevoidbutton2_Click(objectsender,EventArgse){if(textBox2.Text==""||textBox3.Text==""||textBox4.Text==""||textBox5.Text==""){MessageBox.Show("请填写完整");return;}if(comboBox1.Text=="请选择"){MessageBox.Show("请填写服务人员");return;}Business.CtablesAdmint=new_1217.Business.CtablesAdmin();dataGridView1.DataSource=t.getorder(int.Parse(this.id.ToString()));common.Cdbc=newcommon.Cdb();DataSetdt=c.getDataset("getorder",newSqlParameter[]{newSqlParameter("@ordered",id)});common.Cdbss=newcommon.Cdb();intaa=int.Parse(ss.getDataset("addorder",newSqlParameter[]{newSqlParameter("@tid",id)}).Tables[0].Rows[0][0].ToString());//获取订单号?floatlineprice=float.Parse(textBox4.Text.ToString())*int.Parse(textBox5.Text.ToString());intfoodid=int.Parse(treeView1.SelectedNode.Tag.ToString());stringud=comboBox1.SelectedValue.ToString();t.guestfood(foodid,int.Parse(textBox5.Text),textBox6.Text,aa,lineprice.ToString(),ud);MessageBox.Show("保存成功");}//结账privatevoidbutton1_Click(objectsender,EventArgse){Business.CtablesAdmint=newBusiness.CtablesAdmin();ints=int.Parse(t.selectordered(ttid).Rows[0][0].ToString());decimalb=decimal.Parse(t.getsum(s).Rows[0][0].ToString());Business.CtablesAdmintt=newBusiness.CtablesAdmin();tt.updatestatus(ttid);tt.jiezhang(b,s);MessageBox.Show("结账成功!");} 5、总结此餐饮管理系统经过三个周基本完成,实现了餐饮管理系统的基本功能,操作简便方便,基本实现了前台管理、食物类型管理、食物管理、开台信息、点菜、结账等基本功能。经过这三周的实训,培养了我动手创新的能力,在实践中检验了我对知识的掌握能力以及运用能力。同时通过本次实训课让我了解解决实际问题的过程,并提高了我的专业技能,使我把所学的理论知识与实际能力紧密的结合在一起。最重要的是我初步具有了科研意识,我的查找资料,运用资料,完成工程的能力都有了一定提高,为我后继课程的学习打下了坚实的基础。这次实训我的系统没有做到最完善,我认为是我对专业知识的掌握还不够,经过这次实训,我认识到自己的很多不足,需要以后加大努力,弥补缺陷。以后我一定会努力,继续学习,是自己能够更加完善。6、参考文献《数据库技术及应用》中国石油大学出版社《C#从入门到精通》清华大学出版社
cmd.Parameters.Add(parameters[i]);
ad.Fill(ds);
returnds;
publicintExcuteStore(Stringstorename,SqlParameter[]parameters)
conn.Open();
for(inti=0;i{cmd.Parameters.Add(parameters[i]);}}try{cmd.ExecuteNonQuery();return0;}catch(Exceptionk){stringm=k.Message;return-1;}finally{conn.Close();}}}4.2登陆界面:publiclogin(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){if(textUid.Text==""||textPwd.Text==""){MessageBox.Show("请输入用户名和密码");return;}Business.CtablesAdmindb=new_1217.Business.CtablesAdmin();if(db.login(textUid.Text,textPwd.Text)==1){MessageBox.Show("超级用户");this.Hide();Mainm2=newMain();m2.ShowDialog();}if(db.login(textUid.Text,textPwd.Text)==0){MessageBox.Show("普通用户,请通过PID登陆!");}if(db.login(textUid.Text,textPwd.Text)==-1){MessageBox.Show("对不起,您没有访问权限!");} }privatevoidbutton2_Click(objectsender,EventArgse){Application.Exit();}4.3食物类型管理、食物管理、开台、结账//添加食物类型privatevoidbutton1_Click(objectsender,EventArgse){if(textBox1.Text==""){MessageBox.Show("不能为空!");return;}Business.CtablesAdmintb=new_1217.Business.CtablesAdmin();if(tb.addfoodtype(textBox1.Text)==0){MessageBox.Show("添加成功");bindGridView();}}//删除食物类型privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){if(e.ColumnIndex==0){if(MessageBox.Show("确定要删除吗,若删除则会删除该类下所有的菜名!","添加成功"MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Cancel){return;}inttypeid=int.Parse(dataGridView1.SelectedCells[1].Value.ToString());Business.CtablesAdmintb=new_1217.Business.CtablesAdmin();if(tb.delfoodtype(typeid)==0){MessageBox.Show("删除成功!");bindGridView();}else{MessageBox.Show("删除失败!");}}}//添加食物privatevoidbutton1_Click(objectsender,EventArgse){if(textname.Text==""||textunite.Text==""||foodtype.Text==""){MessageBox.Show("填写不完整,请重新输入!");return;}Business.CtablesAdmintb1=new_1217.Business.CtablesAdmin();Business.CtablesAdmintb2=new_1217.Business.CtablesAdmin();intc=int.Parse(tb2.atypeid(foodtype.Text).Rows[0][0].ToString());if(tb1.addfood(c,textname.Text,textunite.Text,textprice.ToString())==0){MessageBox.Show("食物添加成功!");bindGridView1();}else{MessageBox.Show("食物添加失败!");}}//删除食物?privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){dataGridView1.AutoGenerateColumns=false;if(MessageBox.Show("确定要删除吗?”,”提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Cancel){return;}else{intfoodid=int.Parse(dataGridView1.SelectedCells[1].Value.ToString());Business.CtablesAdmintb=new_1217.Business.CtablesAdmin();if(tb.delfoodtype(foodid)==0){MessageBox.Show("删除成功");bindGridView1();}else{MessageBox.Show("删除失败");}}}//开台privatevoidbutton1_Click(objectsender,EventArgse){if(numbers.Text==""){MessageBox.Show("请输入用餐人数");}intuid=int.Parse(comboBox1.SelectedValue.ToString());if(uid==0){MessageBox.Show("请选择服务员");return;}Business.CtablesAdmint=newCtablesAdmin();t.usetable1(dateTimePicker1.Text,int.Parse(numbers.Text),_tid,comboBox1.SelectedValue.ToString());t.upstatus(_tid);MessageBox.Show("保存成功");this.Close();}privatevoid取消开台ToolStripMenuItem_Click(objectsender,EventArgse){if(listView1.SelectedItems.Count!=1){MessageBox.Show("请选择一张桌子");return;}stringtid=listView1.SelectedItems[0].SubItems[1].Text;Business.CtablesAdmint=new_1217.Business.CtablesAdmin();if(t.cancleusetable(tid)==0){Business.CtablesAdminb=newBusiness.CtablesAdmin();b.cancleusetable(tid);b.updatestatus(tid);MessageBox.Show("取消成功");}} 4.4点菜、结账//点菜privatevoidbutton2_Click(objectsender,EventArgse){if(textBox2.Text==""||textBox3.Text==""||textBox4.Text==""||textBox5.Text==""){MessageBox.Show("请填写完整");return;}if(comboBox1.Text=="请选择"){MessageBox.Show("请填写服务人员");return;}Business.CtablesAdmint=new_1217.Business.CtablesAdmin();dataGridView1.DataSource=t.getorder(int.Parse(this.id.ToString()));common.Cdbc=newcommon.Cdb();DataSetdt=c.getDataset("getorder",newSqlParameter[]{newSqlParameter("@ordered",id)});common.Cdbss=newcommon.Cdb();intaa=int.Parse(ss.getDataset("addorder",newSqlParameter[]{newSqlParameter("@tid",id)}).Tables[0].Rows[0][0].ToString());//获取订单号?floatlineprice=float.Parse(textBox4.Text.ToString())*int.Parse(textBox5.Text.ToString());intfoodid=int.Parse(treeView1.SelectedNode.Tag.ToString());stringud=comboBox1.SelectedValue.ToString();t.guestfood(foodid,int.Parse(textBox5.Text),textBox6.Text,aa,lineprice.ToString(),ud);MessageBox.Show("保存成功");}//结账privatevoidbutton1_Click(objectsender,EventArgse){Business.CtablesAdmint=newBusiness.CtablesAdmin();ints=int.Parse(t.selectordered(ttid).Rows[0][0].ToString());decimalb=decimal.Parse(t.getsum(s).Rows[0][0].ToString());Business.CtablesAdmintt=newBusiness.CtablesAdmin();tt.updatestatus(ttid);tt.jiezhang(b,s);MessageBox.Show("结账成功!");} 5、总结此餐饮管理系统经过三个周基本完成,实现了餐饮管理系统的基本功能,操作简便方便,基本实现了前台管理、食物类型管理、食物管理、开台信息、点菜、结账等基本功能。经过这三周的实训,培养了我动手创新的能力,在实践中检验了我对知识的掌握能力以及运用能力。同时通过本次实训课让我了解解决实际问题的过程,并提高了我的专业技能,使我把所学的理论知识与实际能力紧密的结合在一起。最重要的是我初步具有了科研意识,我的查找资料,运用资料,完成工程的能力都有了一定提高,为我后继课程的学习打下了坚实的基础。这次实训我的系统没有做到最完善,我认为是我对专业知识的掌握还不够,经过这次实训,我认识到自己的很多不足,需要以后加大努力,弥补缺陷。以后我一定会努力,继续学习,是自己能够更加完善。6、参考文献《数据库技术及应用》中国石油大学出版社《C#从入门到精通》清华大学出版社
try
cmd.ExecuteNonQuery();
return0;
catch(Exceptionk)
stringm=k.Message;
return-1;
finally
conn.Close();
4.2登陆界面:
publiclogin()
InitializeComponent();
privatevoidbutton1_Click(objectsender,EventArgse)
if(textUid.Text==""||textPwd.Text=="")
MessageBox.Show("请输入用户名和密码");
return;
Business.CtablesAdmindb=new_1217.Business.CtablesAdmin();
if(db.login(textUid.Text,textPwd.Text)==1)
MessageBox.Show("超级用户");
this.Hide();
Mainm2=newMain();
m2.ShowDialog();
if(db.login(textUid.Text,textPwd.Text)==0)
MessageBox.Show("普通用户,请通过PID登陆!
");
if(db.login(textUid.Text,textPwd.Text)==-1)
MessageBox.Show("对不起,您没有访问权限!
privatevoidbutton2_Click(objectsender,EventArgse)
Application.Exit();
4.3食物类型管理、食物管理、开台、结账
//添加食物类型
if(textBox1.Text=="")
MessageBox.Show("不能为空!
Business.CtablesAdmintb=new_1217.Business.CtablesAdmin();
if(tb.addfoodtype(textBox1.Text)==0)
MessageBox.Show("添加成功");
bindGridView();
//删除食物类型
privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse)
if(e.ColumnIndex==0)
if(MessageBox.Show("确定要删除吗,若删除则会删除该类下所有的菜名!
","添加成功"MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Cancel)
inttypeid=int.Parse(dataGridView1.SelectedCells[1].Value.ToString());
if(tb.delfoodtype(typeid)==0)
MessageBox.Show("删除成功!
else
MessageBox.Show("删除失败!
//添加食物
if(textname.Text==""||textunite.Text==""||foodtype.Text=="")
MessageBox.Show("填写不完整,请重新输入!
Business.CtablesAdmintb1=new_1217.Business.CtablesAdmin();
Business.CtablesAdmintb2=new_1217.Business.CtablesAdmin();
intc=int.Parse(tb2.atypeid(foodtype.Text).Rows[0][0].ToString());
if(tb1.addfood(c,textname.Text,textunite.Text,textprice.ToString())==0)
MessageBox.Show("食物添加成功!
bindGridView1();
MessageBox.Show("食物添加失败!
//删除食物?
dataGridView1.AutoGenerateColumns=false;
if(MessageBox.Show("确定要删除吗?
”,”提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Cancel)
intfoodid=int.Parse(dataGridView1.SelectedCells[1].Value.ToString());
if(tb.delfoodtype(foodid)==0)
MessageBox.Show("删除成功");
MessageBox.Show("删除失败");
//开台
if(numbers.Text=="")
MessageBox.Show("请输入用餐人数");
intuid=int.Parse(comboBox1.SelectedValue.ToString());
if(uid==0)
MessageBox.Show("请选择服务员");
Business.CtablesAdmint=newCtablesAdmin();
t.usetable1(dateTimePicker1.Text,int.Parse(numbers.Text),_tid,comboBox1.SelectedValue.ToString());
t.upstatus(_tid);
MessageBox.Show("保存成功");
this.Close();
privatevoid取消开台ToolStripMenuItem_Click(objectsender,EventArgse)
if(listView1.SelectedItems.Count!
=1)
MessageBox.Show("请选择一张桌子");
stringtid=listView1.SelectedItems[0].SubItems[1].Text;
Business.CtablesAdmint=new_1217.Business.CtablesAdmin();
if(t.cancleusetable(tid)==0)
Business.CtablesAdminb=newBusiness.CtablesAdmin();
b.cancleusetable(tid);
b.updatestatus(tid);
MessageBox.Show("取消成功");
4.4点菜、结账
//点菜
if(textBox2.Text==""||textBox3.Text==""||textBox4.Text==""||textBox5.Text=="")
MessageBox.Show("请填写完整");
if(comboBox1.Text=="请选择")
MessageBox.Show("请填写服务人员");
dataGridView1.DataSource=t.getorder(int.Parse(this.id.ToString()));
common.Cdbc=newcommon.Cdb();
DataSetdt=c.getDataset("getorder",newSqlParameter[]{newSqlParameter("@ordered",id)});
common.Cdbss=newcommon.Cdb();
intaa=int.Parse(ss.getDataset("addorder",newSqlParameter[]{newSqlParameter("@tid",id)}).Tables[0].Rows[0][0].ToString());//获取订单号?
floatlineprice=float.Parse(textBox4.Text.ToString())*int.Parse(textBox5.Text.ToString());
intfoodid=int.Parse(treeView1.SelectedNode.Tag.ToString());
stringud=comboBox1.SelectedValue.ToString();
t.guestfood(foodid,int.Parse(textBox5.Text),textBox6.Text,aa,lineprice.ToString(),ud);
//结账
Business.CtablesAdmint=newBusiness.CtablesAdmin();
ints=int.Parse(t.selectordered(ttid).Rows[0][0].ToString());
decimalb=decimal.Parse(t.getsum(s).Rows[0][0].ToString());
Business.CtablesAdmintt=newBusiness.CtablesAdmin();
tt.updatestatus(ttid);
tt.jiezhang(b,s);
MessageBox.Show("结账成功!
5、总结
此餐饮管理系统经过三个周基本完成,实现了餐饮管理系统的基本功能,操作简便方便,基本实现了前台管理、食物类型管理、食物管理、开台信息、点菜、结账等基本功能。
经过这三周的实训,培养了我动手创新的能力,在实践中检验了我对知识的掌握能力以及运用能力。
同时通过本次实训课让我了解解决实际问题的过程,并提高了我的专业技能,使我把所学的理论知识与实际能力紧密的结合在一起。
最重要的是我初步具有了科研意识,我的查找资料,运用资料,完成工程的能力都有了一定提高,为我后继课程的学习打下了坚实的基础。
这次实训我的系统没有做到最完善,我认为是我对专业知识的掌握还不够,经过这次实训,我认识到自己的很多不足,需要以后加大努力,弥补缺陷。
以后我一定会努力,继续学习,是自己能够更加完善。
6、参考文献
《数据库技术及应用》中国石油大学出版社
《C#从入门到精通》清华大学出版社
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2