细心系统与数据库技术课程设计.docx
《细心系统与数据库技术课程设计.docx》由会员分享,可在线阅读,更多相关《细心系统与数据库技术课程设计.docx(17页珍藏版)》请在冰点文库上搜索。
细心系统与数据库技术课程设计
上海应用技术学院
课程设计
2010~2011学年第二学期
设计题目:
图书信息管理
院系:
化学与环境工程学院
专业:
制药工程
班级:
09107201
姓名:
林韦康0910720125
设计时间:
2011-05-24∽2011-06-06
指导教师:
王栋
随着网上书店规模的不断扩大,图书数量也相应增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书管理上的混乱以及人力、物力过多浪费,从而影响运作和控制管理,因此,必须制定一套合理、有效,规范和实用的网上图书管理系统,对图书资料进行集中统一的管理。
另一方面,IT产业和Internet的飞速发展使得计算机应用渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。
提高网上图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让网上书店更好地为学校、社会服务。
一、系统目标
本系统支持网上图书的信息维护、图书信息汇总、图书折扣管理3个方面的功能,并且具有信息管理、事物处理、和决策支持的系统特点。
二、需求分析
1.业务需求
设计网上书店信息系统中的客户信息管理模块,要求有客户和店员两个方面的功能。
客户类的用户:
能图书查询、浏览(包括浏览本书信息和相关图书列表)、查看个人客户信息。
店员类的用户:
能维护图书基本信息、包括增、删、改等;图书折扣管理;图书信息汇总。
2.数据处理要求
系统涉及的数据源有图书数据、客户数据、客户购买数据,产生图书信息表、客户信息表、订单、客户分析表等各项表单。
结合业务处理需求,系统数据流图如图所示。
三、数据库设计
1.图书信息管理功能结构图如图:
2.E-R图:
3.数据字典:
1)Customer客户表:
存储客户基本信息。
字段名称
字段说明
类型定义
属性限定
索引
关系(外键)
CustomerCode
客户号
Char(8)
PrimaryKey
主索引
Name
客户姓名
Varchar(16)
NotNull
√
Sex
性别
Char
(2)
NotNull
"男"或"女"
Job
职业
Char(12)
NotNull
Birthday
生日
Datetime
Hometown
所在省区
Varchar(40)
√
Email
Email
Varchar(40)
Telephone
联系电话
Varchar(40)
VIPClass
用户等级
Char
(1)
“A”~”D”
LoyaltyClass
忠诚度
Char
(1)
“A”~”D”
2)Book图书表:
存储图书基本情况。
字段名称
字段说明
类型定义
属性限定
索引
关系(外键)
BookCode
书号
Char(8)
PrimaryKey
主索引
BookName
书名
Varchar(60)
NotNull
√
Author
作者
Char(20)
NotNull
Publisher
出版社
Varchar(50)
NotNull
√
PublishTime
出版时间
DateTime
NotNull
BookSort
图书类别
Char(8)
√
Content
内容简介
Varchar(1000)
Price
价格
Numeric(4,1)
NotNull
Discount
折扣
Numeric(2,1)
NotNullDefault1
图书类别BookSort取值:
人文、科学、经管、其他
3)Order订单表:
存储订单的基本情况
字段名称
字段说明
类型定义
属性限定
索引
关系(外键)
OrderCode
订单号
Char(8)
PrimaryKey
主索引
CustomerCode
客户号
Char(8)
NotNull
√
Customer:
CustomerCode
PayType
支付方式
Varchar
(1)
NotNull
SendType
发货方式
Varchar
(1)
NotNull
Address
发货地址
Varchar(200)
NotNull
OrderTime
订货时间
DateTime
NotNull
DefaultGetDate()
OrderStatus
订单状态
Char
(1)
“P”、“F”、“C”
Default“P”
订单状态OrderStatus取值:
“P”为处理中,“F”为完成,“C”为取消。
支付方式PayType取值:
“C”为货到现金支付;“I”为信用卡支付。
发货方式SendType取值:
“F”为快递;“P”为邮局邮寄。
4)OrderDetail订单详细情况表:
存储订单的详细情况。
字段名称
字段说明
类型定义
属性限定
索引
关系(外键)
OrderCode
订单号
Char(8)
PrimaryKey
主索引
Order:
OrderCode
BookCode
书号
Char(8)
PrimaryKey
主索引
Book:
BookCode
Amount
数量
Int
Default0
>=0
4.关系模式:
客户(客户号,姓名,性别,职业,生日,所在省区,联系电话,Email,客户等级,忠诚度)
图书(书号,书名,作者,出版社,出版时间,类别,内容简介,价格,折扣)
订单(订单号,客户号,支付方式,发货方式,发货地址,订货时间)
订单详细资料(订单号,书号,数量)
5.数据库表:
6.数据库关系图:
4、系统开发设计
1.系统技术方案
系统前台开发工具:
面向客户的B/S应用程序和面向店员和店长的C/S应用程序都采用VisualStudio.NET2003开发环境,使用VB.NET语言开发。
后台数据库:
采用MicrosoftSQLServer2000企业版。
2.主界面
主界面显示“顾客”和“店员”两个选择按钮,用户根据自己的身份选择“确定”进入系统或选择“取消”退出系统。
3.基本操作
①如果选择“店员”,那么会得到一个新的界面如下:
此时输入帐号和密码,就可进行“增加新书”、“删除图书”、“撤销更新”和“确认更新”的操作。
效果如下:
②如果选择“顾客”,那么得到如下一个新的界面:
输入帐号和密码,选择查看“个人信息”或者“图书信息”。
比如选择了“个人信息”,在界面上可以看到自己的“客户号”、“姓名”、“性别”、“职业”、“生日”、“所在省区”、“Email”、“用户等级”和“忠诚度”等个人信息。
效果如图:
如果选择查看“图书信息”,可以输入想要查看的图书全名或者图书关键字,可以得出包括“书号”、“书名”、“作者”、“出版社”、“出版时间”、“图书类型”、“内容简介”、“价格”和“折扣”等图书信息。
效果如下:
6、课程设计总结
我们的课程设计是网上书店系统中的“图书信息管理”模块,通过此次实践,我们更熟练地掌握了用数据库解决现实生活中问题的技能,更多地了解了数据库的应用和对数据库的备份与恢复、性能分析与改进等等。
虽然总体设计还算合理,但本操作系统还存在下列问题:
○数据安全性有待增强。
○还可以设置级联使得系统更加完善。
○可以增加顾客修改个人信息的功能,如“所属省区”等可能随时间有所变动的项目。
○数据库中没有专门的表保存顾客的帐号和密码,笨操作系统所设置的密码单一简单。
总之,这次课程设计,使得我们熟悉了VisualStudio.NET2003开发环境以及VB.NET和SQL语句的使用,也在一定程度上提高了我们动手动脑能力。
7、参考文献
【1】夏冰冰.数据库管理及应用.国防工业出版社,2006.
【2】闪四清.SQLServer实用简明教程.清华大学出版社,2005.
【3】施伯乐,丁宝康,汪卫.数据库系统教程.3版.高等教育出版社,2007.
【4】孙皓.SQL入门、进阶与实用教程.人民邮电出版社
8、程序清单
登录系统代码:
后台管理代码:
ImportsSystem.Data.SqlClient
PublicClass后台管理
InheritsSystem.Windows.Forms.Form
PublicmybindAsBindingManagerBase
PrivateSub后台管理_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
EndSub
PrivateSubButton6_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton6.Click
mybind.Position=0
EndSub
PrivateSubButton7_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton7.Click
mybind.Position=mybind.Position-1
EndSub
PrivateSubButton8_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton8.Click
mybind.Position=mybind.Position+1
EndSub
PrivateSubButton9_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton9.Click
mybind.Position=mybind.Count-1
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
mybind.RemoveAt(mybind.Position)
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
mybind.AddNew()
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
mybind.CancelCurrentEdit()
EndSub
PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click
mybind.EndCurrentEdit()
Me.SqlDataAdapter1.Update(Me.DataSet11.T_Book)
EndSub
PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.Click
End
EndSub
PrivateSubDataGrid1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesDataGrid1.Click
mybind.Position=DataGrid1.CurrentRowIndex
mybind.Position=Me.DataGrid1.CurrentRowIndex
EndSub
PrivateSubButton10_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton10.Click
StaticinterrAsInteger
DimsuAsString
DimspAsString
su=UCase$(Trim$(TextBox10.Text))
sp=Trim$(TextBox11.Text)
Ifsu="ADMIN"Andsp="123456"Then
Me.SqlDataAdapter1.Fill(Me.DataSet11.T_Book)
mybind=Me.BindingContext(Me.DataSet11,"T_book")'指定绑定对象的数据源
Me.DataGrid1.DataSource=Me.DataSet11.T_Book
Else
MsgBox("帐号不存在或者密码错误,请重新输入!
")
EndIf
EndSub
EndClass
查询系统代码:
ImportsSystem.Data.SqlClient
PublicClass查询系统
InheritsSystem.Windows.Forms.Form
PublicmybindAsBindingManagerBase
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimcnAsNewSqlConnection("InitialCatalog=bookmanage;DataSource=(Local);"_
&"IntegratedSecurity=SSPI;")
DimsqlAsString="Select*FromT_BookWhereBooknamelike'%"&TextBox1.Text&"%'"
DimadAsSqlDataAdapter=NewSqlDataAdapter(sql,cn)
DimdsAsNewDataSet
ad.Fill(ds,"Book")
DataGrid1.DataSource=ds.Tables("Book")
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
mybind.Position=0
DataGrid1.CurrentRowIndex=mybind.Position
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
mybind.Position=mybind.Position-1
DataGrid1.CurrentRowIndex=mybind.Position
EndSub
PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click
mybind.Position=mybind.Position+1
DataGrid1.CurrentRowIndex=mybind.Position
EndSub
PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.Click
mybind.Position=mybind.Count-1
DataGrid1.CurrentRowIndex=mybind.Position
EndSub
PrivateSubDataGrid1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesDataGrid1.Click
mybind.Position=DataGrid1.CurrentRowIndex
EndSub
PrivateSubButton6_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton6.Click
StaticinterrAsInteger
DimsuAsString
DimspAsString
su=UCase$(Trim$(TextBox1.Text))
sp=Trim$(TextBox2.Text)
IfLen(TextBox18.Text)<>8Then
MsgBox("用户名不存在,请重新输入!
")
EndIf
IfTextBox21.Text<>"000000"Then
MsgBox("密码错误,请重新输入!
")
Else
DimcnAsNewSqlConnection("InitialCatalog=bookmanage;DataSource=(Local);"_
&"IntegratedSecurity=SSPI;")
DimsqlAsString="Select*FromT_Book"
DimadAsSqlDataAdapter=NewSqlDataAdapter(sql,cn)
DimdsAsNewDataSet
ad.Fill(ds,"Book")
DataGrid1.DataSource=ds.Tables("Book")
Me.SqlDataAdapter1.Fill(Me.DataSet11.T_Book)
mybind=Me.BindingContext(Me.DataSet11,"T_book")
Dimexecutereader()AsSystem.data.sqlclient.SqlDataReader
DimmyconnAsNewSqlConnection("InitialCatalog=BookManage;DataSource=(Local);"_
&"IntegratedSecurity=SSPI;")
Dimsql2AsString="Select*FromT_customerWherecustomerCode='"&TextBox18.Text&"'"
DimmycmdAsSqlCommand=NewSqlCommand(sql2,myconn)
DimmyreadAsSqlDataReader
myconn.Open()
myread=mycmd.ExecuteReader'产生myread对象空间
myread.Read()'
TextBox11.Text=myread.Item(0)
TextBox12.Text=myread.Item
(1)
TextBox13.Text=myread.Item
(2)
TextBox14.Text=myread.Item(3)
TextBox15.Text=myread.Item(4)
TextBox16.Text=myread.Item(5)
TextBox17.Text=myread.Item(6)
TextBox19.Text=myread.Item(7)
TextBox20.Text=myread.Item(8)
myread.Close()
myconn.Close()
EndIf
EndSub
PrivateSubButton7_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton7.Click
End
EndSub
PrivateSub查询系统_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
SqlDataAdapter1.Fill(DataSet11.T_Book)
mybind=BindingContext(DataSet11,"T_Book")
DataGrid1.DataSource=DataSet11.T_Book
EndSub
EndClass