计算机学院数据库课程设计《影碟出租管理系统》数据库课程设计目录第一章系统概述 (1)1.1 系统背景 (1)1.2 系统目的及意义 (1)第二章系统需求分析 (2)2.1用户需求 (2)2.2数据流图 (3)2.3数据字典 (4)2.4数据结构 (5)第三章系统数据库设计 (6)3.1系统E-R图 (6)3.2数据库概念模型(CDM)设计 (8)3.3数据库概念模型(PDM)设计 (9)第四章系统数据库对象设计 (10)4.1 索引设计 (10)4.2 视图设计 (10)4.3 约束设计 (13)4.4 函数设计 (13)4.5 存储过程设计 (24)第五章个人总结 (25)参考文献 (26)第一章系统概述1.1 系统背景近几年Internet的飞速发展使得网络与人们生活,工作的关系越来越密切,为了适应信息社会迅猛发展的浪潮,企业必须在网上构筑全新的电子商务运营模式。
在线租借及购物作为电子商务的一个重要组成部分,使企业能够通过Internet以一种快速方便的方式为客户提供最新的商品和服务信息,完善的在线租赁和购物渠道,使客户足不出户就可以购到满意的商品,享受现代化的服务。
交互式的销售渠道能够使企业降低成本,增强与客户间的联系,及时得到市场反馈,从而增强自身的竞争力和凝聚力。
同时,这种新型的经营模式不应该脱离企业已有的信息系统,应该在已有的信息系统的基础上增强新的服务,这些服务必须便于全球范围内的客户使用。
本文研究的基于Java技术的Web应用的实例——影碟租赁管理系统,正是在这种背景下进行。
1.2 系统目的及意义在进入网络时代的今天,传统的靠门面经营的影碟租赁店已经难以找到新的业务增长点,而网上销售和服务则成了新的增长点,这也是传统商店迎接网络商店挑战的必由出路。
由于影碟的经营门槛较低,只要流动经费充足,马上就可开业,因此,中小型的影碟租赁商店逐渐增多,竞争日趋激烈,利润空间有限。
在这种情况下,如何节约成本,提高资金的流通率、提高影碟店的知名度、增强商店宣传的力度成为影碟店急需考虑的问题。
在网上开影碟租赁商店可以解决这些问题。
首先,网上影碟店的建立可以减少影碟店的开支,如减少场地费用等。
其次,网上影碟店的建立可以尽量减少库存。
不用需要碟片时,可以及时组织货源,减少了库存管理环节降低了资金占用量,降低了维护库存的设施成本和人力成本,提高资金周转率。
第二章系统需求分析2.1用户需求该系统应具备如下功能:(1)系统管理员可以在该系统上查询影碟的各种详细信息;(2)管理员能对产品库进行添加和删除等操作;(3)能对客人的影碟租借信息进行记录、查询和消除。
1.功能需求分析(1)影碟信息的添加:记录影碟的基本信息,包括:影碟编号、影碟名称,主演、导演等。
(2)影碟租借的信息查询:查询影碟是否已经被人租借。
(3)影碟信息的删除:删除已经损坏的影碟的信息。
(4)影碟信息的修改:对输入错误信息的影碟进行修改。
(5)影碟的归还处理:对已经借出的影碟返还时进行登记工作,并返还押金(6)系统设置:具有相关权限的用户登录系统后可以修改登录密码,添加新管理员帐户,修改已有管理员帐户信息,删除管理员帐户以及增加、修改和维护会员资料。
(7)影碟库存管理:查询影碟的剩余量。
2.性能需求分析(1)系统响应速度应要有较高的要求:管理员在操作该系统时,如果系统响应速度慢,或出现数据错误甚至系统崩溃的现象,则会无法给顾客提供快捷迅速的服务,从而浪费顾客时间,而且影响影碟出租店的生意。
(2)数据库数据要能及时和快速更新:每天在国内或国外都有大量电影电视剧被制作出来,所以影碟出租商店就必须及时对店内光碟进行更新,购进当时的最新、最热电影和电视剧,这样才能更好地吸引顾客。
所以,这就对数据库的数据的及时更新提出了较高的要求。
(3)系统内容的全面性:市场上各种各样的影碟成千上万,要想更好地吸引顾客,就需要影碟内容的全面性,即顾客想要的光碟,在系统中要大多数情况下能有,如果系统能够存入的信息太少或太不全面,就很难引来回头客。
2.2数据流图图2.1功能模块图2.3 数据字典2.4数据结构(1)数据结构名:影碟含义说明:影碟查询系统的主题数据结构,解释了一盘影碟的详细信息组成:影碟编号,影碟名称,主演,导演,进货时间(2)数据结构名:租借者含义说明:影碟出租系统的数据结构,记录了顾客的详细信息。
组成:顾客编号,顾客姓名,性别,联系电话(3)数据结构名:租借管理含义说明:影碟出租系统的主题数据结构,记录了顾客租碟过程的详细信息。
组成:Dvd编号,租借者编号,租借日期,归还日期,押金,租金(4)数据结构名:影碟库存含义说明:影碟库存系统的主题数据结构,记录了商店影碟的库存信息。
组成:影碟编号,影碟编号,影碟名称第三章系统数据库设计3.1系统E-R图顾客信息顾客信息(顾客编号,顾客姓名,电话号码,地址,账户余额)影碟信息(编号,片名,发行时间,内容描述,租借押金)借阅信息(顾客编号,碟片编号,顾客姓名,片名,已归还否,借出时间,应还时间,租借押金,租金费用)(1)影碟信息表表3.1影碟信息表(2)租者信息表表3.2租者信息表(3)租借管理表表3.3租借管理表Return_date datatime No8--归还日期deposit smallmoney No4--租金3.3 数据库概念模型(PDM)设计系统关系图图3.5影碟出租管理系统关系图第四章系统数据库对象设计4.1 索引设计ifexists(select*from sysobjects wherename='影碟租借管理系统') dropDataBase 影碟租借管理系统 GOCreateDataBase 影碟租借管理系统 goUse 影碟租借管理系统 goifexists(select*from sysobjects wherename='类别表') droptable 类别表 GO Createtable 类别表(类别编号varchar(10)notnull, 类别名称nvarchar(20)notnull, 类别描述nvarchar(100), primarykey(类别编号) )4.2 视图设计4.2.1 影碟管理系统首页图4.14.2.2 登陆界面图4.2 4.2.3影碟管理界面图4.34.2.4 影碟出租界面图4.4 4.2.5影碟归还界面图4.54.3 约束设计CREATE TABLE Administrator(ADMID c har(10) NOT NULL,name char(25) NOT NULL,age smallint NOT NULL,sex char(2) NOT NULL,city char(15) NOT NULL CONSTRAINT chkcity CHECK(city IN ('chongqing','sichuan','beijing','shanghai','xianggang','aomen','taiwan','dalian')), PRIMARY KEY (ADMID,name))CREATE TABLE Registrant(funID char(10) NOT NULL,lname char(25) NOT NULL,lkey char(16) NOT NULL,age smallint NOT NULL,sex char(2) NOT NULL,lcity char(15) NOT NULL CONSTRAINT chklcity CHECK (lcity IN ('chongqing','sichuan','beijing','shanghai','xianggang','aomen','taiwan','dalian')), PRIMARY KEY (funID,lname))4.4 函数设计1.连接数据库string connstr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=影碟出租管理系统;Data Source=PC-20100331FOMN";string selectcmd = "select * from 影碟信息where 影碟编号='" + 影碟编号.Text + "'"; //建立选择查询string insertcmd = "insert into 影碟信息values('" + 影碟编号.Text + "','" + 名称.Text + "','" + 类型.Text + "','" + 国家.Text + "','" + 主演.Text + "','"+单价.Text+"','"+购入时间.Text+"','"+库存量.Text+"')";//建立插入查询SqlConnection conn = new SqlConnection(connstr); //建立数据库连接conn.Open();SqlCommand cmd1 = new SqlCommand(selectcmd, conn);//建立数据库命令SqlDataReader reader = cmd1.ExecuteReader();2.增加private void 添加_Click(object sender, EventArgs e){账号.Focus();if (账号.Text != "" && 密码.Text != "" && 姓名.Text != "" && 剩余可租碟数.Text != "" && 营业员账号.Text != "") //*项上不能为空{string connstr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=影碟出租管理系统;Data Source=PC-20100331FOMN";string selectcmd = "select * from 会员where 会员账号='" + 账号.Text + "'"; //建立选择查询string insertcmd = "insert into 会员values('" + 账号.Text + "','" + 密码.Text + "','" + 姓名.Text + "','" + 办理时间.Text + "','" + 剩余可租碟数.Text + "','" + 营业员账号.Text + "')";//建立插入查询SqlConnection conn = new SqlConnection(connstr); //建立数据库连接conn.Open();SqlCommand cmd1 = new SqlCommand(selectcmd, conn); //建立数据库命令SqlDataReader reader = cmd1.ExecuteReader();if (!reader.Read()) //读取数据{reader.Close();SqlCommand cmd = new SqlCommand(insertcmd, conn); //建立新的数据库命令try{cmd.ExecuteNonQuery(); //执行操作命令MessageBox.Show("添加成功!");账号.Text = "";密码.Text = "";姓名.Text = "";办理时间.Text = "";剩余可租碟数.Text = "";营业员账号.Text = "";}catch (Exception ex){MessageBox.Show("添加出错!错误原因为:\n" + ex.Message + "\n");}}else //账号已存在{reader.Close();MessageBox.Show("对不起,此账号已经被使用,请更改账号!", "会员账号检验!", MessageBoxButtons.OK, MessageBoxIcon.Warning); //用户名已账号.Text = "";}conn.Close();}elseMessageBox.Show("带*项不能为空!", "会员账号核查", MessageBoxButtons.OK, MessageBoxIcon.Warning);}string updatecmd, updatecmd1, updatecmd2, updatecmd3, updatecmd4;private void 修改_Click(object sender, EventArgs e){账号.Focus();if (账号.Text != "") //*项上不能为空{string connstr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=影碟出租管理系统;Data Source=PC-20100331FOMN";string selectcmd = "select * from 会员where 会员账号='" + 账号.Text + "'"; //建立选择查询if (密码.Text != ""){ updatecmd = "update 会员set 密码='" + 密码.Text + "' where 会员账号='" + 账号.Text + "'"; }if (姓名.Text != ""){ updatecmd1 = "update 会员set 姓名='" + 姓名.Text + "' where 会员账号='" + 账号.Text + "'"; }if (办理时间.Text != ""){ updatecmd2 = "update 会员set 办理时间='" + 办理时间.Text + "' where 会员账号='" + 账号.Text + "'"; }if (剩余可租碟数.Text != ""){ updatecmd3 = "update 会员set 剩余可租碟数='" + 剩余可租碟数.Text + "' where 会员账号='" + 账号.Text + "'"; }if (营业员账号.Text != ""){ updatecmd4 = "update 会员set 营业员账号='" + 营业员账号.Text + "' where 会员账号='" + 账号.Text + "'"; }//建立更新查询SqlConnection conn = new SqlConnection(connstr); //建立数据库连接conn.Open();SqlCommand cmd = new SqlCommand(selectcmd, conn); //建立数据库命令SqlDataReader reader = cmd.ExecuteReader();if (reader.Read()) //读取数据{reader.Close();try{if (密码.Text != ""){SqlCommand cmd1 = new SqlCommand(updatecmd, conn); //建立新的数据库命令cmd1.ExecuteNonQuery();}if (姓名.Text != ""){SqlCommand cmd2 = new SqlCommand(updatecmd1, conn); //建立新的数据库命令cmd2.ExecuteNonQuery();}if (办理时间.Text != ""){SqlCommand cmd3 = new SqlCommand(updatecmd2, conn); //建立新的数据库命令cmd3.ExecuteNonQuery();}if (剩余可租碟数.Text != ""){SqlCommand cmd4 = new SqlCommand(updatecmd3, conn); //建立新的数据库命令cmd4.ExecuteNonQuery();}if (营业员账号.Text != ""){SqlCommand cmd5 = new SqlCommand(updatecmd4, conn); //建立新的数据库命令cmd5.ExecuteNonQuery();}MessageBox.Show("修改成功!");账号.Text = "";密码.Text = "";姓名.Text = "";办理时间.Text = "";剩余可租碟数.Text = "";营业员账号.Text = "";}catch (Exception ex){MessageBox.Show("修改出错!错误原因为:\n" + ex.Message + "\n");账号.Text = "";密码.Text = "";姓名.Text = "";办理时间.Text = "";剩余可租碟数.Text = "";营业员账号.Text = "";}}else //影碟编号已存在{reader.Close();MessageBox.Show("对不起,无此会员,请更改会员编号!", "会员账号检验!", MessageBoxButtons.OK, MessageBoxIcon.Warning); //用户名已账号.Text = "";}conn.Close();}}private void 删除_Click(object sender, EventArgs e){string connstr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=影碟出租管理系统;Data Source=PC-20100331FOMN";SqlConnection conn = new SqlConnection(connstr);conn.Open();string select = "select * from 出租关系where 会员账号='" + 账号.Text + "'";SqlCommand cmd1 = new SqlCommand(select, conn);SqlDataReader reader1 = cmd1.ExecuteReader();if (!reader1.Read()){string selectcmd = "select * from 会员where 会员账号='" + 账号.Text + "'";SqlCommand cmd = new SqlCommand(selectcmd, conn);SqlDataReader reader = cmd.ExecuteReader();if (!reader.Read())MessageBox.Show("不存在此会员!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);else{reader.Close();DialogResult result = MessageBox.Show("确实要删除此会员吗?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);if (result == DialogResult.Yes){string delstr = "delete from 会员where 会员账号='" + 账号.Text + "'";cmd = new SqlCommand(delstr, conn);cmd.ExecuteNonQuery();MessageBox.Show("已成功删除了此会员!");账号.Text = "";}}}else{MessageBox.Show("此会员有影碟未归还,不能删除!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);}}3.修改private void 修改_Click(object sender, EventArgs e){账号.Focus();if (账号.Text != "") //*项上不能为空{string connstr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=影碟出租管理系统;Data Source=PC-20100331FOMN";string selectcmd = "select * from 会员where 会员账号='" + 账号.Text + "'"; //建立选择查询if (密码.Text != ""){ updatecmd = "update 会员set 密码='" + 密码.Text + "' where 会员账号='" + 账号.Text + "'"; }if (姓名.Text != ""){ updatecmd1 = "update 会员set 姓名='" + 姓名.Text + "' where 会员账号='" + 账号.Text + "'"; }if (办理时间.Text != ""){ updatecmd2 = "update 会员set 办理时间='" + 办理时间.Text + "' where 会员账号='" + 账号.Text + "'"; }if (剩余可租碟数.Text != ""){ updatecmd3 = "update 会员set 剩余可租碟数='" + 剩余可租碟数.Text + "' where 会员账号='" + 账号.Text + "'"; }if (营业员账号.Text != ""){ updatecmd4 = "update 会员set 营业员账号='" + 营业员账号.Text + "' where 会员账号='" + 账号.Text + "'"; }//建立更新查询SqlConnection conn = new SqlConnection(connstr); //建立数据库连接conn.Open();SqlCommand cmd = new SqlCommand(selectcmd, conn); //建立数据库命令SqlDataReader reader = cmd.ExecuteReader();if (reader.Read()) //读取数据{reader.Close();try{if (密码.Text != ""){SqlCommand cmd1 = new SqlCommand(updatecmd, conn); //建立新的数据库命令cmd1.ExecuteNonQuery();}if (姓名.Text != ""){SqlCommand cmd2 = new SqlCommand(updatecmd1, conn); //建立新的数据库命令cmd2.ExecuteNonQuery();}if (办理时间.Text != ""){SqlCommand cmd3 = new SqlCommand(updatecmd2, conn); //建立新的数据库命令cmd3.ExecuteNonQuery();}if (剩余可租碟数.Text != ""){SqlCommand cmd4 = new SqlCommand(updatecmd3, conn); //建立新的数据库命令cmd4.ExecuteNonQuery();}if (营业员账号.Text != ""){SqlCommand cmd5 = new SqlCommand(updatecmd4, conn); //建立新的数据库命令cmd5.ExecuteNonQuery();}MessageBox.Show("修改成功!");账号.Text = "";密码.Text = "";姓名.Text = "";办理时间.Text = "";剩余可租碟数.Text = "";营业员账号.Text = "";}catch (Exception ex){MessageBox.Show("修改出错!错误原因为:\n" + ex.Message + "\n");账号.Text = "";密码.Text = "";姓名.Text = "";办理时间.Text = "";剩余可租碟数.Text = "";营业员账号.Text = "";}}else //影碟编号已存在{reader.Close();MessageBox.Show("对不起,无此会员,请更改会员编号!", "会员账号检验!", MessageBoxButtons.OK, MessageBoxIcon.Warning); //用户名已账号.Text = "";}conn.Close();}}4.5 存储过程设计ifexists(select*from sysobjects wherename='BorrowRecord') dropproc BorrowRecord goCreateproc BorrowRecord( @cid varchar(18) ) asSelect 借阅号,名称as 光盘名称,客户姓名,借阅数量,借阅日期,押金数,备注信息 from 借阅表,光盘表,客户表Where 归还='否'and 借阅表.客户号= @Cidand 借阅表.光盘编号= 光盘表.编号and 借阅表.客户号= 客户表.客户号第五章个人总结这次的课程设计可以说是为毕业设计做的一个预演,真的做起来困难重重,深刻体会到做一个软件,里面需要的很多知识我们没有接触过,去图书馆找书的时候发现,我们学的仅仅是皮毛,还有很多东西需要我们去发掘,就算是借一本书看完它,我们还是会发现还有很多知识没有吃透,这需要我们不断的实践,不断地自学习,不断地发现问题去思考问题。