【深圳大学数据库系统】实验4 数据库设计(基于springboot+web三件套+mysql的慈善管理系统)

avatar
作者
猴君
阅读量:3

目录

一、实验目的:

二、实验要求:

三、实验设备:

四、实验内容

一、数据库设计

二、MySQL实现

(一)按计划费用评级的慈善机构

(二)按请求类别分类的捐助者

(三)慈善机构的捐助者

(四)捐赠者捐赠频率

(五)匹配礼物

(六)添加/更新 慈善机构/捐赠者

(七)实现触发器+日志界面

(八)异常显示消息提示

(九)实现捐赠&记录功能

(十)整合页面

五.问题分析

六.实验心得


一、实验目的:

1、了解数据库设计;

2、掌握存储过程、函数、触发器的实现。

二、实验要求:

1、安装相关软件并浏览软件自带的帮助文件和功能菜单,

2、掌握PHP构建网页以及连接数据库的方法。

3、掌握phpmyadmin创建数据库与数据表的方法;

4、了解mysql的命令以及与php衔接的语句

5、掌握存储过程、函数的实现

6、掌握触发器的实现;

三、实验设备:

计算机、数据库管理系统如php,mysql 等软件。

四、实验内容

按要求完成individual project的数据库设计,MySQL Implementation 和Interface,可以按照自己的思路拓展功能。

本系统采用springboot+mybatis+web三件套(htmlcssjs)开发实现。

一、数据库设计

1.新建数据库,命名为charity_db,再新建管理员表,然后插入两条数据。

2.新建慈善机构表agency_tb后插入数据。

3.新建捐赠者donor_tb表,并插入数据。

4.新建捐赠gift_tb表并插入数据。

5.新建user_tb表,并插入数据。

6.新建info_tb表,并插入数据

7.新建log_tb表。

8.实现登录接口,会根据登录账号为管理员或者用户的进行跳转不同的页面。

9.实现登陆前端界面,以及响应。

二、MySQL实现

(一)按计划费用评级的慈善机构

1.实现sql语句。

2.实现后端接口。首先实现AgencyController类。

3实现AgencyMapper代理层。

4.实现业务层接口和实现类。

5.测试接口,发现成功返回数据。

6.实现agencyOrder.html。

7.启动后端服务器,访问页面如下图所示。

(二)按请求类别分类的捐助者

1. 创建按请求类别分列的捐助者查询。

2. 调用按请求类别分列的捐助者查询。

3.发现可以正确输出结果。

4.建立实体类Donor。

5.建立DonorController类。

6.建立DonorMapper接口。

7.建立DonorService接口

8.实现业务层类DonorServiceImpl 。

9.实现前端页面DonorByCategory.html。

10.启动服务器,打开页面,如下图所示。

11.输入类别,如下图所示,若不存在类别则会提示。

(三)慈善机构的捐助者

1.分析sql语句,如下图所示。

2查看gift_tb表和donor_tb表和agency_tb表,可知结果正确。

3.实现实体类CharityDonor。

4.实现控制层方法。

5.实现代理层方法。

6.实现业务层方法。

7.测试接口,发现成功返回数据。

8.实现前端页面DonorByCharity.html。

9.启动服务器,打开页面。

10.输入慈善机构ID进行查询,若不存在会输出提示。

(四)捐赠者捐赠频率

1.实现sql语句,如下图所示。

2.查看donor_tb表和gift_tb表,可知查询结果正确。

3.实现实体类DonationFrequency。

4.实现controller层方法。

5.实现业务层方法。

6.实现数据层方法。

7.测试接口,发现成功获取数据。

8.实现前端界面donorFrequency.html。

9.启动服务器,界面如图所示。

(五)匹配礼物

1.题目是:创建一个名为“匹配礼物”的查询,显示慈善机构名称、日期和金额,然后计算匹配金额和捐赠总额。 回想一下,一位匿名捐助者愿意为“饥饿救济食品”慈善机构每捐赠 1 美元,捐出 50 美分。

我的理解是,先看gift_tb表。对于每一笔捐赠记录,捐款金额为amount,有某个好心人愿意再捐出0.5倍的amount,那么总金额就是1.5倍的amount,当然,因为题目叫“匹配礼物”,因此只对特定慈善机构进行善意的捐助,至于是哪个机构就要看用户输入了。

2.实现sql语句

3.实现实体类MatchGift。

4.实现控制层方法。

5.实现数据层方法。

6.实现业务层方法。

7.测试接口,成功获得数据。

8.实现前端页面MatchGift.html。

9.启动服务器,运行界面如下图所示。

(六)添加/更新慈善机构/捐赠者

1.这个分为两个部分,一个是管理慈善机构,一个是管理捐赠者。依据题意是,输入数据,如果数据(捐赠者或慈善机构)不存在,则将其插入表中,否则仅更新。

