《数据库应用系统实践》------ 报刊销售系统

系列文章

《数据库应用系统实践》------ 报刊销售系统



一、需求分析

1、系统背景

为了方便报刊报刊的管理,我设计了报刊销售系统来满足需求。

2、 系统功能结构(需包含功能结构框图和模块说明)

(1)功能结构图
在这里插入图片描述

(2)模块说明
系统分为用户、报刊、管理员三个大的模块
每个模块包含相应报刊。

3.系统功能简介

管理员可以对报刊以及用户进行管理,用户可以查询相关信息。

二、概念模型设计

1.基本要素(符号介绍说明)

.基本要素(符号介绍说明)
① 矩形:表示实体。
② 椭圆形:表示属性,即实体的属性。
③ 菱形:表示联系。
④ 连线:该连线为没有方向的线段,分为连接实体与属性(矩形与椭圆形之间的连线)和连接实体与联系名(矩形与菱形之间的连线);实体与联系名的连线旁需标注联系的类型,如1:1、1:n、m:n。
注意:在联系类型标注时请按照约定俗成的方式标注,一对多使用1:n,多对多使用m:n,如果超过两个实体请采用m:n:p:q:

2.ER图

在这里插入图片描述

三、逻辑模型设计

1.ER模型向关系模型转换规则

① 实体转换为单独的关系模式。
② 一对一联系转换为关系模式有两种方法。一、将联系转换为单独的关系模式;二、将其中一个实体的之间加入到另外一个实体的关系模式中,作为外键。
③ 一对多联系转换为关系模式有两种方法。一、将联系转换为单独的关系模式;二、将n实体的主键合并到1实体的关系模式中,作为1实体关系模式的外键。

2.转换后的关系模型

用户(用户账号,密码,管理员账号)
报刊(报刊号,报刊名,单价,管理员账号)
管理员(管理员账号,密码)
购买(用户账号,报刊号)

3.关系模型优化(达到3NF)

以上要素都属于第三范式

四、物理设计

1.创建数据库的SQL语句或截图

CREATE DATABASE newspapersSale
ON PRIMARY
(NAME=YAN,
FILENAME='E:\SQLDate\newspapersSale.mdf',
SIZE=5MB,
MAXSIZE=UNLIMITED)
LOG ON
(NAME=YAN_log,
FILENAME='E:\SQLDate\newspapersSale.ldf',
SIZE=5MB,
MAXSIZE=UNLIMITED)

2.创建所有表的SQL语句或截图(包含完整性约束)

CREATE TABLE 管理员(
管理员账号        CHAR(20)      PRIMARY KEY,
密码		      CHAR(20)     NOT NULL
)


CREATE TABLE 用户(
用户账号        CHAR(20)      PRIMARY KEY,
密码		    CHAR(20)     NOT NULL,
管理员账号		CHAR(20)     NOT NULL,
FOREIGN KEY (管理员账号) REFERENCES 管理员(管理员账号)
)

CREATE TABLE 报刊(
报刊号               CHAR(20)     PRIMARY KEY,
报刊名                 CHAR(20)     NOT NULL,
单价                 CHAR(20)     NOT NULL,
管理员账号             CHAR(20)     NOT NULL,
FOREIGN KEY (管理员账号) REFERENCES 管理员(管理员账号)
)


CREATE TABLE 购买(
用户账号              CHAR(20)     NOT NULL,
报刊号                CHAR(20)     NOT NULL,
 PRIMARY KEY(用户账号,报刊号),
 FOREIGN KEY (用户账号) REFERENCES 用户(用户账号),
  FOREIGN KEY (报刊号) REFERENCES 报刊(报刊号),
)

五、数据库实施

1.粘贴所创建的数据库关系图

在这里插入图片描述

2.数据录入

INSERT INTO 管理员 VALUES ('001','001')
INSERT INTO 管理员 VALUES ('002','002')
INSERT INTO 管理员 VALUES ('003','003')
INSERT INTO 管理员 VALUES ('004','004')
INSERT INTO 管理员 VALUES ('005','005')

INSERT INTO 用户 VALUES ('001','001','001')
INSERT INTO 用户 VALUES ('002','002','002')
INSERT INTO 用户 VALUES ('003','003','003')
INSERT INTO 用户 VALUES ('004','004','004')
INSERT INTO 用户 VALUES ('005','005','005')


