数据库系统设计实验报告.docx
《数据库系统设计实验报告.docx》由会员分享,可在线阅读,更多相关《数据库系统设计实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
数据库系统设计实验报告
数据库系统设计实验报告
课程:
数据库系统原理与应用
*******
专业:
13级计本班
学号:
************
*******
(一)数据库系统设计
一、实验目的
掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方法,并加深对数据库系统概念和特点的理解。
二、实验内容
设计一个简单的客户点餐数据库应用系统,完成设计报告。
重点为数据库系统结构特性设计部分,包括需求分析、概念设计和逻辑设计。
三、实验原理、方法
利用数据库设计的4个阶段:
需求分析(分析用户要求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。
概念模型设计时采用自底向上的方法,即自顶向下地进行需求分析,然后再自底向上地设计概念结构,和自底向上的设计方法。
四、实验步骤
1、系统需求分析
1.1操作环境与软件
操作环境:
Windows7
数据库软件:
SQLserver2008
系统编辑软件:
VS2010
1.2系统设计与功能分析
系统设计:
本系统用于客户与订单在点餐上的联系信息
功能分析:
用于输入和查询客户的点餐情况和餐厅的菜单信息
2、概念结构设计(E-R图)
3、逻辑结构设计
3.1管理员表
Field
Type
key
NULL
用户名
nchar(10)
PRI
NO
密码
Nchar(6)
NO
备注
Yes
3.2用户表
Field
Type
key
NULL
用户名
nchar(10)
PRI
NO
密码
Nchar(6)
NO
姓名
nchar(10)
NO
性别
nchar
(1)
NO
电话
nchar(11)
NO
地址
nvarchar(50)
NO
备注
nvarchar(50)
Yes
3.3菜单表
Field
Type
key
NULL
菜名
nchar(10)
PRI
NO
价格
money
NO
剩余量
int
NO
客户评价
nvarchar(50)
Yes
3.4订单表
Field
Type
key
NULL
订单号
int
PRI
NO
菜名
nchar(10)
NO
点餐数量
int
NO
姓名
nchar(10)
NO
地址
nvarchar(50)
NO
4、主要步骤
(1)登录窗体:
验证用户登录
定义一个连接数据库的类:
classClass1
{
publicstaticDataRowlogin;
publicstaticboolisman;
publicstaticvoidcheckuser(string用户名,string密码)
{
SqlConnectioncn=newSqlConnection(Properties.Settings.Default.xkSetting);
SqlDataAdapterda=newSqlDataAdapter("SELECT*FROMguanliWHERE用户名=@用户名AND密码=@密码",cn);
da.SelectCommand.Parameters.Add("@用户名",SqlDbType.NVarChar,10).Value=用户名;
da.SelectCommand.Parameters.Add("@密码",SqlDbType.NVarChar,6).Value=密码;
DataSetds=newDataSet();
da.Fill(ds);
if(ds.Tables[0].Rows.Count>0)
{
login=ds.Tables[0].Rows[0];
isman=true;
}
else
login=null;
}
publicstaticvoidyonghu(stringxinmin,string密码)
{
SqlConnectioncn=newSqlConnection(Properties.Settings.Default.xkSetting);
SqlDataAdapterda=newSqlDataAdapter("SELECT*FROMyonghuWHERExinmin=@xinminAND密码=@密码",cn);
da.SelectCommand.Parameters.Add("@xinmin",SqlDbType.NVarChar,10).Value=xinmin;
da.SelectCommand.Parameters.Add("@密码",SqlDbType.NVarChar,6).Value=密码;
DataSetds=newDataSet();
da.Fill(ds);
if(ds.Tables[0].Rows.Count>0)
{
login=ds.Tables[0].Rows[0];
isman=true;
}
else
login=null;
}
}
}
输入用户名和密码,选择管理员选项,点击登录:
验证代码如下:
publicForm1()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(checkBox1.Checked)
Class1.checkuser(textBox1.Text,textBox2.Text);
else
Class1.yonghu(textBox1.Text,textBox2.Text);
if(Class1.login==null)
MessageBox.Show("密码错误","登录",MessageBoxButtons.OK,MessageBoxIcon.Information);
else
Close();
Program.name=textBox1.Text;
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
Close();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.textBox1.Text="";
this.textBox2.Text="";
}
privatevoidForm1_Load(objectsender,EventArgse)
{
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
zhucef=newzhuce();
f.Show();
}
验证出错截图:
(2)设计主窗体:
主窗体代码:
publicpartialclassForm2:
Form
{
DataSetds=newDataSet();
publicForm2()
{
InitializeComponent();
}
privatevoidForm2_Load(objectsender,EventArgse)
{
//TODO:
这行代码将数据加载到表“dsxk.kuaican”中。
您可以根据需要移动或删除它。
this.kuaicanTableAdapter.Fill(this.dsxk.kuaican);
//TODO:
这行代码将数据加载到表“dsxk.xican”中。
您可以根据需要移动或删除它。
this.xicanTableAdapter.Fill(this.dsxk.xican);
//TODO:
这行代码将数据加载到表“dsxk.wodedindan”中。
您可以根据需要移动或删除它。
this.wodedindanTableAdapter.Fill(this.dsxk.wodedindan);
//TODO:
这行代码将数据加载到表“dsxk.wodedindan”中。
您可以根据需要移动或删除它。
this.wodedindanTableAdapter.Fill(this.dsxk.wodedindan);
//TODO:
这行代码将数据加载到表“dsxk.zhongcan”中。
您可以根据需要移动或删除它。
this.zhongcanTableAdapter.Fill(this.dsxk.zhongcan);
panel1.Visible=false;
panel2.Visible=false;
panel3.Visible=false;
panel4.Visible=false;
panel5.Visible=true;
}
privatevoidlabel1_Click(objectsender,EventArgse)
{
}
privatevoid首页ToolStripMenuItem_Click(objectsender,EventArgse)
{
panel1.Visible=false;
panel2.Visible=false;
panel3.Visible=false;
panel4.Visible=false;
panel5.Visible=true;
}
privatevoid退出登录ToolStripMenuItem_Click(objectsender,EventArgse)
{
Form1myf=newForm1();
myf.Show();
}
privatevoid中餐ToolStripMenuItem_Click(objectsender,EventArgse)
{
panel1.Visible=true;
panel2.Visible=false;
panel3.Visible=false;
panel4.Visible=false;
panel5.Visible=false;
}
privatevoid我的订单ToolStripMenuItem_Click(objectsender,EventArgse)
{
panel1.Visible=false;
panel2.Visible=false;
panel3.Visible=false;
panel4.Visible=true;
panel5.Visible=false;
}
privatevoid退出登录ToolStripMenuItem1_Click(objectsender,EventArgse)
{
Close();
}
privatevoidtoolStripButton1_Click(objectsender,EventArgse)
{
Form3a=newForm3();
a.Show();
}
privatevoid西餐ToolStripMenuItem_Click(objectsender,EventArgse)
{
panel1.Visible=false;
panel2.Visible=true;
panel3.Visible=false;
panel4.Visible=false;
panel5.Visible=false;
}
privatevoid酒水ToolStripMenuItem_Click(objectsender,EventArgse)
{
panel1.Visible=false;
panel2.Visible=false;
panel3.Visible=true;
panel4.Visible=false;
panel5.Visible=false;
}
privatevoidtoolStripButton2_Click(objectsender,EventArgse)
{
Form4a=newForm4();
a.Show();
}
privatevoid个人信息ToolStripMenuItem_Click(objectsender,EventArgse)
{
Form5a=newForm5();
a.Show();
}
(3)建立各子窗体:
1.菜单项下的子窗体显示,我选用的是PENER控件,方便在主窗体内刷新数据。
2.
3.
4.
privatevoidForm5_Load(objectsender,EventArgse)
{
SqlDataAdapterOleDat;
DataTabledt;
SqlConnectioncn=newSqlConnection(Properties.Settings.Default.xkSetting);
cn.Open();
dt=newDataTable();
stringmysql="select*fromyonghuwhere用户名='"+Program.name+"'";
OleDat=newSqlDataAdapter(mysql,cn);
OleDat.Fill(dt);
this.textBox1.Text=dt.Rows[0][1].ToString();
this.textBox2.Text=dt.Rows[0][2].ToString();
this.textBox3.Text=dt.Rows[0][3].ToString();
this.textBox4.Text=dt.Rows[0][4].ToString();
this.textBox5.Text=dt.Rows[0][5].ToString();
this.textBox6.Text=dt.Rows[0][6].ToString();
this.textBox7.Text=dt.Rows[0][7].ToString();
(3)创建数据集
(4)管理员权限:
更新点餐菜单,管理注册用户
代码:
publicForm3()
{
InitializeComponent();
}
privatevoidzhongcanBindingNavigatorSaveItem_Click(objectsender,EventArgse)
{
this.Validate();
this.zhongcanBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.dsxk);
}
privatevoidForm3_Load(objectsender,EventArgse)
{
//TODO:
这行代码将数据加载到表“dsxk.xican”中。
您可以根据需要移动或删除它。
this.xicanTableAdapter.Fill(this.dsxk.xican);
//TODO:
这行代码将数据加载到表“dsxk.zhongcan”中。
您可以根据需要移动或删除它。
this.zhongcanTableAdapter.Fill(this.dsxk.zhongcan);
}
管理用户代码:
publicpartialclassForm4:
Form
{
publicForm4()
{
InitializeComponent();
}
privatevoidyonghuBindingNavigatorSaveItem_Click(objectsender,EventArgse)
{
this.Validate();
this.yonghuBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.dsxk);
}
privatevoidForm4_Load(objectsender,EventArgse)
{
//TODO:
这行代码将数据加载到表“dsxk.yonghu”中。
您可以根据需要移动或删除它。
this.yonghuTableAdapter.Fill(this.dsxk.yonghu);
}
}
(5)注册新用户:
验证注册信息代码:
privatevoidbutton1_Click(objectsender,EventArgse)
{
string用户名=textBox1.Text.Trim();
string密码=textBox2.Text.Trim();
stringxinmin=textBox3.Text.Trim();
stringxinbie=textBox4.Text.Trim();
stringnianlin=textBox5.Text.Trim();
stringdianhua=textBox6.Text.Trim();
stringQQ=textBox7.Text.Trim();
stringbeizhu=textBox8.Text.Trim();
SqlConnectioncn=newSqlConnection(Properties.Settings.Default.xkSetting);
stringsql=string.Format("updateyonghuset用户名='{0}',密码='{1}',xinbie='{2}',nianlin='{3}',dianhua='{4}',QQ='{5}',beizhu='{6}'wherexinmin='{7}'",用户名,密码,xinbie,nianlin,dianhua,QQ,beizhu,xinmin);
SqlCommandcmd=newSqlCommand(sql,cn);
cn.Open();
intn=Convert.ToInt32(cmd.ExecuteNonQuery());
if(n!
=1)
{
MessageBox.Show("更新失败");
}
else
{
MessageBox.Show("更新成功");
}
6、实验总结
通过本次实验大作业,首先我深刻认识到自己在编程各方面的不足,其次,值得肯定的是自己的坚忍不拔的学习耐力与