华南理工数据库课程设计作业上.docx
- 文档编号:23428750
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:23
- 大小:316.16KB
华南理工数据库课程设计作业上.docx
《华南理工数据库课程设计作业上.docx》由会员分享,可在线阅读,更多相关《华南理工数据库课程设计作业上.docx(23页珍藏版)》请在冰豆网上搜索。
华南理工数据库课程设计作业上
一、课程设计内容基本要求
1、工厂管理数据库
工厂需建立一个管理数据库存储以下信息:
*工厂信息包括工厂代号,工厂名,厂长名及工厂运营开销。
*一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址,电话及每个月的车间运营开销。
*一个车间有多个工人,每个工人有职工号、姓名、年龄、性别,工种及月工资。
*一个车间生产多种产品,产品有产品号、产品名、规格,制造成本和销售价格。
*一个车间生产多个零件,一个零件也可能由多个车间制造。
零件有零件号、零件名,制造成本和销售价格。
*一个产品由多个零件组成,一个零件也可装配出多种产品。
*产品与零件均存入仓库中。
*厂内有多个仓库,仓库有仓库号,仓库主任姓名、电话及仓库的运营成本。
应完成的主要功能:
(1)各种各样的管理功能,如工厂信息的管理功能,包括录入、修改、查询、输出工厂的信息;车间信息的管理功能,包括录入、修改、查询、输出车间的信息;还有工人,零件,产品,仓库等的信息管理功能。
(2)工厂的利润统计,包括月利润和年利润统计。
(3)能输出各种各样的报表,如工人工资月报表,年报表;每个车间生产的产品和零件数量的月报表;仓库存储产品和零件数量的月报表;工厂运营开销和车间运营开销的月报表等。
2、开发环境
数据库选用微软的SQLSERVER。
开发环境可以选择:
(1)Delphi;
(2)VisualBasic;(3)C++builder;(4)VisualC++。
只选择其中的一种软件开发工具就可以。
3、基本要求
(1)完成问题陈述中所提到的所有需求功能
(2)要求撰写不少于2500个文字的文档。
(3)文档中至少要包括:
ER模型图、系统功能图、数据字典、表关系的详细说明。
(4)用户界面设计:
采用窗口式,色彩要柔和,界面要友好,操作要简单。
(5)用户手册,描述软件系统所具有的功能及基本的使用方法。
使用户能了解该软件的用途,并能确定在什么情况下、如何使用它。
(6)操作手册,为操作人员提供该软件每一个运行的具体过程和相关知识,包括操作方法的细节等。
4、文档格式
(1)概述
包括项目背景、编写目的、软件定义、开发环境等内容。
(2)需求分析
问题陈述、需完成的功能。
画出ER模型图
(3)数据库逻辑设计
把ER模型图转换为关系表。
描述每一个基本表关系。
要求所有关系达到BCNF范式。
定义视图、定义索引、主关键字、定义权限。
(4)软件功能设计
画出软件功能图。
描述每一个功能所完成的任务情况。
(5)界面设计
界面设计要合理。
(6)结束语
写出完成本课程设计的心得,领会数据库理论与软件开发实践的关系。
有哪些收获。
软件还需要哪些改进。
二、需求分析
1、功能需求
本课题任务是开发一个小型的工厂管理系统,一个小型的工厂管理系统是实现对工厂基本信息(工厂、车间、工人、产品等数据)进行管理。
主要功能:
(1)各种各样的管理功能,如工厂信息的管理功能,包括录入、修改、查询、输出工厂的信息;车间信息的管理功能,包括录入、修改、查询、输出车间的信息;还有工人,零件,产品,仓库等的信息管理功能。
(2)工厂的利润统计,包括月利润和年利润统计。
(3)能输出各种各样的报表,如工人工资月报表,年报表;每个车间生产的产品和零件数量的月报表;仓库存储产品和零件数量的月报表;工厂运营开销和车间运营开销的月报表等。
工厂需建立一个管理数据库存储以下信息:
*工厂信息包括工厂代号,工厂名,厂长名及工厂运营开销。
*一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址,电话及每个月的车间运营开销。
*一个车间有多个工人,每个工人有职工号、姓名、年龄、性别,工种及月工资。
*一个车间生产多种产品,产品有产品号、产品名、规格,制造成本和销售价格。
*一个车间生产多个零件,一个零件也可能由多个车间制造。
零件有零件号、零件名,制造成本和销售价格。
*一个产品由多个零件组成,一个零件也可装配出多种产品。
*产品与零件均存入仓库中。
*厂内有多个仓库,仓库有仓库号,仓库主任姓名、电话及仓库的运营成本。
2、数据字典
数据项
表1.1
数据项名含义说明数据类型长度
厂名工厂相关信息char()20
厂长名工厂相关信息char()6
车间号车间相关信息int()10
车间主任车间相关信息char()6
地址车间相关信息char()20
电话车间相关信息int()11
员工号员工相关信息int()10
职位编号员工相关信息char()20
姓名员工相关信息char()6
年龄员工相关信息int()2
性别员工相关信息char()2
工种员工相关信息char()20
地址员工相关信息char()20
电话员工相关信息int()11
产品号产品相关信息int()10
价格产品相关信息int()10
产品名称产品相关信息char()20
车间号产品相关信息int()10
零件号零件相关信息int()10
重量零件相关信息int()10
价格零件相关信息int()10
仓库保管员编号仓库相关信息int()10
姓名仓库相关信息char()6
电话仓库相关信息int()11
数据结构
表1.2
数据结构名含义说明组成
工厂表定义了工厂的相关信息厂名,厂长
车间表定义了车间的相关信息车间编号,车间名称,车间主任编号,备注
员工表定义了员工表的相关信息员工号,姓名,工种,职位编号,年龄,
性别,电话,地址
产品表定义了产品的相关信息编号,产品名称,价格,车间编号,备注
零件表定义了零件的相关信息零件号,重量,价格
车间-零件表定义了车间与零件的相关信息车间编号,零件号
产品-零件表定义了产品与零件的相关信息产品编号,零件号
仓库表定义仓库的相关信息编号,管理员姓名,电话
零件-仓库表定义了零件与仓库的相关信息仓库编号(主键),零件编号
产品-仓库表定义了产品与仓库的相关信息仓库编号(主键),产品编号
3、数据流图
数据流1是管理员登陆输入工厂的订单信息,以及生产的细节产品的规格等等
数据流2是工厂生产好的产品后的产品信息以及存入工厂
图2.1第0层数据流图
图1.2第1层数据流图
图1.31第3层数据流
图1.32第3层数据流
图1.33第3层数据流
数据流
数据存储
数据存储名含义说明组成
车间信息储存了车间的相关信息车间地址,车间名称,车间主任
员工信息储存了员工的相关信息姓名性别职位号,年龄,电话地址
产品信息储存了产品的相关信息产品号,价格,生产地
零件信息定义了零件的相关信息零件号,价格
仓库信息定义仓库的相关信息仓库号,电话
处理过程
表1.5
处理过程名含义说明输入输出
生产过程查找所要生产的零件信息零件信息零件
生产过程查找所要生产的产品信息产品信息产品
储存过程查找出零件储存的仓库号仓库信息零件
储存过程查找出产品储存的仓库号仓库信息产品
三、概念结构设计
1、实体
通过对上面的系统总体分析,可以得到大概的实体-关系模型(E-R模型),如下:
员工:
{姓名,性别,年龄,住址,电话,职位号}
车间:
{车间名称,车间地址,车间主任}
产品:
{产品号,价格,生成地}
零件:
{零件号,价格}
仓库:
{仓库电话,管理员,仓库号}
则对应的E-R如下:
2、局部的E-R图
事务规则:
一个车间可以容纳多名员工(1:
n)
事物规则:
一个车间能生产多种零件(1:
n)
事物规则:
一个仓库能保管多种零件(1:
n)
事物规则:
一个零件能够组装多个产品(M:
N)
一个产品可以由多个零件构成(N:
M)
3、总体的E-R图
四、逻辑模式设计
1、将E-R图转化为关系模式
逻辑结构设计的任务是将概念结构设计的E-R图,转化为与选用的DBMS所支持的数据模型相符的逻辑结构,形成逻辑模型。
关系模型(第1数据项为主键):
工厂(厂名,厂长名)
车间(车间号,车间主任,地址,电话,备注)
员工(职工号,姓名,工种,职位编号,年龄,性别,电话,地址)
产品(产品号,产品名称,价格,车间编号,备注)
零件(零件号,重量,价格)
仓库(仓库号,仓库保管员,姓名,电话)
车间-零件(车间号,零件号)
产品-零件(产品号,零件号)
零件-仓库(仓库号,零件号)
产品-仓库(仓库号,产品号)
2、数据模型的优化
将转化的关系模式进行优化,最终达到第三范式。
优化后的关系模式如下:
工厂(厂名,厂长名)
车间(车间号,车间主任,地址,电话)
员工(职工号,姓名,工种,职位编号,年龄,性别,电话,地址)
产品(产品号,产品名称,价格,车间编号,备注)
零件(零件号,重量,价格)
仓库(仓库号,仓库保管员号,姓名,电话)
车间-零件(车间号,零件号)
产品-零件(产品号,零件号)
零件-仓库(仓库号,零件号)
产品-仓库(仓库号,产品号)
表3.1工厂信息表(gc)
字段名称数据类型长度约束属性
厂名char()20NOTNULL主码
厂长名char()6NOTNULL非主属性
表3.2车间信息表(cj)
字段名称数据类型长度约束属性
车间号int()10NOTNULL主码
车间主任char()6NOTNULL非主属性
地址char()20NOTNULL非主属性
电话int()11NOTNULL非主属性
备注char()20NOTNULL非主属性
表3.3员工信息表(yg)
字段名称数据类型长度约束属性
职工号int()10NOTNULL主码
姓名char()6NOTNULL非主属性
工种char()20NOTNULL非主属性
职位编号char()20NOTNULL非主属性
年龄int()2NOTNULL非主属性
性别char()2NOTNULL非主属性
地址char()20NOTNULL非主属性
电话int()11NOTNULL非主属性
表3.4产品信息表(cp)
字段名称数据类型长度约束属性
产品号int()10NOTNULL主码
产品名称char()20NOTNULL非主属性
价格int()10NOTNULL非主属性
车间编号int()10NOTNULL非主属性
备注char()20NOTNULL非主属性
表3.5零件信息表(lj)
字段名称数据类型长度约束属性
零件号int()10NOTNULL主码
重量int()10NOTNULL非主属性
价格int()10NOTNULL非主属性
表3.6仓库信息表(ck)
字段名称数据类型长度约束属性
仓库号int()10NOTNULL主码
仓库保管员号int()10NOTNULL非主属性
姓名char()6NOTNULL非主属性
电话int()11NOTNULL非主属性
表3.7车间-零件生产关系表(cjlj)
字段名称数据类型长度约束属性
车间号int()10NOTNULL外码
零件号int()10NOTNULL外码
表3.8产品-零件组成关系表(cplj)
字段名称数据类型长度约束属性
产品号int()10NOTNULL外码
零件号int()10NOTNULL外码
表3.9零件-仓库存储关系表(ljck)
字段名称数据类型长度约束属性
零件号int()10NOTNULL非属性
仓库号int()10NOTNULL外码
表3.10产品-仓库存储关系表(cpck)
字段名称数据类型长度约束属性
产品号int()10NOTNULL非属性
仓库号int()10NOTNULL外码
五、检验是否满足用户需求
◆例行事务需求
1:
要在车间表中添加新的数据,基本格式为
Insertinto<基本表名>[(〈列名1〉,<列名2),…,<列名n>)]
VALUES(<列值1>,<列值2>,…,<列值3>)
2:
要修改职位表的数据,则要使用UPDATE语句,基本格式为
UPDATE<基本表名>
SET<列名>=<表达式>[,<列名>=<表达式>]...
[WHERE<条件>]
3:
删除操作
DROPVIEW〈视图名〉
◆查询事务需求
因为该课程设计要求是能实现查询各车间,生产的产品和零件信息,查询各仓库中产品和零件信息,所以重点在此。
先说说明查询的基本格式:
SELECET[ALL|DISTINCT]<列名或表达式>[别名1][,<列名或表达式>[别名2]]…
FROM<表名或视图名>[表别名1][,<表明或视图名>[表别名2]]…
[WHERE<条件表达式>]
[GROUPBY<列名>][HAVING<条件表达式>]
[ORDERBY〈列名2〉][ASC|DESE]
例:
select*
fromcp,lj
wherecpbhin(selectcpbhfromljcj),
andljnoin(selectljnofromljcj);
select*
fromcp,lj
wherecpbhin(selectcpbhfromcplj),
andljbhin(selectljbhfromcplj);
六、代码设计和界面设计
下面是主要的界面:
主要的源代码:
<%@pagecontentType="text/html;charset=gb2312"language="java"
import="java.sql.*"errorPage=""%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitionl//EN"
"">
useBeanid="login"scope="session"class="reg.dbconn"/> <% StringUserName=request.getParameter("username"); StringPassword=requset.geTParmeter("password"); StringError=newString(); ResultSetrs; rs=login.executeQuery("selectpasswordfromuser_infowhereusername="+UserName""); Password2=rs.getString("password"); if(Password.equal(Password2)) { %>
<%
}
else
{
Error+="登陆错误:
没有次用户
";
Error=(String)session.getAttribute("ERROR");
%>
forwardpage="error.jsp"/> <% } %> 下面是连接数据库的一部分的代码: importjava.sql.*; publicclassdbconn { StringsDBDriver="sun.jdbc.odbc.JbdcodbcDriver"; StringsConnStr="jsbc: odbc: reg"; Connectionconn=null; ResultSetrs=null; publicdbconn() { try { Class.forName(sDBriver); } catch(java.lang.ClassNotFoundExceptione) { System.err.println("classdbconnectnotfound! "+e.getMessage()); } } publicResultSetesecuteQuery(Stringsql) { rs=null; try { conn=DrivetrrManager.getConnection(sConnStr); Statementstmt=conn.createStatement(); rs=stmt.executeQuery(sql); } catch(SQLExceptionex) { System.out.println(ex.getMessage()); } returnrs; } publicResultSetexecuteUpdate(Stringsql) { rs=null; try { conn=DriverManager.getConnection(sConnStr); Statementstmt=conn.createStatement(); rs=stmt.executeQuery(sql); } catch(SQLExceptionex) { System.err.println(ex.getMessage()); } returnrs; } } 七、课程设计总结 通过这次课程设计,我深深的认识到,如果仅仅只是运用理论知识,是远远不够的。 我们必须理论联系实际,才能很好的将《数据库》这门课程学好,并用于实际案例中。 同时,经过这次课程设计,我发觉自己的动手操作能力变强了,并在解决遇到的各种问题的过程中,学到了很多新的知识,也为自己对以后的工作充满信息和希望打下了良好的基础。 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。 由于我的知识浅薄,经验不足及阅历颇浅,在设计的过程中遇到问题,可以说得是困难重重,遇到各种各样的问题,同时在设计的过程中发现了自己的不足之处,在功能方面,各功能都只是实现了简单的部分,功能还需完善。 在代码方面,由于时间仓促,代码未经锤炼,测试不是很充分。 对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在通过专业人士的帮助和运用丰富的网络资源,终于游逆而解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华南理工 数据库 课程设计 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)