2.首先实现实体类AgencyAll和DonorAll。

3.实现两边的控制层方法。

4.实现两边的数据层方法。

5.实现两边的业务层方法。

6.测试管理接口,发现返回数据成功。

7.观察agency_tb,刷新后数据确实增加了。

8.观察donor_tb,刷新后数据确实增加了。

9.实现前端界面agencyChange.html。

10.启动服务器,打开网页如下图所示。

11.刷新表,发现操作成功。

(七)实现触发器+日志界面

1.实现触发器,以插入、更新和删除 agency_tb 表为例。

2.删除agecy_tb一条数据后观察log_tb表,发现log_tb表记录成功,其它表同理。

3.查看所有触发器,如下图所示。

4.确定查询的sql语句。

5.实现实体类OperationLog。

6.实现控制层方法。

7.实现数据层方法。

8.实现业务层方法。

9.测试接口,获取数据成功。

10.实现前端界面log.html。

11.启动服务器,打开网页,如图所示。

(八)异常显示消息提示

1.登录失败时提示。

2. 按请求类别分类的捐助者,查询失败时提示。

3. 慈善机构的捐助者,查询失败时提示。

4. 匹配礼物,失败时提示。

(九)实现捐赠&记录功能

1.考虑到用户有在捐赠的需求,因此再添加一个捐赠功能,用户通过输入捐赠者id和慈善机构id和金额即可成功进行捐赠,然后展现自己的所有捐款记录。

sql语句如下,先将gift_id设为自增,且幅度为1,然后插入数据:

alter table gift_tb      modify gift_id int auto_increment;    alter table gift_tb      auto_increment = 1;    INSERT INTO gift_tb (donor_id, agency_id, donation_date, amount)  VALUES (4, 1006,  NOW(),10000);

2.查看表格发现插入成功。

3. 展现特定人的所有捐款记录,sql语句如下:

4.实现实体类ToGift接收数据。

5.实现实体类Gift返回数据。

6.实现控制层方法。

7.实现数据层方法。

8.实现业务层方法。

9.测试接口,成功实现功能。

10.实现前端界面toGift.html。

11.启动服务器,打开页面如下所示。

(十)整合页面

1.现在有的页面包括:登录、按计划费用评级的慈善机构、按请求类别分类的捐助者、慈善机构的捐助者、捐赠者捐赠频率、匹配礼物、添加/更新慈善机构、添加/更新捐赠者、操作日志、捐赠&记录。

使用慈善管理系统的人有两种身份,一个是管理员、一个是普通用户。管理员是可以看到所有的页面的,但是普通用户能看到的页面只有如下:登录、按计划费用评级的慈善机构、匹配礼物、捐赠&记录。

因此,需要根据登录者的身份来决定其跳转的主页。然后主页再对应上各自能跳转的界面的按钮,以及退出登录的功能。

2.实现管理员主页managerHome.html。

3.实现普通用户主页userHome.html。

4.在登录时,存储使用者的账号和身份,并根据身份跳转到不同的主页。

5.更新各个页面返回主页按钮的逻辑,会根据使用者身份跳转到不同的主页。

五.问题分析

1.gift_tb插入数据失败.

分析:表的字段绑定了外键,插入的数据中,这几个的数据一定要存在,如下更改后插入成功。

2.接口测试发生错误。

分析:对应关系发生错误,因为只有一个对象,但是查到的数据有32条。按如下修改即可。

六.实验心得

通过此次试验,学会了以下几个重要的方面:

数据库设计与操作: 通过创建管理员表、慈善机构表、捐赠者表等,以及执行插入、更新、查询等数据库操作,熟悉了数据库的设计和基本操作。

Spring Boot 的使用: 在实现登录功能的过程中,使用了 Spring Boot 框架,学会了如何创建 RESTful 接口、处理请求和返回响应,以及如何与数据库交互。

MyBatis 框架: 通过使用 MyBatis 框架,了解了如何进行数据库的持久层操作,包括使用注解进行 SQL 查询、插入和更新。

前端页面设计: 在实现前端页面时,学会了如何使用 HTML 和 CSS 进行页面布局和样式设计,以及如何通过 JavaScript 处理用户交互。

身份验证与权限管理: 在实现管理员和普通用户身份的区分以及相应权限管理方面,掌握了一些基本的前后端交互和权限判断的方法。

错误处理与日志记录: 学会了如何处理可能发生的错误,包括在前端进行用户友好的提示,以及在后端通过日志记录进行问题追踪。

实际问题解决: 通过解决,提高了在实际开发中解决问题的能力,包括数据库表设计、SQL 查询语句的编写、前端页面的设计和调试等方面。

(by 归忆)

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!