2 系统实现的技术支持
2.1微信开发者工具
在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java script,然后返回数据并在浏览器中展示页面。而微信开发者工具的系统层是基于Native System的,视图层和逻辑层会同时被加载。微信小程序的这种逻辑方式大大的优化了页面响应速度,减少了页面加载的等待时间,提高了用户体验。微信开发者工具可以实现同步本地文件,开发调试,编译预览,上传,发布等一整套流程。
2.2Java语言简介
Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景,它是面向对象的,分布式的,动态的,具有平台无关性、安全性、健壮性。Java语言的基本语句语法和C++一样,但是它面向对象的技术更加彻底,因为Java要求将所有的内容都必须封装成类,把类作为程序的基本单位。由于不允许类外有变量、方法。 Java语言的分布式体现在数据分布和操作分布,它是面向网络的语言,可以处理TCP/IP协议,它也支持客户机/服务器的计算模式。Java语言的动态性是指类在运行时是动态安装的,使得Java可以动态的维护程序。Java不支持指针,对内存访问的所有操作都是通过对象实例化实现的,这样就避免了指针操作中易产生的错误,同时也预防了病毒对系统的破坏和威胁。
Java语言的编程风格与C语言非常接近,它继承了C++面向对象技术的核心,它面世之后发展迅速,非常流行,对高级C语言形成了很大的冲击。业内人士称之为"一次编译、到处执行"。当然java也有缺点,在每次执行编译后,字节码都需要消耗一定的时间,在某些程度上降低了性能。但是这并不影响java成为此次设计语言的选择。Java语言简单易学,使用它的编程时间短,功能性强,开发者学习起来更简便、更快。Java的主要特性有以下几个:
1.面向对象
面向对象有四个特点:封装、继承、多态、抽象。抽象是指忽略一个问题中的次要部分,关注主要部分。多态是指对同一种消息做出的不同反应。继承是指在原有的父类方法基础上增加自己独有的方法,而不改变原来父类。
2.平台无关性、
Java编译出来的是字节码,直接由虚拟机执行。在任何平台上,只要有Java虚拟机,Java代码都能运行。
3.可靠性和安全性
Java对内存的访问都必须通过对象的实例变量来实现,避免了指针中出现的错误。
- 多线程
Java提供了多线程功能,利用编程实现同一时间同时工作的功能。
2.3 SSM框架
开发信息管理系统的主流框架是SSM(Spring + Spring MVC + MyBatis),SSM框架web层使用Spring MVC框架,使传输前后端数据变得简单;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框架;对于相关SQL操作,采用Mybatis作为持久层框架,对JDBC进行封装,使得数据库的底层面向开发者操作处于一种透明状态。
2.4 Mysql数据库技术
在软件项目,通过经营性数据的数据库,可以保证其安全,独立和数据一致,访问数据的系统来提供,所以有效减少时间程序员开发应用程序。
MySQL可以支持多线程,可以方便使用系统的资源,提高运行的速度。并提供odbc、jdbc和tcp/ ip,以各种形式连接到MySQL; 功能方面表现欠缺,规模小,但对于这个系统就足够了。
因为MySQL是源代码对外开放的,所以任何人都可以通过相应的方法下载,并根据个性化需求进行修改。 由于MySQL的速度,可靠性和适应性,MySQL受到重视。
MySQL虽然功能可能不是很强大,但由于其开源,广泛传播,导致很多人都意识到这个数据库。
2.5 B/S模式
B/S结构是目前使用最多的结构模式,它可以使得系统的开发更加的简单,好操作,而且还可以对其进行维护。使用该结构时只需要在计算机中安装数据库,和一些很常用的浏览器就可以了。浏览器就会与数据库进行信息的连接,可以实现很多的功能,B/S结构是可以直接进行使用的,而且B/S结构在使用中极大的减少了工作的维护。基于B/S的软件,所有的数据库之间都是相互独立的,因此是非常安全的。因为基于B/S结构可以清楚的看到系统正在处理的业务,并且能够及时的让管理人员做出决策,这样就可以避免企业的损失。B/S结构的基本特点是集中式的管理模式,用户使用系统生成数据后,这些数据就可以存储到系统的数据库中,方便日后能够用到,这样就可以满足人们的所有的需求。
添加图片注释,不超过 140 字(可选)
图2-1 B/S模式三层结构图
3系统的分析
3.1 系统可行性分析
3.1.1 经济可行性
由于本系统是作为毕业设计系统,且系统本身存在一些技术层面的缺陷,并不能直接用于商业用途,只想要通过该系统的开发提高自身学术水平,不需要特定服务器等额外花费。所有创造及工作过程仅需在个人电脑上就能实现,使用到的软件大多为开源软件,所以经济成本并不高,可以轻易实现。
3.1.2 技术可行性
本系统的开发使用java作为系统开发的开发语言,开发环境选择My Eclipse,而B/S结构决定了本系统的兼容性和多用户可操作性,此外选择MySql作为数据库不仅提高了数据安全性更保障了数据的可操作性。
3.1.3 运行可行性
本系统作为以java作为开发语言的系统,而且选用B/S结构则决定了要操作本系统仅需要占用很小的资源,并没有过多地硬件配置要求,目前市面上只要能正常运行浏览器的个人电脑都可以正常运行使用该系统。
综上所述,本系统的设计与开发在经济上、技术上、运行上的条件都是满足的,因此,系统开发具备可行性条件。
3.2 系统现状分析
系统使用用户的数量直接决定了用户信息管理者的工作量,毫无疑问,网站管理者的工作量较大较繁琐。通过前期的调研总结出网站现有的对用户管理工作状况如下分析:
缺少统筹规划,如果一个网站在信息化管理中缺少综合性、系统性、整体性,那不可避免的需要投入大量人力物力来规划整理信息。引入信息化管理方式无疑可以达到节省信息管理成本的目的不仅减少资源浪费还可以使面向企事业单位的项目申报信息变得井井有条,成为市场竞争中的一大优势。
要循序渐进,心急吃不了热豆腐,任何事情都不可能一蹴而就,就算信息管理系统也一样,要让系统发挥最大效率还是应该多调研,多听取用户和管理者的意见,并进行必要的统筹规划,有组织有目的地设计系统功能,团结各个部门发挥主观能动性。
(3)信息安全措施不到位
隐私权神圣不可侵犯,这是中华人民共和国宪法赋予我们的权利,人和人都不能侵犯我们的正当权益,而网络用户信息管理存在极大安全隐患,信息泄露的案列不在少数,加强信息安全措施是完善网络信息管理过程中不可避免的一环。
(4)资源不能充分共享
资源共享是网络的一大特点,没有共享就没有社交,网络也就失去了他应有的魅力,如果能够实现用户信息共享,无疑对于发展存在不可或缺的帮助。
(5)现有系统可扩展性不高。
如今科学技术发展飞速,随着而来的就是技术更新,那势必会给软件更新带来挑战,因此,系统必须具备良好的开放性和可扩充性,为了不落后于时代,这是必备特色之一。
基于上述分析,系统应该切合实际,做到确实有效,集体表现为:一是系统能够整理并集合归类用户信息,防止用户信息混乱,难以整理;二是系统要安全稳定,不能泄露用户信息,造成隐私泄露,不仅伤害用户利益更是对经营者名誉的损毁;三是系统要具有良好的开放性,不仅要方便定期的维护维修,更要方便及时增加新功能,保证先进的时代契合性。经过详细的讨论论证,确定系统的总体要求。
3.3 功能需求分析
系统功能需求分析是通过软件开发者在参与市场调研,与管理者及使用者交流后经过详细缜密的思考,再讨论研究后得出的初步系统开发所需实现功能。这是开发的第一步,也是至关重要的一步,如果不在这个阶段制定系统所需模块,日后会带来不必要的麻烦。因此,必须严肃认真,全身心投入去做好这个步骤。
本系统采用自上往下的方法开发,基本定位如下功能:
本课题要求实现一套面向企事业单位的项目申报微信小程序,系统主要包括管理员模块和用户模块等功能模块。
(1)管理员用例图如下所示:
图3-1管理员用例图
(2)用户用例图如下所示:
图3-2用户用例图
3.4 系统设计规则与运行环境
软件系统的优劣很大程度上是由系统设计的完善与否决定的。世间万物都必须遵循生老病死的法则,这是大自然的规则不能违反,软件设计也一样需要遵循系统设计规则。因此,在设计过程中必须遵循系统设计规则。
规则如下:
简单性:为了扩大系统使用者的受众面,系统设计应该本着操作越简单约好的原则,这样不仅能提高系统的使用率更能够扩大系统使用面。
针对性:一个系统针对性越强,所能提供的功能必然越完善,用户体验肯定更好,所以应该明确指定系统针对性。
实用性:实用永远是检验一个系统是否成功的唯一标准,使用的语言再高端,使用的结构再新颖但不能满足管理员及用户的要求那就是失败。
运行环境:
本系统是一个利用B/S结构来开发的程序,数据库在服务器上部署MySQL数据库即可,其他包括My Eclipse等常规开发程序。硬件要求:CPU:酷睿i3 -3.0GHZ;内存:4G以上;硬盘:128GB。软件平台:操作系统:Windows 10;数据库:MySQL。
3.5系统流程分析
3.5.1操作流程
系统登录流程图,如图所示:
图3-3登录流程图
3.5.2添加信息流程
添加信息流程图,如图所示:
图3-4添加信息流程图
3.5.3删除信息流程
删除信息流程图,如图所示:
图3-5删除信息流程图
4 系统设计
4.1 系统设计主要功能
通过市场调研及咨询研究,了解了使用者及管理者的使用需求,于是制定了管理员和用户等模块。其功能结构图如下图4-1所示:
图4-1系统功能结构图
4.2 数据库设计
4.2.1 数据库设计规范
数据可设计要遵循职责分离原则,即在设计时应该要考虑系统独立性,即每个系统之间互不干预不能混乱数据表和系统关系。
数据库命名也要遵循一定规范,否则容易混淆,数据库字段名要尽量做到与表名类似,多使用小写英文字母和下划线来命名并尽量使用简单单词。
4.2.2 E-R图
需求征集E-R图,如图4-2所示:
图4-2需求征集E-R图
项目申报管理E-R图,如图4-3所示:
图4-3项目申报管理E-R图
4.2.3 数据表
本系统采用的是MySQL数据库存储数据,系统中使用到的主要数据表的具体展示部分如下所示。
表4-1:专家评审
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shenbaozhuti | varchar | 200 | 申报主题 | ||
shenbaotupian | varchar | 200 | 申报图片 | ||
shenbaoxiangmu | varchar | 200 | 申报项目 | ||
zhuti | varchar | 200 | 主体 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
faren | varchar | 200 | 法人 | ||
qiyedizhi | varchar | 200 | 企业地址 | ||
qiyemingcheng | varchar | 200 | 企业名称 | ||
pingshenshijian | datetime | 评审时间 | |||
pingshenneirong | longtext | 4294967295 | 评审内容 | ||
pingshenjieguo | longtext | 4294967295 | 评审结果 |
表4-2:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
mima | varchar | 200 | 密码 | ||
faren | varchar | 200 | 法人 | ||
xingbie | varchar | 200 | 性别 | ||
nianling | varchar | 200 | 年龄 | ||
touxiang | varchar | 200 | 头像 | ||
shoujihao | varchar | 200 | 手机号 | ||
shenfenzheng | varchar | 200 | 身份证 |
表4-3:需求征集
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhengjizhuti | varchar | 200 | 征集主题 | ||
zhengjiduixiang | varchar | 200 | 征集对象 | ||
zhengjishijian | date | 征集时间 | |||
zhengjiyaoqiu | longtext | 4294967295 | 征集要求 | ||
zhengjitupian | varchar | 200 | 征集图片 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
faren | varchar | 200 | 法人 | ||
shoujihao | varchar | 200 | 手机号 | ||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-4:项目申报
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shenbaozhuti | varchar | 200 | 申报主题 | ||
shenbaotupian | varchar | 200 | 申报图片 | ||
shenbaoxiangmu | varchar | 200 | 申报项目 | ||
zhuti | varchar | 200 | 主体 | ||
shenbaochengxu | longtext | 4294967295 | 申报程序 | ||
shenbaoshijian | datetime | 申报时间 | |||
qita | varchar | 200 | 其他 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
faren | varchar | 200 | 法人 | ||
shoujihao | varchar | 200 | 手机号 | ||
qiyedizhi | varchar | 200 | 企业地址 | ||
qiyemingcheng | varchar | 200 | 企业名称 | ||
pingshenzhuangtai | varchar | 200 | 评审状态 | ||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-5:通知公告
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
gonggaobiaoti | varchar | 200 | 公告标题 | ||
gonggaoleixing | varchar | 200 | 公告类型 | ||
gonggaoneirong | longtext | 4294967295 | 公告内容 | ||
fabushijian | date | 发布时间 | |||
faburen | varchar | 200 | 发布人 | ||
fengmian | varchar | 200 | 封面 |
表4-6:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-7:单位认证
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
faren | varchar | 200 | 法人 | ||
shoujihao | varchar | 200 | 手机号 | ||
shenfenzheng | varchar | 200 | 身份证 | ||
qiyemingcheng | varchar | 200 | 企业名称 | ||
qiyedizhi | varchar | 200 | 企业地址 | ||
yingyezhizhao | varchar | 200 | 营业执照 | ||
zhuceriqi | date | 注册日期 | |||
zhuceziben | varchar | 200 | 注册资本 | ||
yingyefanwei | longtext | 4294967295 | 营业范围 | ||
sfsh | varchar | 200 | 是否审核 | 否 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-8:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-9:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
5系统详细设计
系统实现是新系统开发工作的最后一个阶段。它是将结构化系统设计的成果变成可实际运行的系统的过程。这一部分主要对系统的主要功能模块的实现细节进行了详细的阐述。
5.1前台功能模块
登录,用户通过输入账号和密码,选择角色等信息并点击登录进行系统登录操作,如图5-1所示。
图5-1用户登录界面图
用户注册,在注册页面通过填写用户账号、密码、确认密码、法人、年龄、手机号、身份证等详细信息进行注册操作;如图5-2所示。
图5-2用户注册界面图
用户登陆小程序后,可以对首页、需求征集、通知公告、我的等功能进行详细操作,如图5-3所示。
图5-3小程序首页界面图
需求征集,在需求征集页面可以查看征集主题、征集对象、征集时间、征集图片、用户账号、法人、手机号、审核回复、征集要求等详细信息;如图5-4所示。
图5-4需求征集界面图
通知公告,在通知公告页面可以查看公告标题、公告类型、发布时间、发布人、封面、公告内容等详细信息;如图5-5所示。
图5-5通知公告界面图
我的,用户在我的页面可以对个人中心、单位认证、项目申报、专家评审、需求征集等详细信息进行操作,如图5-6所示。
图5-6我的功能界面图
用户信息,在用户信息页面通过填写用户账号、密码、法人、性别、年龄、头像、手机号、身份证等详细信息进行保存或退出登录操作,如图5-7所示。
图5-7用户信息界面图
5.2后台管理员模块
管理员登录,通过输入账号、密码,选择角色并点击登录进行系统登录操作,如图5-8所示。
图5-8管理员登录界面图
管理员登陆小程序后,可以对首页、个人中心、用户管理、单位认证管理、项目申报管理、专家评审管理、需求征集管理、通知公告管理、系统管理等功能进行相应操作,如图5-9所示。
图5-9管理员功能界面图
用户管理,在用户管理页面可以对索引、用户账号、法人、性别、年龄、头像、手机号、身份证等内容进行详情,修改和删除操作,如图5-10所示。
图5-10用户管理界面图
单位认证管理,在单位认证管理页面可以对索引、用户账号、法人、手机号、身份证、企业名称、企业地址、营业执照、注册日期、注册资本、审核回复、审核状态、审核等内容进行详情,修改和删除操作,如图5-11所示。
图5-11单位认证管理界面图
项目申报管理,在项目申报管理页面可以对索引、申报主体、申报图片、申报项目、主体、申报时间、其他、用户账号、法人、手机号、企业地址、企业名称、评审状态、审核回复、审核状态、审核等内容进行详情,专家评审,修改和删除操作,如图5-12所示。
图5-12项目申报管理界面图
专家评审管理,在专家评审管理页面可以对索引、申报主题、申报图片、申报项目、主体、用户账号、法人、企业地址、企业名称、评审时间等内容进行详情,修改和删除操作,如图5-13所示。
图5-13专家评审管理界面图
需求征集管理,在需求征集管理页面可以对索引、征集主题、征集对象、征集时间、征集图片、用户账号、法人、手机号、审核回复、审核状态、审核等内容进行详情,修改和删除操作,如图5-14所示。
图5-14需求征集管理界面图
通知公告管理,在通知公告管理页面可以对索引、公告标题、公告类型、发布时间、发布人、封面等内容进行详情,修改和删除操作,如图5-15所示。
图5-15通知公告管理界面图
系统管理,在轮播图管理页面可以对索引、名称、值等内容进行详情,修改操作,如图5-16所示。
图5-16系统管理界面图
6 系统的调试和测试
调试其实也是一个相当重要的过程,对于编程完成的功能,并不一定很完善,很多时候不像程序员想象中那么顺利,有很多漏洞都是在调试过程中发现的。测试前,我们首先要清空数据库中的所有数据,然后输入少量的数据进行测试。测试过程中有些功能并不是像构思好的那样顺序执行,并且有时系统会很不稳定,所以测试帮助我们发现错误并对程序做一些修改和完善。
本系统的测试应从用户注册测试开始,然后再进行用户登录测试,对系统的各个模块的功能进行测试,查看是否与需求说明上要求的功能一致。有时候少写一条语句、session未执行或者数据库的某些字段名字改掉了而造成引用不成功这样的小错误是常有的,有时删掉了一些方法但是忘记在前台页面上删除会引发一些错误或者Mysql语句不正确之类的错误都也是比较常见的。
在本系统的测试中我遇到了几个比较"纠结"的问题,最开始是SQL语句部分总是提示user附近有语法错误,怎么都不能做数据库的查询,就是在user表创建时,软件会在表名外加上一个"[]",导致我的表名总是错误无法查询;MysqlL还有一个我自己造成的问题,就是我无意中把Mysql的登录名给删掉了,导致我没有办法链接到数据库,后来在老师的帮助下我才意识到问题出在这个地方,最后还是重新装的SQL这写问题也就都没有了。最后在做功能时也遇到了很大的问题,后台语句的逻辑和SQL语句都没有错误,系统也按照逻辑顺序提示修改成功,可是就是数据库中的内容没有修改,后来发现每做一个操作页面会刷新,就刷新成了数据库中原来的值,Mysql语句确实update成功了,只是修改的是原来的数据,所以看起来没有任何修改,我通过在页面加载方法中添加if (!IsPostBack){ }方法,这样就解决了页面刷新的问题。还有一个比较麻烦的问题就是模糊查询和类型查询的综合查询,一开始只定义了全局变量,总是查询失败,后来通过打断点测试,发现全局变量的值不易保存,后来改成了session变量,查询就成功了。当然遇到的问题不止这三个,还有很多的小问题,不过在模块测试时一一解决了。
调试是一个需要耐心和细心的工作,所以只是大体上执行一下是不会发现漏洞的,应该把每个功能都多调试几次,把可能的顺序或方法都试验一遍,往数据库中多添加一些东西,多次重复调用,尽可能地找出问题,这样才能够使网站更加完善。并且我认为当发现问题并解决问题的时候会体会到很大的成就感和快乐!这种感觉更鼓励我继续努力!