碟片出租管理子系统数据库设计
- 格式:doc
- 大小:252.34 KB
- 文档页数:18
光盘管理系统设计与实现一、引言随着数字化时代的到来,大量的数据被存储在光盘上,光盘管理变得越来越重要。
本文将介绍一个光盘管理系统的设计与实现,以便更有效地管理光盘。
二、需求分析1.光盘信息管理:包括光盘编号、名称、类型、存放位置、借出情况等信息。
2.光盘借还操作:用户可以借光盘、还光盘,并记录借还日期。
3.光盘查询功能:用户可以根据光盘编号、名称、类型等进行查询。
4.光盘存放位置管理:能够记录光盘所在的具体位置,方便存取。
5.光盘数据备份功能:可以对光盘上的数据进行备份。
三、系统设计1.数据库设计:设计一个数据库来存储光盘的相关信息,包括光盘编号、名称、类型、存放位置、借出情况等字段。
2.用户界面设计:通过图形用户界面(GUI)来实现光盘管理系统的操作,包括输入光盘信息、借还操作、查询功能等。
3.系统功能设计:实现光盘信息的增删改查功能,以及借还、备份等操作。
四、系统实现1. 前端开发:使用Java Swing等工具来实现用户界面设计。
2. 后端开发:使用Java语言开发后端逻辑,实现对数据库的增删改查操作。
3.数据库开发:使用关系型数据库如MySQL来存储光盘信息。
五、系统测试1.单元测试:对每个功能模块进行单元测试,确保功能的正确性。
2.集成测试:将各个模块进行集成测试,确保整个系统的协同工作正常。
3.系统测试:对整个系统进行测试,包括正常操作和异常情况的处理能力。
六、总结与展望本系统设计与实现了一个光盘管理系统,通过对光盘信息的管理、借还操作、查询功能等,能够更有效地管理光盘。
但是,这只是一个基础版本的系统,可以进一步完善。
例如,可以加入光盘借出的截止日期提醒功能,增加用户权限管理等功能。
随着技术的不断发展,光盘管理系统将会更加智能化、便捷化和安全化。
光盘出租管理系统一.需求分析 (2)1.课题背景及意义 (2)2.业务需求 (2)3.数据流程图 (2)4. 数据需求 (3)二、概念结构设计 (3)1.光盘信息E-R图 (3)2.顾客信息 (4)3.管理员信息 (4)4.总的E-R图 (6)三、逻辑结构设计 (6)四.物理结构设计 (7)1.光盘信息 (7)2.顾客信息 (7)3.管理员信息 (7)4.租借信息 (8)5. 归还信息 (8)1. 数据库Cmanagementsystem(光盘出租管理系统)的建立 (8)2. 创建基本表 (9)3. 数据初始化 (12)4. 单表查询 (14)5.数据查询,更新及触发器,存储过程的创建 (17)6.创建存储过程 (21)7.超期处理 (23)六.课程设计小结 (24)一.需求分析1.课题背景及意义光盘出租管理系统是一个光盘出租商管理不可缺少的部分,它对于光盘出租商是至关重要的。
光盘租赁系统提供充足的信息和快捷的查询手段。
一直以来人们使用传统人工方式管理光盘的基本档案,这种管理方式有很多缺点:效率低,保密性差。
另外时间一长,将产生大量的文件和数据,对于查找,更新和维护都带了不少的困难。
随着科学技术的不断提高,计算机科学的日渐成熟,其强大的功能已为人们深刻认识,它已进入社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对光盘租赁进行管理,具有手工管理所无法比拟的优点。
例如:检索迅速,可靠性高,存储量大,保密性好,寿命长,成本低等。
这些优点能极大地提到光碟档案管理的效率,也是光碟租赁管理科学化,正规化的重要条件2.业务需求业务流程图如下:抽象出系统有哪些具体功能要求即功能模型。
(1)注册。
信用户通过填写新信息即可成为新用户。
(2)租赁。
账户余额足够的情况下可以租赁光盘。
(3)注册会员。
成为会员后有更多的查询和租赁的权限。
(4)充值。
用户通过充值可以更新自己的账户及借光盘。
(5)评价建议。
(零售行业)音响店DVD 零售出租管理数据库大型数据库课程设计设计报告题目:音响店DVD出租/零售管理系统学号: 1 2 1 0 0 6 3 1 4学生姓名:刘可指导教师:刘宁提交时间:目录第1章需求分析 (4)1.1需求调查 (4)1.2 系统功能分析 (1)第2章概念结构设计 (2)2.1 局部E-R图 (2)2.2 全局E-R图 (3)第3章逻辑结构设计 (4)3.1 E-R图向关系模式转换 (4)3.2建立关系模式 (4)3.3关系模式规范化处理 (4)3.4用户子模式建立 (4)3.5关系模式逻辑结构定义 (5)第4章数据库物理结构设计 (7)4.1 数据库物理设计 (7)第5章数据库实施 (8)5.1 数据库及数据库对象建立 (8)第6章数据库完整性设计 (9)6.1 主键 (9)6.2 参照完整性设计 (9)6.3 触发器设计 (9)6.4 视图设计 (12)第7章数据库存储过程设计 (13)总结 (14)参考文献: (14)第1章需求分析1.1 需求调查通过对各个用户的调查,该音响店DVD零售\出租管理系统如下需求:1)系统管理:实现系统管理人员对系统的管理,包括添加删除用户,更改密码等功能。
2)数据管理:实现管理人员对系统的管理,包括DVD入库,出租,出售,归还等功能。
3)基本信息:实现显示客户和DVD基本信息(包括客户信息和客户所租赁DVD信息,DVD基本信息)。
4)查询:查询当前DVD状况;查询当前用户租赁状况及历史租赁状况。
1)DVD信息管理:存放及查看各DVD的基本信息和数量。
2)用户信息管理:用于对用户基本信息的录入、查询、修改、维护、删除等常用功能,并记录用户的租赁情况。
3)DVD入库管理:用于对DVD的入库情况进行记录,并修改DVD总量。
4)DVD零售管理:用于记录DVD的零售情况,并修改DVD总量。
5)DVD借还管理:用于统计各DVD的借还情况。
第2章概念结构设计2.1局部E-R图:(1)对‘DVD’建立E-R图(2)对‘用户’建立E-R图(3)对‘DVD租赁’建立E-R图(4)对‘DVD归还’建立E-R 图(5)对‘DVD零售’建立E-R图(6)对‘DVD入库’建立E-R 图2.2全局E-R 图:第3章逻辑结构设计3.1 E-R图向关系模式转变逻辑结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQL Server或Oracel或MySql)。
《数据库原理与应用》课程设计题目:影碟出租数据库系统设计与实现系别:数学与信息工程学院专业(含班级):09计算机科学与技术(嵌入式)学号:姓名:游海斌指导教师:林克明职称副教授填表日期:2011 年12 月26 日前言一、选题的依据及意义1.依据熟悉C#、SQL程序设计的基本语法知识及常用技巧。
2.意义本课程的课程设计实际是学生学习完《数据库系统概论》课程后,进行的一次全面的综合训练,其目的在于加深对编程技术基本知识的理解,掌握运用开发应用程序的基本方法及基本技巧。
二、本课程设计内容1. 出租、归还碟片信息的统计:会员账号,影碟编号,出租时间,归还时间,租金等2. 影片信息的查询的统计:影碟编号,名称,类型,国家,主演,单价,购入时间,库存量。
3.营业员和会员资料的查询的统计:营业员账号,会员账号,密码,姓名,办理时间,剩余可租碟数,工作时间。
4.营业员、会员及碟片的添加或删除。
三、研究目标1. 碟片出租系统是一个面向碟片出租者的管理信息系统。
有会员(租借者),营业员,店长三方组成。
该系统的工作目标就是要碟片的出租能有计划地进行,以利于出租者管理。
2. 本系统开发将综合采用结构化系统开发方法和面向对象开发方法,充分发挥两种开发方法的优势。
- 38 -实现方案一、开发平台选择1. SQL Server 20002. C#二、需求分析在对世面上的影碟出租公司进行了初步的了解后,发现其业务主要是集中在影碟的管理和录像的出租归还上。
对影碟的管理工作量较大,采用手工的方式还容易出错,并且不能满足顾客对影碟的详细信息的查询功能。
在现有的影碟出租中对会员的管理也很重要,传统的登记方式不仅费时而且不能对其出租日志进行系统的管理,造成了不必要的经济损失。
综上说述,在影碟出租数据库设计中应考虑和克服了上诉的诸多问题,增强了实用性。
2.1数据需求影片信息数据:录像ID、片名、导演、主演、类型、介绍、上映时间。
录像信息数据:录像ID、格式、语言、进货时间、状态、库存数量。
数据库设计说明书1.课程设计题目:音响店 VCD 零售\出租管理系统1.1题目要求:音响店 VCD 零售\出租管理系统,实现 VCD 类型及信息的管理;实现 VCD 的入库管理;实现 VCD 的借还管理;实现 VCD 的零售管理;创建触发器,入库登记、零售时自动修改、现货和库存,借、还时自动修改现货数量;创建存储过程统计某段时间内各 VCD 的销售、借还数量;创建视图查询各类 VCD 的库存情况;建立数据库相关表之间的参照完整性约束。
2.引言2.1编写目的随着社会经济的发展,人们对生活质量的要求越来越高,对生活中的娱乐追求也是越来越高,传统的娱乐方式已经发生了变化。
作为VCD销售商来说,更多的用户需要对VCD进行租赁。
在租赁的过程中需求量大,操作复杂却流程完全相同,销售/租赁商频繁的做着相同的工作,既浪费时间又不能提高效率,这要求编写一个方便使用的VCD出租系统以其解决上诉问题。
实现对商品的浏览,租赁和出售,并对销售的情况作出相关的统计,并对各类的VCD分类影片进行一个统计。
利用该系统体现了管理者的思想,实现计算机的统一管理。
2.2背景随着信息时代的到来,我们的生活方式发生了巨大的变化。
利用计算机能够帮助我们解决各种问题。
各种的应用软件如雨后春笋一样的出现就是一个很好的体现。
人们对计算机智能化的要求越来越高,许多传统的手工管理逐渐被计算机系统所代替。
人们的生活质量的要求越来越高,对生活中的娱乐方式也更加多样化,已经不再是很长的时间看一部很经典的电影。
在过去的VCD出租和销售中都是依靠的商家的自己的手工的筛选和销售。
对大量的客服而言的商家是既费时又费力,对VCD的管理也不能做到相对的统一,有明确的分类。
计算机的出现,提供了一个很好的解决的方案,能够通过相关的管理软件对其进行统一的管理、销售、租赁等等商业活动。
开发VCD零售/出租管理系统帮助商家提高效率,降低经营成本,优化资源配置,从而实现商品的最大利益化。
影碟租赁系统(MYSQL数据库)摘要:随着科学技术的进步,计算机行业的迅速发展,大大提高人们的工作效率。
计算机信息处理系统的引进已彻底改变了许多系统的经营管理。
影碟管理系统是学校管理机制中的重要组成部分,通过对影碟管理系统的运行管理机制进行调查研究,开发了此影碟系统。
本系统中解决了学校影碟管理事务中的常用基本问题以及相关统计工作。
本系统中包含6个功能模块:系统设置,客户管理,影碟管理,影碟租还,系统查询和更改口令。
本系统使有jsp进行网页界面的设计,使用MVC设计模式,采用了开源框架Struts,它采用了当今软件设计的最新技术,具有开发效率高、设计灵活、生成的软件界面友好美观等特点。
本系统中通过JDBC驱动和数据库进行无缝连接,后端的数据库是mysql,也是一个开源的数据库系统,该数据库具有较高的完整性,一致性和安全性。
关键词:影碟管理;信息管理;jsp;struts;租赁目录摘要IIIAbstract IV1. 绪论11.1毕业设计主要任务11.2目前影碟管理系统存在的问题11.3课题意义11.4论文的工作和安排22.影碟租赁管理需求分析32.1 可行性分析32.1.1.技术可行性32.1.2.经济可行性32.2 影碟租赁管理系统需求概述32.2.1系统目标32.2.2用户类和用户特性42.3 影碟租赁管理系统需求模型42.3.1功能描述42.3.2影碟管理员详细功能描述52.3.3客户详细功能描述52.3.4主要用例的用例描述63.总体设计93.1 数据库设计93.1.1数据库设计概述93.1.2影碟信息表结构设计103.1.3影碟类型信息表结构设计113.1.4 客户信息表结构设计113.1.5客户类型信息表结构设计123.1.6影碟租赁信息表结构设计123.1.7影碟归还信息表结构设计133.1.8用户信息表结构设计133.1.9影碟信息表结构设计143.1.10办证参数信息表结构设计143.2 系统总体结构设计153.2.1影碟管理系统总体结构图153.2.2 系统管理员模块功能153.2.3 客户管理模块功能163.2.4 影碟管理模块功能163.2.5 影碟租还模块功能173.2.6 系统查询模块功能184.程序设计与编码204.1开发平台与工具204.1.1 J2EE平台204.1.2 WEB服务器和数据库204.2程序设计214.2.1程序设计概述214.2.2数据库与Web服务器的连接214.2.3登录模块程序设计234.2.4系统管理员功能模块的实现254.2.5客户管理功能模块的实现264.2.6查询功能模块的实现274.2.7影碟管理功能模块的实现294.2.8影碟租还功能模块的实现305.软件测试335.1 软件测试的方法与步骤335.2 测试用例设计与测试用例的运行过程及测试结果分析345.2.1模块测试345.2.2集成测试355.2.3 验收测试365.3 评价366.结束语376.1 工作成果376.2 改进意见376.3 收获体会37参考文献39致谢40功能描述影碟租赁管理系统的主要任务是实现客户迅速检索查询,方便租赁归还影碟,影碟管理员高效的完成系统的各项基本操作,系统管理员是管理用户设置权限等操作,影碟租赁管理系统要完成一下功能:1. 登录:客户、影碟管理员、系统管理员进入该系统必须登录,身份验证正确了才可以进入该系统,以不同身份进入该系统所对应的系统使用权限是不同的。
影碟出租信息管理系统的设计随着多媒体技术和网络通信技术的发展,基于InterNET的计算机远程教学作为一种全新的教学手段,越来越受到人们的关注。
计算机远程教学是指利用多媒体技术和网络通信技术,在网络环境下开展的教学活动。
它有着传统教学模式所无可比拟的优点,它创造了一种全新的教学模式,打破了传统教学模式在时间、空间上的限制,采用了先进的教学手段和教学方法,大大提高了教学效率和教学效果,使教学活动上了一个新台阶。
数据库应用技术的发展,越来越多的软件开发人员和爱好者希望了解并掌握开发数据库应用程序的方法,而目前市场中,影碟出租系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。
而对于后者则要求应用程序功能完备,易使用等特点。
因此本人结合开放式影碟馆的要求,对MS SQL Server2000数据库管理系统、SQL语言原理,数据库技术进行了较深入的学习和应用,主要完成对影碟出租管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。
关键词:数据库, SQL语句, SQL Server等等。
Abstract:Along with multimedia technical and the NETwork correspondence technology development, based on the InterNET computer long-distance teaching takes one brand-new teaching method, more and more receives people’s attention. The computer long-distance teaching is refers uses multimedia technical and the NETwork correspondence technology, develops under the NETwork environment teaching activity. It has the traditional teaching pattern incomparable merit, it created one kind of brand-new teaching pattern, broke the traditional teaching pattern in the time, the spatial limit, used the advanced teaching method and the teaching method, and greatly enhanced the teaching efficiency and the teaching effect, caused in the teaching activity one new stair. The database application technology development, more and more many software developers and the amateur hopes understands and grASPs development database application procedure method, but in the present market, the video compact disk hiring system is the typical information management system (MIS), its development mainly includes the backstage database the establishment and the maintenance as well as front end the applicationprocedure development two ASPects. Establishes the data uniformity and the integrity regarding former request is strong, the data security good database. But requests the application procedure function regarding latter to be complete, is easy to use and so on the characteristic. Therefore personally unifies the opening -like video compact disk hall the request, to MS SQL the Server2000 database management system, the SQL language principle, the database technology carried on a more thorough study and the application, mainly completed to the video compact disk hiring management system demand analysis, the function module division, the database pattern analysis, and from this designed the database structure and the application procedure.Keywords:Data-base,SQL sentence,SQL Server and so on.目录论文摘要 1ABSTRACT 1第1章绪论31.1 数据库应用系统开发简介31.2 数据库系统31.3 影碟管理系统31.4 系统所做的工作4第2章数据库的理论知识42.1 SQL SERVER简介42.2 SQL SERVER语言简介42.3 SQLSERVER数据库操作语句6第3章VB与数据库的设计83.1 VB与SQL SERVER概述83.2使用ADO来访问数据库93.3ADO组件主要提供了以下七个对象和四个集合来访问数据库10第4章影碟出租系统应用程序设计114.1 系统窗体模块组成以及数据模块窗体的功能11 4.2 影碟管理系统数据库设计22第5章影碟出租系统的代码实现255.1数据模块窗体的设置255.2 数据库系统设计265.3利用ER方法进行数据库的概念设计265.4 关系数据库的逻辑设计28结束语29致谢30参考文献31第1章绪论1.1 数据库应用系统开发简介。
1.JAVA 课程设计任务书 (2)2. 系统功能结构框图 (3)3. 数据库设计 (4)3.1 Admin 的设计和实现 (4)3.2 DvdInfo 的设计和实现 (4)3.3 DvdTypeId 的设计和实现 (5)3.4 关系图的搭建 (5)4. 系统设计 (6)4.1实体层:vo (6)4.1.1 admin (6)4.1.2 DvdInfo (6)4.1.3 DvdId (6)4.2 数据访问层: Dao (7)4.2.1 admin (7)4.2.2 Dvd (8)4.2.3 BaseDao (13)4.3 业务层:biz (16)4.3.1 admin (16)4.3.2 DvdBiz (17)4.4 页面显示:util (17)4.4.1 定义菜单类Menu,显示操作界面 (17)4.5封装类:Manger (18)4.5测试层:test (25)5. 系统的使用 (25)5.1欢迎菜单 (25)5.2 登录 (25)5.3 管理员管理 (26)5.4 Dvd管理 (27)5.4.1查询DVD数量 (27)5.4.2 按DVD编号查询DVD信息 (27)5.4.3按名称查询DVD信息 (27)5.4.4按种类编号查询DVD信息 (28)5.4.5修改DVD信息 (28)5.4.6添加DVD信息 (28)5.4.7删除DVD信息 (29)5.4.8查看租赁排名(按借出数量) (29)5.4.9退出 (29)6.日志 (29)7. 心得体会 (30)8. 参考文献 (30)致谢 (30)1.JAVA 课程设计任务书2.系统功能结构框图3.数据库设计3.1 Admin 的设计和实现3.2 DvdInfo 的设计和实现3.3 DvdTypeId 的设计和实现3.4 关系图的搭建4.系统设计4.1实体层:vo4.1.1 admin定义管理员类,实现管理员的基本信息的设置和获取public Admin(int id, String uname, String upwd) { super();Id = id;this.uname = uname;this.upwd = upwd;}public Admin() {super();}public int getId() {return Id;}public void setId(int id) {Id = id;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getUpwd() {return upwd;}public void setUpwd(String upwd) {this.upwd = upwd;}4.1.2 DvdInfo定义DvdInfo类,实现DvdInfo的基本信息的设置和获取方法:通过get....()和set....()函数实现4.1.3 DvdId定义DvdId类,实现DvdId的基本信息的设置和获取方法:通过get....()和set....()函数实现4.2 数据访问层: Dao4.2.1 admin1.定义接口IAdminDao定义管理员类的功能public interface IAdminDao {public Admin getAdmin(String uname,String pwd);public int addAdmin(Admin admin);}2.定义接口IAdminDao接口的派生类AdminDao实现接口IAdminDao定义的功能public int addAdmin(Admin admin) {// TODO Auto-generated method stubint count=0;//创建SQL命令String sql="INSERT INTO admin values(?,?)";Object []params={admin.getUname(),admin.getUpwd()};count=super.excuteUpdate(sql, params);return count;}@Overridepublic Admin getAdmin(String uname, String upwd) {// TODO Auto-generated method stubAdmin admin=null;//创建SQL命令String sql="SELECT Id, uname, upwd FROM [Admin] WHERE uname=? And upwd=? ";//创建参数数组Object[] params={uname,upwd};//执行查询返回结果rs=super.excuteQuery(sql, params);try {while(rs.next()){admin=new Admin();admin.setId(rs.getInt("id"));admin.setUname(rs.getString("uname"));admin.setUpwd(rs.getString("upwd"));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return admin;}4.2.2 Dvd1.定义接口IDvdDao定义DVD管理系统的基本功能/*** 查询DVD数量*/public int dvdCount();/*** 按DVDId查询DVD信息* @param* @return*/public DvdInfo getDvdInfoById(int DvdId);/*** 按姓名查询* @param name* @return*/public List<DvdInfo> getDvdInfoByName(String name);/*** 删除DVD信息* @param dvdid* @return*/public int delDvd(int Dvdid);/*** 更新数据* @param dvd* @return*/public int updateDvd(DvdInfo dvd);/*** 增加Dvd信息*/public int adddateDvd(DvdInfo dvd);* 按DVD种类id查询* @param dvdTypeId* @return*/public List<DvdInfo> getDvdInfoByTypeId(int dvdTypeId);/*** 按冒泡排序法查看租赁排名*/p ublic List<DvdInfo> sortDvdInfoBylendcount();2.定义接口IDvdDao的派生类DvdDaoImpl实现接口IDvdDao 的功能public int dvdCount() {int count=0;//编写SQL命令String sql="SELECT COUNT(dvdid) as dvdcount FROM DvdInfo";//创建参数数组Object[] params=null;//调用BaseDao中的查询方法返回结果rs=super.excuteQuery(sql, params);try {if(rs.next()){count=rs.getInt("dvdcount");}} catch (SQLException e) {e.printStackTrace();}finally{super.closeAll();}return count;}/*** 按Dvdid查询dvd信息*/@Overridepublic DvdInfo getDvdInfoById(int DvdId) {//编写SQL命令String sql="SELECT DvdId, DvdName, DvdLendCount, dvdLendPrice, DvdTypeId FROM DvdInfo WHERE DvdId=?";//创建参数数组Object[] params={DvdId};//声明Dvd对象DvdInfo dvd=null;//创建Dvd集合List<DvdInfo> dvdList=new ArrayList<DvdInfo>();rs=super.excuteQuery(sql, params);try {while(rs.next()){dvd= new DvdInfo();dvd.setDvdId(rs.getInt("DvdId"));dvd.setDvdLendCount(rs.getInt("DvdLendCount"));dvd.setDvdName(rs.getString("DvdName"));dvd.setDvdLendPrice(rs.getInt("dvdLendPrice"));dvd.setDvdTypeId(rs.getInt("DvdTypeId"));dvdList.add(dvd);}} catch (SQLException e) {e.printStackTrace();}return dvd;}//按DvdName查询@Overridepublic List<DvdInfo> getDvdInfoByName(String DvdName) {//编写SQL命令String sql="SELECT DvdId, DvdName, DvdLendCount, dvdLendPrice, DvdTypeId FROM DvdInfo WHERE DvdName=?";//创建参数数组Object[] params={DvdName};//声明Dvd对象DvdInfo dvd=null;//创建Dvd集合List<DvdInfo> dvdList=new ArrayList<DvdInfo>();rs=super.excuteQuery(sql, params);try {while(rs.next()){dvd= new DvdInfo();dvd.setDvdId(rs.getInt("DvdId"));dvd.setDvdLendCount(rs.getInt("DvdLendCount"));dvd.setDvdName(rs.getString("DvdName"));dvd.setDvdLendPrice(rs.getInt("dvdLendPrice"));dvd.setDvdTypeId(rs.getInt("DvdTypeId"));dvdList.add(dvd);}} catch (SQLException e) {e.printStackTrace();}return dvdList;}/*** 按Dvd类别id查询*/public List<DvdInfo> getDvdInfoByTypeId(int DvdTypeId) {// 编写SQL命令String sql="SELECT DvdId, DvdName, DvdLendCount, dvdLendPrice, DvdTypeId FROM DvdInfo WHERE DvdTypeId=?";//创建参数数组Object[] params={DvdTypeId};//声明DVD对象DvdInfo dvd=null;//创建DVD集合List<DvdInfo> dvdList=new ArrayList<DvdInfo>();rs=super.excuteQuery(sql, params);try {while(rs.next()){dvd= new DvdInfo();dvd.setDvdId(rs.getInt("DvdId"));dvd.setDvdLendCount(rs.getInt("DvdLendCount"));dvd.setDvdName(rs.getString("DvdName"));dvd.setDvdLendPrice(rs.getInt("dvdLendPrice"));dvd.setDvdTypeId(rs.getInt("DvdTypeId"));dvdList.add(dvd);}} catch (SQLException e) {e.printStackTrace();}return dvdList;}@Overridepublic int delDvd(int Dvdid) {int count=0;//编写SQL命令String sql="DELETE FROM DvdInfo where DvdId=?";//创建参数数组Object[] params={Dvdid};count=super.excuteUpdate(sql, params);return count;}/*** 为什么要传递对象?* 因为:不能确定用户到底修改的是哪条数据,所以传递该对象* 该对象中保存的是用户修改后的包含新数据的对象* 添加dvd信息*/@Overridepublic int updateDvd(DvdInfo dvd) {int count=0;//编写SQL命令String sql="UPDATE DvdInfo SETDvdLendCount=?,DvdName=?,DvdTypeId=?,dvdLendPrice=? where DvdId=?";//创建参数数组Object[]params={dvd.getDvdLendCount(),dvd.getDvdName(),dvd.getDvdTypeId(),dvd.getDvdLendPr ice(),dvd.getDvdId()};count=super.excuteUpdate(sql, params);return count;}public int adddateDvd(DvdInfo dvd){int count=0;//编写SQL命令String sql="insert into DvdInfo select ?, ?,?, ? ";//创建参数数组Object[]params={dvd.getDvdName(),dvd.getDvdLendCount(),dvd.getDvdLendPrice(),dvd.getDvdTyp eId()};count=super.excuteUpdate(sql, params);return count;}@Overridepublic List<DvdInfo> sortDvdInfoBylendcount() {int count=this.dvdCount();// 编写SQL命令String sql="SELECT DvdId, DvdName, DvdLendCount, dvdLendPrice, DvdTypeId FROM DvdInfo";//创建参数数组Object[] params=null;DvdInfo dvd[]=new DvdInfo[count];List<DvdInfo> dvdList=new ArrayList<DvdInfo>();rs=super.excuteQuery(sql, params);try {int x=0;while(rs.next()){dvd[x]= new DvdInfo();dvd[x].setDvdId(rs.getInt("DvdId"));dvd[x].setDvdLendCount(rs.getInt("DvdLendCount"));dvd[x].setDvdName(rs.getString("DvdName"));dvd[x].setDvdLendPrice(rs.getInt("dvdLendPrice"));dvd[x].setDvdTypeId(rs.getInt("DvdTypeId"));dvdList.add(dvd[x]);x++;if(x==count){break;}}} catch (SQLException e) {e.printStackTrace();}for(int i=0;i<count;i++){for(int j=0;j<count-1;j++){DvdInfo temp=new DvdInfo();if(dvd[j].getDvdLendCount()>dvd[j+1].getDvdLendCount()){temp=dvd[j];dvd[j]=dvd[j+1];dvd[j+1]=temp;}}}for(int i=0;i<count;i++){System.out.println("\n\t\t\t"+dvd[i].getDvdId()+"\t\t"+dvd[i].getDvdName()+"\t \t"+dvd[i].getDvdLendCount()+"\t\t"+dvd[i].getDvdLendPrice()+"\t\t"+dvd[i].getDvdT ypeId());}return dvdList;}4.2.3 BaseDao数据库操作功能封装类该类的功能:连接数据库关闭数据库的连接执行对数据库的增,删,改,查private static final String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";private static final StringURL="jdbc:sqlserver://127.0.0.1:1433;databasename=mySchoolDB";private static final String UNAME="sa";private static final String UPWD="ok";//在静态块中进行驱动的管理static{try {Class.forName(DRIVER);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** Connection:数据库连接对象* DriverManage:数据库驱动管理类* ResultSet:结果集对象* PreparedStatement:数据库与处理对象*/protected Connection conn=null;protected PreparedStatement pstmt=null;protected ResultSet rs=null;/*** 创建数据库的连接对象*/private void getConn(){try {conn=DriverManager.getConnection(URL,UNAME,UPWD);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 关闭数据库连接以及释放资源*/public void closeAll(){if(null!=rs)try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(null!=pstmt)try {pstmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(null!=conn)try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public ResultSet excuteQuery(String sql,Object[] params){ //调用数据库连接对象的方法this.getConn();//创建数据库与处理对象try {pstmt = conn.prepareStatement(sql);//判断是否有参数,如果有参数,通用过预处理对象进行SQL命令if(params!=null){for(int i=0;i<params.length;i++){//将传递来的参数通过预处理对象放入SQL语句中pstmt.setObject(i+1, params[i]);}}rs=pstmt.executeQuery();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return rs;}/*** 执行数据库操作:增,删,改* @param sql* @param params* @return*/public int excuteUpdate(String sql,Object[] params){ int count=0;this.getConn();try {pstmt=conn.prepareStatement(sql);for(int i=0;i<params.length;i++){pstmt.setObject(i+1, params[i]);}count=pstmt.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{this.closeAll();}return count;}4.3 业务层:biz4.3.1 admin1.定义IAdminBiz接口实现管理员的登录和注册/*** 管理员登录*/public int register(Admin admin);/*** 管理员注册*/public boolean validateLogin(String uname, String pwd);2.定义接口IAdminBiz接口的派生类IAdminBizImpl实现接口IAdminBiz的功能IAdminDao adminDao=new AdminDaoImpl();Scanner input = new Scanner(System.in);@Overridepublic int register(Admin admin) {int count=adminDao.addAdmin(admin);return count;}@Overridepublic boolean validateLogin(String uname, String pwd) { boolean isLogin=false;Admin admin=adminDao.getAdmin(uname, pwd);if(admin!=null){isLogin=true;return isLogin;}return isLogin;}4.3.2 DvdBiz1.定义IDvdBiz接口实现管理员的登录和注册2.定义接口IDvdBiz接口的派生类IDvdBizImpl实现接口IDvdBiz的功能4.4 页面显示:util4.4.1 定义菜单类Menu,显示操作界面/*** 欢迎菜单---系统的首页*/public void welComeMenu(){System.out.println("\n\t\t\t\t*******************************************");System.out.println("\t\t\t\t**** XXX商店DVD管理系统****");System.out.println("\t\t\t\t*******************************************");System.out.println("\n\t\t\t\t*******************************************");System.out.println("\t\t\t\t>>>>>>当前位置:登录界面");System.out.println("\t\t\t\t*******************************************");System.out.println("\n\t\t\t\t**** 1:登录****");System.out.println("\n\t\t\t\t**** 2:注册****");System.out.println("\n\t\t\t\t**** 3:退出****");System.out.print("\n\t\t\t\t请输入选择:");}/*** Dvd管理菜单*/public void main(){System.out.println("\n\t\t\t\t*******************************************");System.out.println("\t\t\t\t>>>>>>当前位置:管理界面");System.out.println("\t\t\t\t*******************************************");System.out.println("\n\t\t\t\t**** 1:管理员管理****");System.out.println("\n\t\t\t\t**** 2:Dvd管理****");System.out.print("\n\t\t\t\t 请输入选择:");}/****/public void Dvdmange(){System.out.println("\n\t\t\t\t*******************************************");System.out.println("\t\t\t\t*******************************************");System.out.println("\t\t\t\t>>>>>>当前位置:DVD管理界面");System.out.println("\t\t\t\t*******************************************");System.out.println("\n\t\t\t\t**** 1:查询DVD数量****");System.out.println("\n\t\t\t\t**** 2:按DVD编号查询DVD信息****");System.out.println("\n\t\t\t\t**** 3:按名称查询DVD信息****");System.out.println("\n\t\t\t\t**** 4:按种类编号查询DVD信息****");System.out.println("\n\t\t\t\t**** 5:修改DVD信息****");System.out.println("\n\t\t\t\t**** 6:添加DVD信息****");System.out.println("\n\t\t\t\t**** 7:删除DVD信息****");System.out.println("\n\t\t\t\t**** 8:查看租赁排名(按借出数量)****");System.out.println("\n\t\t\t\t**** 9:退出****");System.out.print("\n\t\t\t\t 请输入选择:");}4.5封装类:Manger创建封装类,是所有的函数操作的调用在此完成,减少测试类的代码量public class Dvdmanger {IAdminBiz adminBiz=new AdminBizImpl();IDvdBiz dvdBiz=new DvdBizImpl();//创建管理员业务层对象IAdminDao adminDao=new AdminDaoImpl();//创建菜单类对象Menu menu =new Menu();//创建系统扫描器Scanner input =new Scanner (System.in); public void operation(){while (true){menu.welComeMenu();int choice=input.nextInt();switch(choice){case 1:if(login()){menu.main();choice=input.nextInt();switch(choice){case 2:while(true){menu.Dvdmange();choice=input.nextInt();switch(choice){case 1:finddvdCount();break;case 2:findDvdbyId();break;case 3:findDvdbyName();break;case 4:findDvdbyTypeId();break;case 5:updateDvdInfo();break;case 6:addDvdInfo();break;case 7:delDvdInfo();break;case 8:sortDvdBylendcount();break;case 0:System.out.println("\n\t\t\t\t\t\t谢谢使用!");return;}}}};break;case 2:adminRegistered();break;case 0:System.out.print("\n\t\t\t\t\t谢谢使用!");return;default:System.out.print("\n\t\t\t\t\t输入错误,请重新输入0~2内的整数!");}}}/*** 删除Dvd信息* @param Dvdid* @return*/private void delDvdInfo() {int count =0;do{System.out.print("\n\t\t\t\t\t请输入要删除的Dvd编号:");int DvdId=input.nextInt();count=dvdBiz.delDvd(DvdId);System.out.println(count>0?"\n\t\t\t\t\t删除成功":"\n\t\t\t\t\t该DvdId不存在,删除失败,请重新输入!");}while(count==0);}/*** 查看Dvd总数*/private void finddvdCount() {int count=dvdBiz.dvdCount();System.out.println("\n\t\t\t\t\t目前DVD总数:"+count);}/*** 按DVDId查找*/private void findDvdbyId() {while(true){System.out.print("\n\t\t\t\t\t请输入要查询的Dvd编号:");int dvdId=input.nextInt();DvdInfo dvd=dvdBiz.getDvdInfoById(dvdId);if(dvd!=null){System.out.println("\n\t\t\tDvd编号\t\tDvd名字\t\tDvd借出次数\tDvd借出价格\tDvd种类编号\t\t");System.out.println("\n\t\t\t"+dvd.getDvdId()+"\t\t"+dvd.getDvdName()+"\t\t"+dvd.ge tDvdLendCount()+"\t\t"+dvd.getDvdLendPrice()+"\t\t"+dvd.getDvdTypeId());return;}else{System.out.println("\n\t\t\t\t\t该Dvd编号不存在,请重新输入!");}}}/*** 按DVD名字查找*/private void findDvdbyName() {//List<DvdInfo> dvdList=null;System.out.print("\n\t\t\t\t\t请输入要查询的Dvd名字:");String DvdName=input.next();//遍历集合List<DvdInfo> dvdList=dvdBiz.getDvdInfoByName(DvdName);Iterator<DvdInfo> it=dvdList.iterator();if(!it.hasNext()){System.out.println("\n\t\t\t\t\t该名字的DVD不存在!");}while(it.hasNext()){DvdInfo dvd=it.next();System.out.println("\n\t\t\tDvd编号\t\tDvd名字\t\tDvd借出次数\tDvd 借出价格\tDvd种类编号\t\t");System.out.println("\t\t\t"+dvd.getDvdId()+"\t\t"+dvd.getDvdName()+"\t\t"+dvd.getD vdLendCount()+"\t\t"+dvd.getDvdLendPrice()+"\t\t"+dvd.getDvdTypeId());}}/*** 按DVD种类ID查找*/private void findDvdbyTypeId() {//遍历集合System.out.print("\n\t\t\t\t\t\t请输入要查询的种类编号:");int DvdTypeId=input.nextInt();List<DvdInfo> dvdList=dvdBiz.getDvdInfoByTypeId(DvdTypeId);Iterator<DvdInfo> it=dvdList.iterator();if(!it.hasNext()){System.out.println("\n\t\t\t\t\t该种类的DVD不存在!");}while(it.hasNext()){DvdInfo dvd=it.next();System.out.println("\n\t\t\tDvd编号\t\tDvd名字\t\tDvd借出次数\tDvd借出价格\tDvd种类编号\t\t");System.out.println("\t\t\t"+dvd.getDvdId()+"\t\t"+dvd.getDvdName()+"\t\t"+dvd.getD vdLendCount()+"\t\t"+dvd.getDvdLendPrice()+"\t\t"+dvd.getDvdTypeId());}}/*** 更新DVD数据*/private void updateDvdInfo() {while(true){System.out.print("\n\t\t\t\t\t请输入要修改的Dvd编号:");int DvdId=input.nextInt();//按编号查询Dvd原始信息DvdInfo dvd=dvdBiz.getDvdInfoById(DvdId);if(dvd==null){System.out.println("\n\t\t\t\t\t该Dvd编号不存在,请重新输入!");}else{System.out.print("\n\t\t\t\t\t请输入要修改的Dvd名字:");String DvdName=input.next();System.out.print("\n\t\t\t\t\t请输入要修改的Dvd借出次数:");int DvdLendCount=input.nextInt();System.out.print("\n\t\t\t\t\t请输入要修改的Dvd借出价格:");int DvdLendPrice=input.nextInt();System.out.print("\n\t\t\t\t\t请输入要修改的Dvd种类编号:");int DvdTypeId=input.nextInt();//重新封装对象的字段数据dvd.setDvdName(DvdName);dvd.setDvdLendCount(DvdLendCount);dvd.setDvdLendPrice(DvdLendPrice);dvd.setDvdTypeId(DvdTypeId);//调用修改的方法int count =dvdBiz.updateDvd(dvd);System.out.println(count>0?"\n\t\t\t\t\t修改成功":"\n\t\t\t\t\t\t修改失败");return;}}}/*** 增加DVD信息*/private void addDvdInfo() {System.out.print("\n\t\t\t\t\t请输入要增加的Dvd名字:");String DvdName=input.next();System.out.print("\n\t\t\t\t\t请输入要增加的Dvd借出次数:");int DvdLendCount=input.nextInt();System.out.print("\n\t\t\t\t\t请输入要增加的Dvd借出价格:");int DvdLendPrice=input.nextInt();System.out.print("\n\t\t\t\t\t请输入要增加的Dvd种类编号:");int DvdTypeId=input.nextInt();DvdInfo dvd=new DvdInfo();dvd.setDvdName(DvdName);dvd.setDvdLendCount(DvdLendCount);dvd.setDvdLendPrice(DvdLendPrice);dvd.setDvdTypeId(DvdTypeId);int count =dvdBiz.adddateDvd(dvd);System.out.println(count>0?"\n\t\t\t\t\t增加成功":"\n\t\t\t\t\t增加失败");}/*** 管理员登录* @return*/private boolean login(){int count=0;String name="";String pwd="";boolean islogin=false;do{if(count!=3){System.out.print("\n\t\t\t\t\t请输入用户名:");name=input.next().trim();System.out.print("\n\t\t\t\t\t请输入密码:");pwd=input.next().trim();}else{System.out.print("\n\t\t\t\t\t已错误三次,退出程序");System.exit(1);}count++;if(!(islogin=adminBiz.validateLogin(name,pwd))){System.out.println("\n\t\t\t\t\t用户名和密码错误,请重新输入!");}}while((!(islogin=adminBiz.validateLogin(name,pwd))));return islogin;}/*** 管理员注册*/private void adminRegistered(){Scanner input =new Scanner (System.in);System.out.print("\n\t\t\t\t\t请输入用户名:");Admin admin=new Admin();admin.setUname(input.next());System.out.print("\n\t\t\t\t\t请输入密码:");admin.setUpwd(input.next());int count=adminDao.addAdmin(admin);System.out.println(count>0?"\n\t\t\t\t\t注册成功":"\n\t\t\t\t\t注册失败");}private void sortDvdBylendcount(){System.out.println("\n\t\tDvd编号\t\tDvd名字\t\tDvd借出次数\tDvd借出价格\tDvd 种类编号");dvdBiz.sortDvdInfoBylendcount();}4.5测试层:test定义测试类test,调用封装类的函数,运行此工程public static void main(String args[]){Dvdmanger manger=new Dvdmanger();manger.operation();}5.系统的使用5.1欢迎菜单5.2 登录5.3 管理员管理5.4 Dvd管理5.4.1查询DVD数量5.4.2 按DVD编号查询DVD信息5.4.3按名称查询DVD信息5.4.4按种类编号查询DVD信息5.4.5修改DVD信息5.4.6添加DVD信息5.4.7删除DVD信息5.4.8查看租赁排名(按借出数量)5.4.9退出6.日志12.28 完成vo层,BaseDao12.29 基本完成dao层7.心得体会这次课程设计有我深刻体会到系统分析的重要性。
武汉理工大学华夏学院课程设计课程名称数据库原理课程设计题目:碟片出租管理子系统数据库设计专业班级姓名成绩指导教师2013 年6 月17 日至2013年6月21日课程设计任务书设计题目:碟片出租管理子系统数据库设计设计目的:1. 学会分析研究数据对象的特性;2. 学会数据的组织方法;3. 选择合适的数据的存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理;4. 提高学生的运用能力、提高数据库设计素质;设计任务:(在规定的时间内完成下列任务)1、管理者(店长)模块:查询碟片的信息;查询相关的财务信息;会员的管理。
2、营业员(操作员)模块:查询碟片信息;进行碟片的出租;进行碟片的归还;现金的收支记录;会员的管理。
3、顾客模块:一般的顾客只能进行碟片信息的查询;会员可以查询碟片信息,查询自己的碟片出租日志。
具体要完成的任务是:A. 编制完成上述问题的数据库设计并能得出正确的运行结果。
B. 采取统一格式:有问题描述、基本要求、测试数据及实现方法等组成写出规范的课程设计说明书;时间安排6月17日布置课程设计任务;6月18日分配题目后,查阅资料、准备程序;6月19,20 日上机调试程序、书写课程设计报告;6月21日下午提交课程设计报告及相关文档具体要求课程设计报告按统一通用格式书写,具体格式要求请在网络上查阅;每位学生应独立完成各自的任务;指导教师签名: 13 年6月15 日教研室主任(或责任教师)签名:13 年6月15日1.问题描述1.1背景随着影视界的规模的不断扩大,碟片的数量也相应的增加,有关碟片的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致碟片管理上的混乱,人力与物力过多浪费,碟片出租管管理费用的增加,从而使碟片出租馆的负担过重,影响整个碟片的出租的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的碟片管理系统,对碟片资料进行集中统一的管理。
另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。
提高碟片管理工作效率,作到信息的规范管理,科学统计和快速查询,让碟片馆更好的为客户,社会服务。
从而达到经济效益,人力资源双丰收。
2.系统需求分析2.1数据需求碟屋出租管管理信息系统需要完成功能主要有:1. 顾客基本信息的输入,包括租碟证编号、顾客姓名、顾客性别,会员,登记日期。
2. 顾客基本信息的查询、修改,包括顾客租碟证编号、顾客姓名、顾客性别、会员等。
3.碟片类别标准的制定、类别信息的输入,包括类别编号、类别名称。
4.碟片类别信息的查询、修改,包括类别编号、类别名称。
5.碟片库存信息的输入,包括碟片编号、碟片名称、碟片类别、导演、演员名称、发片日期、登记日期,价钱每天。
6.碟片库存信息的查询,修改,包括碟片编号、碟片名称、碟片类别、导演、演员名称、发片日期、登记日期等。
7.租片信息的输入,包括顾客租碟证编号、碟片编号、租碟日期,天数。
8.租片信息的查询、修改,包括租碟证编号、顾客姓名、碟片编号、碟片名称、租碟日期等。
9.还碟信息的输入,包括租碟证编号、碟片编号、还碟日期。
10.还碟信息的查询和修改,包括还碟顾客租碟证编号、顾客姓名、碟片编号、碟片名称、租碟日期、还碟日期等。
11. 收支信息的输入,包括收支记录编号、租碟证编号、收银,收银日期。
12. 收支信息的查询和修改,包括租碟编号、碟片编号、收银等2.2功能需求(1)在顾客信息管理部分,要求:a.可以查询顾客信息。
b.可以对顾客信息进行添加及删除的操作。
(2 )在碟片信息管理部分,要求:a.可以查询碟片信息,要求:b.可以对碟片信息进行维护,包括添加及删除的操作。
(3)在租碟信息管理部分,要求:。
a.可以查询租碟信息。
b.可以对租碟信息进行维护操作。
(4)在归还信息管理部分,要求:a.可以浏览归还信息b.对归还信息可修改维护操作(5)在对财务信息管理部分,要求:a.查询收支信息的收银B.查询收支每月的总和(6)在对会员信息管理部分,要求:a.查询会员信息要求;B.可以对会员信息进行添加和删除;3.概念结构设计3.1 E-R图根据需求分析所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。
碟片管理信息系统可以划分的实体有:碟片类别信息实体、顾客信息实体、碟片信息实体、租碟记录信息实体,归还记录信息实体。
用E-R图一一描述这些实体。
3.1.1碟片类别实体3.1.2顾客信息3.1.3碟片库存信息3.1.4租碟信息3.1.4还碟信息3.1.5收支信息3.2 总体E-R图4.逻辑结构设计4.1 关系模式转换根据实体的属性就是关系的属性,实体的码就是关系的码,以及独立和合并的原则建立如下表:(1)碟类别表dish_style(dishstyle_no ,dishstyle_name);(2)顾客信息表system_customer(customer_id ,customer_name ,customer_sex , customer_member,regdate datetime)(3)碟库存表system_dishs(dish_id,dish_name,, dish_director , dish_mainactor , dish_date , dish_priceperday , isrented);(4)租碟表rent_record (dish_id ,cuostomer_id ,rentdate , rentdaty );(5)归还表return_record(dish_id ,customer_id , returndate);(6)收支表dish_recepits (receipts_id,customer_id , receipts_date, );(7)会员表member(memeber_no ,customer_id , regdatetime);4.2 关系模式优化根据规范化理论的原则对其优化后的表如下:(1)碟类别表dish_style(dishstyle_no ,dishstyle_name);(2)顾客信息表system_customer(customer_id ,customer_name ,customer_sex , customer_member,regdate datetime)(3)碟库存表system_dishs(dish_id,dish_name, dishstyle_no , dish_director ,dish_mainactor , dish_date , dish_priceperday , isrented);(4)租碟表rent_record (dish_id ,cuostomer_id ,rentdate , rentdaty );(5)归还表return_record(dish_id ,customer_id , returndate);(6)收支表dish_recepits (receipts_id,customer_id , receipts_date, dishrecepits );5.物理结构设计5.1 创建数据库USE masterGOCREATE DATABASE dish_housesystemON(NAME='dish_housesystem',FILENAME='d:\sql\dish_housesystem.mdf',SIZE= 10,MAXSIZE= 50,FILEGROWTH= 5 )LOG ON(NAME='dish_house',FILENAME='d:\sql\dish_housesystem.ldf',SIZE= 5MB,MAXSIZE= 25MB,FILEGROWTH= 5MB )GO5.2 创建表5.2.1碟类别表create table dish_style(dishstyle_no varchar(30)primary key,dishstyle_name varchar(30))5.2.2顾客表create table system_customer( customer_id varchar(9)primary key,customer_name varchar(9)not null,customer_sex nchar(1)check(customer_sex in('男','女'))default'男', customer_member bit not null,regdate datetime)5.2.3碟存库表create table system_dishs(dish_id varchar(20)primary key,dish_name varchar(30)Not null,dishstyle_no varchar(30)Not null,dish_director varchar(30),dish_mainactor varchar(30),dish_date datetime,dish_pirceperday money,isrented varchar(2),foreign key(dishstyle_no)references dish_style (dishstyle_no),)5.2.4租碟表create table rent_record( dish_id varchar(20)primary key,customer_id varchar(9),rentdate datetime,rentday int,foreign key(dish_id)references system_dishs(dish_id),foreign key(customer_id)references system_customer(customer_id), )5.2.5归还表create table return_record(dish_id varchar(20)primary key,customer_id varchar(9),returndate datetime,foreign key(dish_id)references system_dishs(dish_id),foreign key(customer_id)references system_customer(customer_id), )5.2.6收支信息表create table dish_recepits(recepits_id varchar(20)primary key,customer_id varchar(9),recepits_date datetime not null,dishrecepits money not null,foreign key(customer_id)references system_customer(customer_id), )5.3 表与表之间的联系表5.16.数据库的实施6.1 初始化6.1.1将碟片类别加入到碟类别表dish_style中insert into dish_style(dishstyle_no,dishstyle_name) values('1','爱情片')insert into dish_style(dishstyle_no,dishstyle_name) values('2','喜剧片')insert into dish_style(dishstyle_no,dishstyle_name) values('3','伦理片')insert into dish_style(dishstyle_no,dishstyle_name) values('4','动作片')insert into dish_style(dishstyle_no,dishstyle_name) values('5','恐怖片')insert into dish_style(dishstyle_no,dishstyle_name) values('6','战争片')insert into dish_style(dishstyle_no,dishstyle_name) values('7','科幻片')6.1.2将顾客加入到顾客表system_customer中insert into system_customervalues('110001','张三','男','True','2013-4-23 12:10:13')insert into system_customervalues('110002','李小','男','True','2013-5-23 9:12:10')insert into system_customervalues('000001','赵铭静','女','True','2005-10-23 9:12:10')insert into system_customervalues('000002','潘虹','女','False','2005-9-23 10:12:10')insert into system_customervalues('000003','李叶风','女','False','2007-9-23 11:12:10')insert into system_customervalues('000004','王五','男','False','2006-9-23 12:12:10')insert into system_customervalues('110005','陈特','男','False','2008-9-23 8:12:10')insert into system_customervalues('110003','廖乐','男','True','2012-9-23 7:12:10')6.1.3将碟片加入到库存表system_dishs中insert system_dishsvalues('x00001','喜剧之王','2','王晶','周星驰','2008-10-2','2','1') insert system_dishsvalues('x00002','电锯惊魂','5','王一','周里','2009-10-2','3','1') insert system_dishsvalues('x00003','十二生肖','4','成龙','成龙','2008-10-2','2','1') insert system_dishsvalues('x00004','婚前试爱','1','王晶里','大S','2007-10-2','4','1') insert system_dishsvalues('x00005','永恒','3','赵德利','陈立','2007-10-2','2','1') insert system_dishsvalues('x00006','民兵葛二蛋','6','黄冈','黄渤','2010-10-2','3','1') insert system_dishsvalues('x00007','盗梦空间','7','赵三','周华','2012-10-2','4','1') 6.1.4将碟片加入到租碟表rent_record中insert into rent_recordvalues('x00001','110001','2012-12-5','3')update system_dishsset isrented=0where dish_id='x00001'insert into rent_recordvalues('x00002','110002','2012-12-5','2') update system_dishsset isrented=0where dish_id='x00002'insert into rent_recordvalues('x00004','000001','2012-12-5','3') update system_dishsset isrented=0where dish_id='x00004'insert into rent_recordvalues('x00003','000004','2012-12-5','3') update system_dishsset isrented=0where dish_id='x00003'insert into rent_recordvalues('x00006','110005','2012-12-5','4') update system_dishsset isrented=0where dish_id='x00006'6.1.5将碟片加入到归还表return_record中insert into return_recordvalues('x00001','110001','2012-12-8')delete from rent_record where dish_id='x00001' 6.1.6将收入加入到收支表dish_recepits中insert into dish_recepits values('a00001','110002','2012-12-5','6')insert into dish_recepits values('a00002','000001','2012-12-6','12')insert into dish_recepits values('a00003','000004','2012-12-5','6')insert into dish_recepits values('a00004','110005','2012-12-6','12')insert into dish_recepits values('a00005','110001','2012-12-5','6')6.2数据的查询功能6.2.1碟片的查询图6-1表system_dishs中内容6.2.2会员管理图6-2表system_customer中内容6.2.3碟片出租和查询这里首先需要查询碟片信息,如图6-1,然后可以查询其是否被出租的状态,然后将需要出租的碟片加入到出租碟表中更改该碟片信息在库存中的信息。