数据库原理课程设计报告
题 目: 物流公司管理系统 学生姓名: 组员: 学 号: 班 级: 院 系: 计算机科学与信息学院 专业年级: 计算机科学与技术2010 级
2013 年 1 月 10 日
精选资料
----------------------------
一、 需求分析
在经济日益发展的今天,生活节奏越来越快,所以迎来了电子信息时代。于此同时,电子商务行业也如火如荼发展起来,Online shopping也越来越普及。这就又带动一个行业的发展,物流。要适应时代的发展,物流公司必须得有一套自己的管理方案以便跟上时代的快节奏。针对这个,我们便模拟开发一个物流公司管理系统。
在该系统中,我们提供如下功能,用户登录该系统过后,便可以对信息进行操作。
用户登录:
管理员登陆登陆成功?提示错误信息
GLYGno 该功能要求在数据库当中有管理员的用户名与密码的存 Identifier_1 对信息的查询。实现对客户信息,员工信息,仓库信息,收货人信息,存储信息,配送信息,货单信息的查询。这时候需要在数据库中存储相应的表用以记录这些信息。与此同 精选资料 ---------------------------- 时还提供对以上信息的查询,添加,修改以及删除功能。以上操作会同时影响数据库里面的数据。 业务流程图如下所示: 功能选择查询添加删除修改 以上的查询以及增删改都有针对每类信息。 客户信息增删改以及查询的流程图如下所示: 精选资料 ---------------------------- 录入客户信息添加删除删除客户信息修改客户信息查询数据库查询修改查询查询客户信息 货物信息的操作流程图如下所示: 录入货物信息添加删除删除货物信息修改货物信息查询数据库查询修改查询查询货物信息 其他信息的操作流程图和以上两种类似。 (3)只有该系统的管理员才可以对该系统的信息进行查询 精选资料 ---------------------------- 以及增删改。另外实体内有外码的必须满足参照完整性。 二、概念结构设计 管理员表的结构设计如下: GLYGno 进行登录时的登录密码。Gname用以标记管理员的名字以及Gsex管理员的性别。 各实体以及它们之间的联系如下图所示: SHRSHno SHR表记录的是收货人的情况,其中SHno是收货人的 精选资料 ---------------------------- 标号,用以唯一标示一个收货人,其中标记了收货人姓名,性别,电话以及地址。CK记录的是仓库的情况,其中记录了该仓库的以存储数量和仓库总容量。YG表存储的是该物流公司员工的信息,Yno是该表的主码,其中记录了员工姓名,性别,电话号码以及员工职务。KH记录的是该物流公司的客户。Kno是客户的主码,表中主要记录客户姓名,性别,电话号码,地质以及该客户的身份证号。HW记录的是存在于该物流公司的货物,Hno是货物的主码。记录了货物名称,数量,类型以及重量。还有一个由客户提交由员工处理的HD,Hno是他的唯一标示。其中记录了此次货单名称以及应付金额。 以上模型的正确性已由powerdesigner验证,验证结果如下: 精选资料 ---------------------------- 二、 逻辑结构设计 (1)模式设计: 在该系统中用到的关系模式如下所示(其中主码加下划线表示,外码用斜体表示): GLY(Gno,Gname,Gsex,Gpwd); KH(Kno,Kname,Ksex,Ktel,Kadr,KID); YG(Yno,Yname,Ytel,Ysex,Yjob); HW(HWno,Hname,Htype,Hnum,Hweight); SHR(SHno,SHname,SHsex,SHtel,SHadr); CK(Cno,Cname,Ccapity); HD(Hno,Hname,Cash,SHno,Kno,Yno,HWno); CC(CCno,CCtime,CCnum,CCoutdate,CCoutnum,Yno,Cno,HWno);Transport(Trano,Acptime,Sendtime,HWnam e,How,SHno,Yno,Cno); GLY表:(管理员) 属性名 存储代码 管理员编号 姓名 e 性别 Gsex char 精选资料 类型 长度 备注 Gno char 0 1管理员编号,主码 2管理员姓名 0 2 管理员性别(男、Gnamchar ---------------------------- 女) 密码 Gpwd char 0 KH表:(客户) 属性名 存储代码 客户编号 姓名 e 性别 电话 Ksex Ktel char char 0 地址 Kadr char 0 身份证号 YG表:(员工) 属性名 存储代码 员工编Yno char 1员工编号,主码 类型 长度 备注 KID char 0 3客户身份证号 2客户地址 Knamchar 0 2 性别(男、女) 2电话号码 Kno char 0 2姓名 1客户编号,主码 类型 长度 备注 1管理员密码 精选资料 ---------------------------- 号 姓名 e 性别 电话 Ysex Ytel char char Ynamchar 0 2姓名 0 2 性别(男、女) 2电话号码 0 职务 Yjob char 0 1员工职务 HW表:(货物) 属性名 存储代码 货物编号 名称 HWname 类型 HWdept 数量 HWnum 重量 HWweight char 0 char 0 2货物重量 2货物数量 char char 0 2 货物类型 HWno char 0 2货物名称 1货物编号,主码 类型 长度 备注 精选资料 ---------------------------- SHR表:(收货人) 属性名 存储代码 收货人编号 姓名 SHname 性别 电话 SHsex GSHel char char 0 地址 SHadr char 0 CK表:(仓库) 属性名 存储代码 仓库编号 名称 e 容量 y HD表:(货单) 精选资料 类型 长度 备注 SHno char 0 char 0 1收货人编号,主码 2收货人姓名 2 性别(男、女) 2电话号码 2收货人地址 类型 长度 备注 Cno char 0 1仓库编号,主码 Cnamchar 0 2仓库名称 Ccapitchar 0 2仓库容量 ---------------------------- 属性名 存储代码 类型 长度 备注 货单编号 名称 e 运费总价 收货人编号 客户编号 员工编号 货物编号 Hno char 0 1货单编号,主码 Hnamchar 0 2货单名称 Cost char 0 1运费 SHno char 0 1外码 Kno char 0 1外码 Yno char 0 1外码 HWno char 0 1外码 CC表:(存储) 属性名 存储代码 存储编号 Hno char 0 1存储编号,主码 类型 长度 备注 精选资料 ---------------------------- 入库时间 入库数量 出库时间 出库数量 员工编号 货物编号 仓库编号 e Hnamchar 0 2入库时间 Cost char 0 1入库数量 SHno char 0 2出库使劲 Kno char 0 1出库数量 Yno char 0 1外码 HWno char 0 1外码 Cno Char 0 1外码 Transport表:(配送) 属性名 存储代码 配送编号 接货时间 Acptime char 0 Hno char 0 2接货时间 1配送编号,主码 类型 长度 备注 精选资料 ---------------------------- 发货时间 名称 e 配送方式 收货人编号 员工编号 仓库编号 Sendtime Tnamchar 0 char 0 2发货时间 1名称 How char 0 1配送方式 SHno char 0 1外码 Yno char 0 1外码 Cno Char 0 1外码 数据字典如下: 1.数据项名:员工编号 数据项含义说明:公司员工编号 别名:Yno 数据类型:char 长度:10 2.数据项名:员工姓名 数据项含义说明:公司员工姓名 别名:Yname 精选资料 ---------------------------- 数据类型:char 长度:10 取值范围:0-10 3.数据项名:员工性别 数据项含义说明:公司员工性别 别名:Ysex 数据类型:char 长度:10 取值范围:0-10 4.数据项名:员工职位 数据项含义说明:公司员工在公司所担任的职务 别名:Yjob 数据类型:char 长度:10 取值范围:0-10 5.数据项名:电话号码 数据项含义说明:公司员工的联系方式 别名:Ytel 数据类型:char 长度:10 6.数据项名:管理员密码 数据项含义说明:公司管理员的登录密码 精选资料 ---------------------------- 别名:Gpwd 数据类型:Varchar(12) 长度:12 取值范围:0-12 7.数据项名:管理员名字 数据项含义说明:公司员工的权限 别名:Gname 数据类型:Varchar10) 长度:10 取值范围:0-10; 8. 数据项名:管理员编号 数据项含义说明:公司管理员用于登陆的用户名 别名: Gno 数据类型:char 长度:10 9. 数据项名:性别 数据项含义说明:管理员性别 别名: Gsex 数据类型:char 长度:2 10.数据项名:客户编号 数据项含义说明:公司客户编号 精选资料 ---------------------------- 别名:Kno 数据类型:char 长度:10 11.数据项名:客户姓名 数据项含义说明:公司客户姓名 别名:Kname 数据类型:char 长度:10 取值范围:0-10 12.数据项名:客户性别 数据项含义说明:公司客户性别 别名:Ksex 数据类型:char 长度:10 取值范围:0-10 13.数据项名:电话号码 数据项含义说明:公司客户的联系方式 别名:Ktel 数据类型:char 长度:10 14.数据项名: 地址 数据项含义说明: 公司客户地址 精选资料 ---------------------------- 别名: Kadr 数据类型:char 长度: 10 15. 数据项名:身份证号 数据项含义说明: 客户的身份证号 别名: KID 数据类型:char 长度:20 16.数据项名:货物编号 数据项含义说明:货物的标号 别名: HWno 数据类型: char 长度:10 17. 数据项名:名称 数据项含义说明:货物名称 别名: HWname 数据类型: char 长度:10 18. 数据项名: 类型 数据项含义说明:货物类型 别名: Htype 数据类型: char 精选资料 ---------------------------- 长度:10 19. 数据项名: 数量 数据项含义说明: 该货物目前还有数量 别名: HWnum 数据类型:char 长度:10 20. 数据项名:重量 数据项含义说明: 该货物单件重量 别名: Hweight 数据类型: int 长度:8 21.数据项名:收货人编号 数据项含义说明:收货人编号 别名:SHno 数据类型:char 长度:10 22.数据项名:收货人姓名 数据项含义说明:收货人姓名 别名:SHname 数据类型:char 长度:10 取值范围:0-10 精选资料 ---------------------------- 23.数据项名:性别 数据项含义说明:收货人性别 别名:SHsex 数据类型:char 长度:10 取值范围:0-10 24.数据项名:电话号码 数据项含义说明:收货人的联系方式 别名:SHtel 数据类型:char 长度:10 25.数据项名: 地址 数据项含义说明: 收货人地址 别名: SHadr 数据类型:char 长度: 10 26. 数据项名: 编号 数据项含义说明: 仓库编号 别名: Cno 数据类型:char 长度:10 27. 数据项名: 名称 精选资料 ---------------------------- 数据项含义说明: 仓库名称 别名: Cname 数据类型: char 长度:10 28. 数据项名:容量 数据项含义说明: 仓库容量 别名:Ccapity 数据类型: int 长度:16 29. 数据项名: 货单编号 数据项含义说明: 货单编号 别名: Hno 数据类型:char 长度:10 30. 数据项名: 名称 数据项含义说明: 货单名称 别名: Hname 数据类型: char 长度:10 31. 数据项名:数量 数据项含义说明:货单上货物的数量 别名: Hnum 精选资料 ---------------------------- 数据类型: int 32. 数据项名: 运费总价 数据项含义说明: 运费的价格 别名: Cash 数据类型: int 33. 数据项名: 存储编号 数据项含义说明: 存储编号 别名: CCno 数据类型:char 长度:10 34. 数据项名: 入库时间 数据项含义说明: 存入仓库的时间 别名: CCtime 数据类型:data 35. 数据项名: 出库时间 数据项含义说明: 取出仓库的时间 别名: CCouttime 数据类型:data 36. 数据项名: 入库数量 数据项含义说明: 存入仓库的数量 别名: CCnum 数据类型:int 精选资料 ---------------------------- 37. 数据项名: 出库数量 数据项含义说明: 取出的数量 别名: CCoutnum 数据类型:int 38. 数据项名: 配送编号 数据项含义说明:此次配送的编号 别名: Trano 数据类型:char 长度:10 39. 数据项名:名称 数据项含义说明:配送的名称 别名:Traname 数据类型:char 长度:10 40:数据项名: 接收时间 数据项含义说明: 接收货物的时间 别名: Acptime 数据类型: date 41. 数据项名:发送时间 数据项含义说明: 发送货物的时间 别名: Sendtime 数据类型: date 精选资料 ---------------------------- 42. 数据项名: 配送方式 数据项含义说明: 以什么样的方式配送 别名: How 数据类型:char 长度:10 (2)子模式设计: 针对于查询模块来说,本应建立索引然后可以快速查询,但是由于此次系统查询的模块是分为几个模块来进行查询的,分为客户,员工,货单,货物,收货人这些分开进行查询,所以查询的数据量不是很大,所以为建立任何索引。但是也并不拖慢查询速度。 (3)画出系统功能模块图,并对各功能模块进行简单介绍。 登录进入该系统过后,可以选择相应的功能。主界面如下: 点击系统管理实现两个功能,一个是退出该系统,另一个是 精选资料 ---------------------------- 重新登录。 选择不同的选项会有不同的功能,具体选择如图所示: 进入相应的功能模块后,如果是该系统的主要功能,都会弹出相应的窗体,在该窗体上,可以对相应的信息进行查询,添加,修改以及删除。 如查询客户信息窗体如下: 精选资料 ---------------------------- 三、 数据库的物理设计 由概念模型导出来的物理模型如下图所示: SHRSHnochar(10) 精选资料 ---------------------------- (1)数据库的创建 T-SQL语句: 数据库建立语句: (2)数据表的创建(可同时在创建时定义相关的约束) T-SQL语句: 管理员表的建立语句: 客户表的建立语句: 员工表额建立语句: 精选资料 ---------------------------- 货物表的建立语句: 收货人表的建立语句: 仓库表的建立语句: 货单表的建立语句: 精选资料 ---------------------------- 存储表的建立语句: 配送表的建立语句: 4.功能模块。 1.登录模块: 精选资料 ---------------------------- 该模块主要实现对该系统用户权限的管理,只有有资格进入该系统的管理员才有资格对该系统进行管理。 2.主界面模块: 该模块主要用于在用户进入系统过后,提供给用户该系统自身的功能选择。用户选择相应功能过后系统便会进入相应模块,该模块与数据库没有连接。 3.由于我们默认允许进入该系统的所有用户具有全部权限,可以对所有数据进行操作,所以未建立视图保护。 4.模块功能简介及其核心代码。 1.存储信息管理模块: 精选资料 ---------------------------- 用户通过该界面可以实现对存储信息的查询,存储信息添加,存储信息修改以及存储信息的删除。同时对存储信息查询的时候信息会通过datagridview显示给用户。 核心代码如下: Tdatabase database=new Tdatabase(\"server=localhost;database=Transport;uid=sa;pwd='123'\"); private void button1_Click(object sender, EventArgs e) { DataTable dt = database.f_查询(\"select * from CC\"); dataGridView1.DataSource = dt; } private void button4_Click(object sender, 精选资料 ---------------------------- EventArgs e) { int i = database.f_更新(\"insert into CC(CCno,CCtime,CCnum,CCoutdate,CCoutnum,Yno,Cno,HWno) values('\" + textBox1.Text + \"','\" + textBox2.Text + \"','\" + textBox3.Text + \"','\" + textBox4.Text + \"','\" + textBox5.Text + \"','\" + textBox6.Text + \"','\" + textBox7.Text + \"','\" + textBox8.Text + \"')\"); if(i>0) MessageBox.Show(\"数据添加成功!\"); } private void button6_Click(object sender, EventArgs e) { int i = database.f_更新(\"update CC set CCtime= '\" + textBox10.Text.Trim() + \"',CCnum= '\" + textBox11.Text.Trim() textBox12.Text.Trim() textBox13.Text.Trim() textBox14.Text.Trim() + + + + 精选资料 \"',CCoutdate= \"',CCoutnum= \"',Yno= \"',Cno= '\" '\" '\" '\" + + + + ---------------------------- textBox15.Text.Trim() textBox16.Text.Trim() + + \"' \"',HWno= where '\" + + CCno='\" textBox9.Text.Trim() + \"'\"); if(i>0) MessageBox.Show(\"数据修改成功!\"); } private void button8_Click(object sender, EventArgs e) { int i = database.f_更新(\"delete from CC where CCno='\"+textBox17.Text.Trim ()+\"'\"); if (i > 0) MessageBox.Show(\"删除成功!\"); } 2.货单信息管理模块: 精选资料 ---------------------------- 用户通过该界面可以实现对货单信息的查询,货单信息添加,货单信息修改以及货单信息的删除。同时对货单信息查询的时候信息会通过datagridview显示给用户。其中查询的时候并不是通过单表查询,在此次查询中,我们提供给用户的主要有货单号,客户名,货物名,员工名,收货人名给用户。 核心代码如下: Tdatabase database = new Tdatabase(\"server=localhost;database=Transport;uid=sa;pwd='123'\"); private void button1_Click(object sender, EventArgs e) { DataTable dt = database.f_查询(\"select ,SHname from Hno,Kname,Yname,HWname HD,KH,YG,HW,SHR where HD.Yno=YG.Yno and 精选资料 ---------------------------- HD.Kno=KH.Kno and HD.HWno=HW.HWno and HD.SHno=SHR.SHno\"); dataGridView1.DataSource = dt; } private void button4_Click(object sender, EventArgs e) { int i = database.f_更新(\"insert into HD(Hno,Hname,Cash,SHno,Kno,Yno,HWno) values('\" + textBox1.Text + \"','\" + textBox2.Text + \"','\" + textBox3.Text + \"','\" + textBox4.Text + \"','\" + textBox5.Text + \"','\" + textBox6.Text + \"','\" + textBox7.Text + \"')\"); if(i>0) MessageBox.Show(\"数据添加成功!\"); } private void button6_Click(object sender, EventArgs e) { int i = database.f_更新(\"update HD set Hname='\" + textBox9.Text.Trim() + \"' ,Cash='\" + textBox10.Text.Trim() 精选资料 + \"',SHno='\" + ---------------------------- textBox11.Text.Trim() textBox12.Text.Trim() textBox13.Text.Trim() textBox14.Text.Trim() + + + + \"' \"',Kno='\" \"',Yno='\" \"',HWno='\" where Hno='\" + + + + textBox8.Text.Trim() + \"'\"); if(i>0) MessageBox.Show(\"数据修改成功!\"); } 注:(其余功能由同班樊涛同学完成【上一条】【下一条】的代码 private void btn_up_Click(object sender, EventArgs e) { if (this.dataGridView1.CurrentCell.RowIndex > 0) { this.dataGridView1.CurrentCell = this.dataGridView1[this.dataGridView1.CurrentCell.ColumnIndex, this.dataGridView1.CurrentCell.RowIndex - 1]; } private void btn_down_Click(object sender, EventArgs e) 精选资料 ---------------------------- { if (this.dataGridView1.CurrentCell.RowIndex this.dataGridView1.RowCount - 1) { this.dataGridView1.CurrentCell = < this.dataGridView1[this.dataGridView1.CurrentCell.ColumnIndex, this.dataGridView1.CurrentCell.RowIndex + 1]; } },以及Tdatabase类代码如下: class Tdatabase { private SqlConnection con; public Tdatabase(string str_连接字符串) { con = new SqlConnection(str_连接字符串); } public DataTable f_查询(string sql) { con.Open(); 精选资料 ---------------------------- SqlDataAdapter sda = SqlDataAdapter(sql, con); DataTable dt = new DataTable(); sda.Fill(dt); con.Close(); return dt; } public int f_统计数据(string sql) { con.Open(); SqlCommand com = SqlCommand(sql, con); int t = (int)com.ExecuteScalar(); con.Close(); return t; } public int f_更新(string sql) { con.Open(); SqlCommand com = SqlCommand(sql, con); int t = com.ExecuteNonQuery(); 精选资料 new new new ---------------------------- con.Close(); return t; } ) 六、课程设计心得 通过这次课程设计,主要由我负责后台部分,后台部分因为该系统模型事先和同伴有所商量,所以并不十分复杂。但是在powerdesigner里面画E-R图的时候,由于首次使用该软件,所以遇见的困难并不少。在概念模型建立过程中,有一个较深的体会就是此次打破以往构建数据库的传统,这次先构建概念模型,然后再到处物理模型。那么构造的的物理模型能否直接导出我们所期待的物理模型这就和我们对实体与实体之间联系的类型有关了。而且概念模型也必须通过验证,才能导出物理模型。这让我在学习一新软件的同时又让我对数据库的构建更加规范化了。 其次,这次对命名方式这个东西也有较深的体会。因为我们组员之间是事先有过协商,对表中的字段该怎样命名,所以后台搭建好过后,负责前台的同伴在进行工作的时候减少了不少工作量。 总的来说,这次课程设计让我学会不少,虽说在该系统中还存在不足,但是我们也努力做到了最好。 精选资料 因篇幅问题不能全部显示,请点此查看更多更全内容