第一章:描述了程序的开拓背景,程序利用于现实生活的目的与意义,以及程序文档的构造安排信息;
第二章:描述了程序的开拓环境,包括程序开拓涉及到的技能,程序开拓利用的数据存储工具等信息;
第三章:描述了程序动手进行开拓时,会面临的可行性问题,并对程序功能以及性能哀求进行描述;
第四章:描述了程序大功能模块下的功能细分信息,以及存储程序数据的数据库表文件构造的设计信息等;
第五章:描述了程序的功能实现界面的内容,也对程序操作职员操作的部分功能进行了描述;
第六章:描述了程序功能的测试内容,并先容了系统测试的观点与方法。 # 2 干系技能 ## 2.1 SSM框架先容 本课题程序开拓利用到的框架技能,英文名称缩写是SSM,在JavaWeb开拓中利用的盛行框架有SSH、SSM、SpringMVC等,作为一个课题程序采取SSH框架也可以,SSM框架也可以,SpringMVC也可以。SSH框架是属于重量级别的框架,配置繁琐,不足灵巧,修处死式须要修正好多个文件,并且运行起来也占用内存较高,CPU利用率相对也高,SpringMVC是Spring开拓的一套MVC架构,更灵巧更好用,SSM框架取中间值,既没有SSH臃肿,也没有SpringMVC简化,属于中间级别的,在配置过程和利用过程中更能编写和理解。MyBatis框架取代Hibernate框架是由于它更灵巧,不须要完备在框架里操作,它在数据操作上可以写出更灵巧的代码,它的性能也比Hibernate框架更稳定。总的来说,利用SSM框架是通过综合考虑而利用的,网上有很多的利用教程和心得体会,而且SSM又是这么的盛行,用SSM框架开拓是顺其自然的。 ## 2.2 B/S构造先容在早期,一些利用HTML措辞编写的文件,再凑集一些其它资源文件就可以组成一个最大略的Web程序,理解了Web程序也须要理解Web站点,它们之间的关系便是一个或者多个Web程序可以放在Internet上的一个Web站点(Web做事器)中进行利用。可以说Web运用程序的开拓也带动了B/S这种网络构造模式的兴起。B是Brower(浏览器)的首字母,S是Server(做事器)的首字母,两个首字母进行组合就成了网络构造模式的简称B/S。由于这种构造模式通过安装在客户真个浏览器进行做事器的访问,可以把程序的核心功能安排在做事器中进行处理,给程序的开拓,后期利用和掩护省去了许多事情。图2.1展示的便是利用这种架构开拓的程序的事情事理。
图2.1 B/S架构的事情事理图 ## 2.3 Mysql数据库先容 开拓的程序面向用户的只是程序的功能界面,让用户操作程序界面的各个功能,那么很多人就会问,用户利用程序功能天生的数据信息放在哪里的?这个就须要涉及到数据库的知识了,一样平常来说,程序开拓常日就会对常用数据存储工具的特点进行剖析比对,比如Mysql数据库的特点与上风,Access数据库的特点与上风,Sqlserver数据库的特点与上风等,终极看哪个数据库与须要开拓的程序比较匹配,也符合程序功能运行须要的数据存储哀求,比如,须要开拓商业级别的程序,存储的数据对数据库哀求较高,可以选用Oracle,如果只是比较大略的程序,对数据存储没有过多哀求,可以选用微软旗下的Access,当开拓程序哀求数据库占用空间小,并能知足程序数据存储哀求时,就可以考虑Oracle公司从瑞典MySQL AB公司在很早之前就收购过一个关系型数据库,它是现在的Mysql数据库。在数据库工具里面它是最受认可的个中一个运用软件。须要解释的信息便是,本程序的开拓就利用到了此数据库。它将程序数据通过利用不同的数据表格进行保存,在增加了程序数据的存储速率的时候,也提高了数据库的灵巧性。 图2.2展示的便是MySQL的架构图。
图2.2 MySQL数据库架构图
3 系统剖析当用户确定开拓一款程序时,是须要遵照下面的顺序进行事情,概括为:系统剖析–>系统设计–>系统开拓–>系统测试,无论这个过程是否有变更或者迭代,都是按照这样的顺序开展事情的。系统剖析便是剖析系统须要做什么的问题,紧张目的便是确定系统的功能,这也为接下来的事情做了一个好的开端。 ## 3.1 系统可行性剖析 开拓一款程序软件不仅须要韶光,也须要人力,物力资源。而进行可行性剖析这个环节便是办理用户这方面的疑问,看见地式在当前的条件下是否可以进行开拓。 ### 3.1.1 技能可行性剖析 此程序选用的开拓措辞是Java,这种编程措辞有着丰富的数据类型,在指令掌握语句上也比较完善,更主要的便是对类与工具的大力支持,这些优点为程序开拓者供应了技能保障,尤其是现在代码都逐渐模块化,有关系统功能开拓的源码在网络上都公开展示了,以是让具备一定打算机开拓根本的开拓职员独立开拓系统在技能上也逐渐随意马虎。 ### 3.1.2 经济可行性剖析 开拓此程序最关键的设备便是一台电脑,无论是学校打算机室配备的电脑,还是自己入学以来购置的条记本,都是可以符合开拓哀求的设备,其余在网络上,学校本已完备覆盖了校园网,以是在设备以及网络上无须考虑经济问题。 ### 3.1.3 运行可行性剖析 随着电脑软件以及配套硬件的完善升级,当下的打算机环境是一片大好,尤其是打算机已经广泛遍及到家家户户,以是打算机设备现在是随处可见,由于本次开拓的程序霸占的资源耗费较小,在一样平常的电脑或条记本上都能轻松运转起来。
通过上面的可行性描述,可以从经济,技能,运行方面办理程序开拓是否可行的问题。因此可以认为该程序软件是可以进行开拓的。 ## 3.2 系统性能剖析 系统性能剖析也是比较主要的内容,进行系统性能剖析便是为了确保系统的功能要能够在生活中运行利用时,达到规定的指标,因此一个完全的系统软件,是须要进行系统的性能剖析这个步骤的。本次进行性能剖析紧张从易用性指标,可扩展性指标,系统健壮性指标,系统安全性指标这几个方面进行剖析。 ### 3.2.1 易用性指标 本次程序软件的开拓的目的便是让利用者可以通过利用该软件提高信息数据的管理效率,同时该程序软件也须要针对不同的操浸染户设置对应的功能,因此,此程序的操作流程该当只管即便与用户日常操作软件的行为习气相贴合,其余,程序软件的设计与开拓也应考虑非打算机专业用户的打算机操作水平,要让大部分利用者都可以轻松操作程序供应的各个功能。 ### 3.2.2 可扩展性指标 当前须要开拓的程序软件是根据当下的用户需求进行设计开拓的,但是随着韶光的推移,社会大环境的改变,开拓出的程序也是须要与时俱进的,须要根据用户不断变换的需求进行相应的功能内容的扩展,须要把稳的便是,当对成型的程序进行功能模块新增时,仍旧须要担保程序原有架构以及功能不能受到影响,新增的功能模块在系统中也能够运行正常,该指标达标也就可以担保此程序是可以在知足信息管理哀求下,从容应对市场环境的变革。 ### 3.2.3 健壮性指标 程序软件的开拓便是为了投入利用时,可以一贯稳定的处理各种数据信息,程序软件一旦不稳定,也会给利用者带来滋扰。因此从性能剖析的角度,就要哀求程序软件在应对利用者的误操作,或者是利用者由于各种缘故原由,填写有误的数据等情形时,程序要一贯保持稳定,并能够正常让利用者进行利用。当程序的某个功能模块涌现非常时,程序的其它功能模块也要能够确保正常利用。程序的健壮性指标达标可以让利用者产生良好的用户体验。 ### 3.2.4 安全性指标 程序软件的安全问题是紧张问题,毕竟程序对应数据库里面存放的数据信息是弘大的,里面也包括了许多主要的个人信息,这就对程序要具备一个完善的安全机制提出了哀求。因此程序必须要设置登录功能用以进行用户身份的检讨,以及身份和权限的匹配,通过对不同用户身份进行功能约束,绝不容忍用户越权操作程序。其余,也须要时候戒备打算机病毒,还有黑客,通过采纳针对性的办法进行安全应对,确保程序时候处于安全的环境,让利用者放心利用。 ## 3.3 系统流程剖析 ### 3.3.1 操作流程剖析 程序上交给用户进行利用时,须要供应程序的操作流程图(如图3.1所示),这样便于用户随意马虎理解程序的详细事情步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证精确之后,用户才能在程序功能操作区页面操为难刁难应的功能。
图3.1 程序操作流程图 ### 3.3.2 登录流程剖析 在这个部分,须要对程序的登录功能模块的运行流程(如图3.2所示),进行单独解释。程序设置登录模块也是为了安全起见,让用户利用放心,登录模块紧张便是让用户提交登录信息,程序进行数据验证,验证通过的用户才能够成功登录程序。
图3.2 程序登录流程图 ### 3.3.3 信息添加流程剖析 程序的添加功能便是供应给操作者录入信息的功能,不管是涉及到用户信息添加,还是其它功能模块涉及到的信息添加,程序的信息添加流程(如图3.3所示)都是同等的。程序都是先对操作者录入的数据进行剖断,这个剖断规则是一段提前编写完成的程序代码,当程序剖断数据符合哀求时,才会把操作者录入的数据登记在数据表里面,比如添加的用户信息,就会把新添加的用户信息写入用户信息的数据表文件里面。
图3.3 信息添加流程图 ### 3.3.4 信息删除流程剖析 当从程序里面删除某种无效数据时,遵照程序的信息删除流程(如图3.4所示),先要选中操作者须要删除的数据,程序为了预防操作者误删信息,也会进行提示,当操作者真精确定要删选中的信息时,该信息就会从数据库中被永久删除。
图3.4 信息删除流程图
4 系统设计游戏虚拟道具交易网站的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开拓层面是否高效,以及在系统掩护层面是否随意马虎掩护和升级,由于在系统实现阶段是须要考虑用户的所有需求,假如在设计阶段没有经由全方位考虑,那么系统实现的部分也就无从下手,以是系统设计部分也是至关主要的一个环节,只有根据用户需求进行细致全面的考虑,才有希望开拓出功能健全稳定的程序软件。 ## 4.1 系统概要设计 本次拟开拓的系统为了节约开拓本钱,也为了后期在掩护和升级上的便利性,打算通过浏览器来实现系统功能界面的展示,让程序软件的紧张事务集中在后台的做事器端处理,前端部分只用途理少量的事务逻辑。下面利用一张图(如图4.1所示)来解释程序的事情事理。
图4.1 程序事情的事理图 ## 4.2 系统功能构造设计 在剖析并得出利用者对程序的功能哀求时,就可以进行程序设计了。如图4.2展示的便是管理员功能构造图,管理员紧张卖力添补员工和其种别信息,并对已添补的数据进行掩护,包括修正与删除,管理员也须要对赏罚对培训,对考,对薪资等进行管理。
游戏虚拟道具交易网站
系个人信息管理
管用户管理
管道具管理
管公告管理
大购物车管理
修个人信息修正
密
修正密码
新增加商品
是修正商品
删删除商品
公公告删除
申
公告新增
申
公告修正
删用户删除
新用户新增
修用户修正
用道具新增
用道具修正
用道具删除
管公告管理
新公告新增
吸公告修正
删公告删除
图4.2 系统功能构造图
4.3 数据库设计
开拓一个别系也须要提前设计数据库。这里的数据库是干系数据的凑集,存储在一起的这些数据也是按照一定的组织办法进行的。目前,数据库能够做事于多种运用程序,则是源于它存储办法最佳,具备数据冗余率低的上风。虽然数据库为程序供应信息存储做事,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段韶光的发展,从最初的不为人知,到现在的人尽皆知,其干系技能也加倍成熟,同时也拥有着坚实的理论根本。
4.3.1 数据库观点设计
这部分内容须要借助数据库关系图来完成,也须要利用专门绘制数据库关系图的工具,比如Visio工具就可以设计E-R图(数据库关系图)。设计数据库,也须要按照设计的流程进行,首先还是要根据需求完成实体的确定,剖析实体具有的特色,还有对实体间的关联关系进行确定。末了才是利用E-R模型的表示方法,绘制本系统的E-R图。不管是利用亿图软件,还是Visio工具,对付E-R模型的表示符号都一样,常日矩形代表实体,实体间存在的关系用菱形符号表示,实体的属性也便是实体的特色用符号椭圆表示。末了利用直线将矩形,菱形和椭圆等符号连接起来。接下来就开始对本系统的E-R图进行绘制。
(1)下图是用户实体和其具备的属性。
图4.1 用户实体属性图
(2)下图是道具收藏实体和其具备的属性。
图4.2 道具收藏实体属性图
(3)下图是公告实体和其具备的属性。
图4.3 公告实体属性图
(4)下图是道具实体和其具备的属性。
图4.4 道具实体属性图
(5)下图是道具评价实体和其具备的属性。
图4.5 道具评价实体属性图
(6)下图是道具订单实体和其具备的属性。
图4.6 道具订单实体属性图
(7)下图是购物车实体和其具备的属性。
图4.7 购物车实体属性图 ### 4.3.2 数据库表构造设计 数据库系统一旦选定之后,须要根据程序哀求在数据库中建立数据库文件,并在已经完成创建的数据库文件里面,为程序运行中产生的数据建立对应的数据表格,数据表构造设计便是对创建的数据表格进行字段设计,字段长度设计,字段类型设计等,当数据表格合理设计完成之后,才能正常存储干系程序运行产生的数据信息。
表4.1购物车表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
yonghu_id
Integer
所属用户
是
3
daoju_id
Integer
道具
是
4
buy_number
Integer
购买数量
是
5
create_time
Date
添加韶光
是
6
update_time
Date
更新韶光
是
7
insert_time
Date
创建韶光
是
表4.2道具表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
daoju_name
String
道具名称
是
3
daoju_uuid_number
String
道具编号
是
4
daoju_photo
String
道具照片
是
5
daoju_types
Integer
道具类型
是
6
daoju_kucun_number
Integer
道具库存
是
7
daoju_price
Integer
购买得到积分
是
8
daoju_old_money
BigDecimal
道具原价
是
9
daoju_new_money
BigDecimal
现价
是
10
daoju_clicknum
Integer
点击次数
是
11
daoju_content
String
道具先容
是
12
shangxia_types
Integer
是否上架
是
13
daoju_delete
Integer
逻辑删除
是
14
create_time
Date
创建韶光
是
表4.3道具收藏表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
daoju_id
Integer
道具
是
3
yonghu_id
Integer
用户
是
4
daoju_collection_types
Integer
类型
是
5
insert_time
Date
收藏韶光
是
6
create_time
Date
创建韶光
是
表4.4道具评价表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
daoju_id
Integer
道具
是
3
yonghu_id
Integer
用户
是
4
daoju_commentback_text
String
评价内容
是
5
insert_time
Date
评价韶光
是
6
reply_text
String
回答内容
是
7
update_time
Date
回答韶光
是
8
create_time
Date
创建韶光
是
表4.5道具订单表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
daoju_order_uuid_number
String
订单号
是
3
daoju_id
Integer
道具
是
4
yonghu_id
Integer
用户
是
5
buy_number
Integer
购买数量
是
6
daoju_order_true_price
BigDecimal
实付价格
是
7
daoju_order_courier_name
String
兑换网址
是
8
daoju_order_courier_number
String
兑换码
是
9
daoju_order_types
Integer
订单类型
是
10
daoju_order_payment_types
Integer
支付类型
是
11
insert_time
Date
订单创建韶光
是
12
create_time
Date
创建韶光
是
表4.6字典表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
dic_code
String
字段
是
3
dic_name
String
字段名
是
4
code_index
Integer
编码
是
5
index_name
String
编码名字
是
6
super_id
Integer
父字段id
是
7
beizhu
String
备注
是
8
create_time
Date
创建韶光
是
表4.7公告表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
gonggao_name
String
公告名称
是
3
gonggao_photo
String
公告图片
是
4
gonggao_types
Integer
公告类型
是
5
insert_time
Date
公告发布韶光
是
6
gonggao_content
String
公告详情
是
7
create_time
Date
创建韶光
是
表4.8用户表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
yonghu_name
String
用户姓名
是
3
yonghu_phone
String
用户手机号
是
4
yonghu_id_number
String
用户身份证号
是
5
yonghu_photo
String
用户头像
是
6
yonghu_email
String
电子邮箱
是
7
new_money
BigDecimal
余额
是
8
yonghu_sum_jifen
BigDecimal
总积分
是
9
yonghu_new_jifen
BigDecimal
现积分
是
10
huiyuandengji_types
Integer
会员等级
是
11
create_time
Date
创建韶光
是
表4.9管理员表
序号
列名
数据类型
解释
许可空
1
Id
Int
id
否
2
username
String
用户名
是
3
password
String
密码
是
4
role
String
角色
是
5
addtime
Date
新增韶光
是
5 系统实现系统实现部分便是将系统剖析,系统设计部分的内容通过编码进行功能实现,以一个实际运用系统的形式展示系统剖析与系统设计的结果。前面提到的系统剖析,系统设计最紧张还是进行功能,系统操作逻辑的设计,也包括了存储数据的数据库方面的设计等内容,系统实现便是一个终极的履行阶段,将前面的设计成果进行物理转化,终极出具可以利用于实际的软件系统。 ## 5.1 管理员功能先容 ### 5.1.1 道具管理 如图5.1显示的便是道具管理页面,此页面供应给管理员的功能有:查看道具列表,新增道具,修正道具,删除道具。
图5.1 道具管理页面 ### 5.1.2 公告管理 如图5.2显示的便是公告管理页面,此页面供应给管理员的功能有:新增公告,修正公告,删除公告。
图5.2 公告管理页面 ### 5.1.3 公告类型管理 如图5.3显示的便是公告类型管理页面,此页面供应给管理员的功能有:新增公告类型,修正公告类型,删除公告类型。
图5.3 公告类型管理页面
系统PoiUtil.javapackage com.utils;import org.apache.commons.io.FileUtils;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import java.io.File;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;/ 文件导入到处 /public class PoiUtil { / 导入 @param url @return @throws Exception / public static List<List<String>> poiImport(String url) throws Exception { List<List<String>> list = new ArrayList<>(); // 创建Excel 读取文件内容 HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(new File(url))); / 第一种办法读取Sheet页 /// HSSFSheet sheet = workbook.getSheet("Sheet0"); / 第二种办法读取Sheet页 / HSSFSheet sheet = workbook.getSheetAt(0);//获取事情表 for (int i = 0; i < sheet.getLastRowNum()+1; i++) { HSSFRow row = sheet.getRow(i);//获取行 List<String> rowlist = new ArrayList<>();//行数据 for (int j = 0; j < row.getLastCellNum(); j++) { HSSFCell cell = row.getCell(j); cell.setCellType(Cell.CELL_TYPE_STRING); String value = cell.getStringCellValue(); rowlist.add(value);//行中数据添加到行中 } list.add(rowlist);//将行数据添加到list中 } return list; } // 导出 public static void poiExport(List<List<String>> list, String url) throws Exception { //创建Excel事情薄 HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个事情表shheet HSSFSheet sheet = workbook.createSheet(); for (int i = 0; i < list.size(); i++) { HSSFRow row = sheet.createRow(i); List<String> dataList = list.get(i); for (int j = 0; j < dataList.size(); j++) { HSSFCell cell = row.createCell(j); cell.setCellValue(dataList.get(j)); } } FileOutputStream stream = FileUtils.openOutputStream(new File(url)); workbook.write(stream); stream.close(); } public static void main(String[] args) { try { //导入 List<List<String>> lists = PoiUtil.poiImport("C:/Users/Administrator/Desktop/事情1.xls"); System.out.println(); //导出 PoiUtil.poiExport(lists, "C:/Users/Administrator/Desktop/事情1.xls");//// List<List<String>> list = new ArrayList<>();// ArrayList<String> dataList = new ArrayList<>();// dataList.add("标题1");// dataList.add("标题2");// dataList.add("标题3");// list.add(dataList);// // 追加数据// for (int i = 1; i < 10; i++) {// 这里的int 起始是1 也便是第二行开始// ArrayList<String> dataList111 = new ArrayList<>();// dataList111.add("内容" + i);// dataList111.add("内容1111111121222222222333333333377777777411111111477777777" + i);// dataList111.add("内容" + i);// list.add(dataList111);// }// PoiUtil.poiExport(list, "C:/Users/Administrator/Desktop/事情1.xls"); } catch (Exception e) { e.printStackTrace(); } }}
DaojuOrderServiceImpl.java
package com.service.impl;import com.utils.StringUtil;import org.springframework.stereotype.Service;import java.lang.reflect.Field;import java.util.;import com.baomidou.mybatisplus.plugins.Page;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import org.springframework.transaction.annotation.Transactional;import com.utils.PageUtils;import com.utils.Query;import org.springframework.web.context.ContextLoader;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import com.dao.DaojuOrderDao;import com.entity.DaojuOrderEntity;import com.service.DaojuOrderService;import com.entity.view.DaojuOrderView;/ 道具订单 做事实现类 /@Service("daojuOrderService")@Transactionalpublic class DaojuOrderServiceImpl extends ServiceImpl<DaojuOrderDao, DaojuOrderEntity> implements DaojuOrderService { @Override public PageUtils queryPage(Map<String,Object> params) { if(params != null && (params.get("limit") == null || params.get("page") == null)){ params.put("page","1"); params.put("limit","10"); } Page<DaojuOrderView> page =new Query<DaojuOrderView>(params).getPage(); page.setRecords(baseMapper.selectListView(page,params)); return new PageUtils(page); }}
StringUtil.java
package com.utils;public class StringUtil { public static boolean isEmpty(String s){ if(s==null || s.equals("") || s.equals("null")){ return true; } return false; } public static boolean isNotEmpty(String s){ return !StringUtil.isEmpty(s); }}
声明
本博客适用于广泛的学术和教诲用场,包括但不限于个人学习、开拓设计,产品设计。仅供学习参考,旨在为读者供应深入理解和学术研究的材料。
java系统设计,毕设辅导