INSERT INTO 报刊 VALUES ('001','东方日报','5','001')
INSERT INTO 报刊 VALUES ('002','人民日报','6','002')
INSERT INTO 报刊 VALUES ('003','光明日报','7','003')
INSERT INTO 报刊 VALUES ('004','安徽提报','8','004')
INSERT INTO 报刊 VALUES ('005','上海申报','9','005')

INSERT INTO 购买 VALUES ('001','001')
INSERT INTO 购买 VALUES ('002','002')
INSERT INTO 购买 VALUES ('003','003')
INSERT INTO 购买 VALUES ('004','004')
INSERT INTO 购买 VALUES ('005','005')

3.数据处理

(1)至少包括2张表的等值连接;
在这里插入图片描述

(2)创建视图;
在这里插入图片描述

(3)编写包含子查询的SQL语句;
在这里插入图片描述

(4)有修改语句;
在这里插入图片描述

(5)有删除语句;
在这里插入图片描述

(6)有包含聚集函数;
在这里插入图片描述

(7)有记录过滤,条件过滤语句;
在这里插入图片描述

(8)有修改表结构的SQL语句;
在这里插入图片描述

(9)用T-SQL语句写出一个对数据表处理的人机交互程序;
在这里插入图片描述

(10)编写一个触发器;
在这里插入图片描述

六、数据库应用系统实现

1.相关界面截图(对每一张截图进行一定的文字说明)

用户登录:
账号:001
密码:001

在这里插入图片描述

信息查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

管理员登录:
账号:001
密码:001

在这里插入图片描述

信息查询
在这里插入图片描述
在这里插入图片描述

报刊修改
在这里插入图片描述

报刊添加
在这里插入图片描述

报刊修改
在这里插入图片描述
删除
在这里插入图片描述

2.和数据库连接的程序语句

String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=newspapersSale";
	String userName = "sa";
	String userPwd = "1";

3.其它代码

	{

			if (jr1.isSelected())// 简单查询
			{
				String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
				String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=newspapersSale";
				String userName = "sa";
				String userPwd = "1";
				userId = null; // 用户
				try {
					Class.forName(driverName);
				} catch (Exception e1) {
					e1.printStackTrace();
				}
				try {
					Connection con = DriverManager.getConnection(dbURL, userName, userPwd);
					Statement s = con.createStatement();
					String r1 = "select * from 用户  where 用户账号=? and 密码=?";
					PreparedStatement P = con.prepareStatement(r1);
					P.setString(1, jtf1.getText());
					P.setString(2, jtf2.getText());
					ResultSet rs = P.executeQuery();
					if (rs.next()) {
						userId = rs.getString("用户账号").trim();
						new YG(userId);
						jfrm.setVisible(false);
					}

					else {
						JOptionPane.showMessageDialog(null, "用户账号或密码不正确!");
					}
					s.close();
					con.close();
				} catch (Exception e1) {
					e1.printStackTrace();
				}
			}

			if (jr3.isSelected())// 
			{
				String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

七、总结

(可选,200字左右的小结,包括
(1)完成情况和不足之处
(2)心得体会
(3)建议)

这次的实训内容都已完成,开始五天是有关于数据库的设计,从数据库的创建到数据的插入都是独自完成的,其中因为许多的原因改了很多次,但最后还是完美的完成了。后面的五天是将自己设计的数据库与java连接起来,编写java代码来查询所创建的数据库里的信息,由于种种原因我JAVA学的不好,编程我几乎写不出来,只能照着别人的来修改,而且还老是出错,最后在同学的热心帮助下最终完成了。在我做完实验之后,我又重新复习了java的相关知识,这次的实验总体上对我来说还是具有挑战性的。

参考文献:

[1]刘桂玲. SQLServer数据库应用分析[J]. 软件导刊, 2012, 11(10):2.
[2]徐人凤, 曾建华. SQLServer数据库及应用[M]. 高等教育出版社, 2013.
[3]邓文艳. SQLServer数据库备份和还原[J]. 山西财经大学学报, 2007(S2):1.

八、源代码获取

本次的分享就到这里啦,创作不易,感谢点赞收藏👍
感兴趣的小伙伴可以在评论区留言或者私信我哦💕

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿代码_QQ_3014067949

给小编价格鸡腿吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值