网站内容管理系统论文(一下软件类专业的毕业论文应该怎么写?(一) )
优采云 发布时间: 2021-11-25 02:07网站内容管理系统论文(一下软件类专业的毕业论文应该怎么写?(一)
)
毕业论文是大学生学术生涯的一道坎。说到写毕业论文,同学们都很痛苦,就一味的问妈妈。小明在这里和大家分享一下软件专业毕业论文的写作方法,希望对大家有所帮助。
如果觉得文章太长想直接交流,也可以直接点击下方二维码联系我们!
一、未解决的问题
选题是毕业论文写作的一个非常重要的部分。论文的内容要围绕选定的主题展开,就像写一篇论文一样,有一个中心思想,这样内容才不会跑偏。
有些导师会提前给出论文题目,那么我们可以跳过这一步直接进入下一个链接。其他教师将给出该主题的粗略范围。在这种情况下,大家通常都会遇到定题的困难,但其实也没必要惊慌,因为通常都有一定的套路。其中比较常见的给定范围有:某个管理系统的实现,某个网站的研发,某个游戏的设计。另外,有些导师可能会完全放手,让学生自己决定题目。那么小明建议这个时候选择一些比较主流和热门的话题,因为主流和热门话题往往更容易采集信息,也更容易通过防守。.
但实际上,是分不开的。无论是给定的问题、范围,还是完整的发布,实际上都可以使用同一套技术来达到技术水平。比如我们可以直接使用/sunmooninfo eye框架。完成这些类型的主题的压力。
二、简介
论文完成并打开后,第一段是引言。引言的主要功能是说明论文选题的研究背景、研究目标和研究意义。
研究背景
研究背景主要用于说明该研究课题的当前研究发展现状和研究趋势,并根据研究发展现状和研究趋势进一步阐述该研究课题对社会经济发展的积极意义。
意义
为了说明研究的意义,首先要抛出一些在社会经济发展方面还没有得到很好解决的存在的问题。然后从解决社会经济发展中的实际问题等方面阐述了本课题的研究意义。
三、系统分析可行性分析系统技术分析
关于系统技术分析后的内容,小明以/sunmooninfo的眼框为例。眼睛框架是一个前后端分离的框架系统。前端采用Vue和Uni技术,后端采用SpringBoot技术。是一套可以快速产生各种主流应用和网站的技术架构。
系统需求分析
系统需求分析是基于上述社会经济发展中遇到的实际问题。我们的研究课题也是为了解决系统需求分析中列出的问题,所以需要按照总需求、子需求、大需求、小需求等方面来完成系统需求分析。
四、系统概要设计
系统概要设计主要介绍了开发中用到的技术架构、开发工具和主要模块的设计。
比如/sunmooninfo的eye框架,就是为了帮助应届大学生快速制作设计原型的框架。我们在做眼睛框架的系统大纲设计时,可以将其分成不同的模块进行介绍和讲解。
eye中收录的具体模块如下:
可以在这个开源框架的基础上进行二次开发,主流应用和网站可以快速制作原型,电商话题直接开箱即可使用。
由于该框架系统模块较多,本文难以一一介绍。想咨询如何使用这个框架快速制作自己的系统设计的同学可以点击下方二维码了解更多。
在这一章系统概要设计中,我们将进行需求并开始开发。首先是给出一个总体设计图,解释如何实现系统需求,然后它抛出的总体设计图也为下一个系统实现奠定了基调。
五、系统设计与实现
前面我们对系统的功能模块做了简单的介绍,下面是具体的实现方法。
以/sunmooninfo的eye框架为例。
该系统是一个前后端分离的框架系统。
框架后端以SpringBoot为主要技术构建,具体模块如下图所示。
后端管理安全框架为Shiro,数据持久层框架为MyBatis,验证参数工具为Hibernate-Validator,对象存储为阿里云,支付使用binarywang的微信支付工具。
操作环境
运行环境是使项目运行所必需的软件和硬件。
例如,区分信息的眼睛框架环境要求是:
- 开发工具:Idea 或 Eclipse
-数据库:Mysql8.0
- 虚拟机:OpenJDK11。
后端用户权限管理设计
在这里,我们将选择后台用户权限管理模块来详细演示设计和实现。
后台用户的管理离不开权限的管理,这也是每个系统都绕不开的问题。通常的权限管理可以分为三个部分:“用户管理”、“角色管理”和“权限管理”。其中,用户和角色是一一对应的,一个用户对应一个角色;同一个角色可以对应多个后台操作权限。下面是一个简短的脑图,以帮助理解。
超级管理员可以新建用户,用户界面如下图:
后台创建用户的代码运行逻辑是首先判断添加的用户是否存在,如果存在则返回管理员已经存在,如果不存在则将新的用户数据保存到数据库中. 代码显示如下:
@RequiresPermissions("admin:admin:create")
@RequiresPermissionsDesc(menu = {"系统管理", "人员管理"}, button = "添加")
@PostMapping("/create")
public Object create(@RequestBody EyeAdmin admin) {
Object error = validate(admin);
if (error != null) {
return error;
}
String username = admin.getUsername();
List adminList = adminService.findAdmin(username);
if (adminList.size() > 0) {
return ResponseUtil.fail(ADMIN_NAME_EXIST, "管理员已经存在");
}
String rawPassword = admin.getPassword();
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String encodedPassword = encoder.encode(rawPassword);
admin.setPassword(encodedPassword);
adminService.add(admin);
logHelper.logAuthSucceed("添加管理员", username);
return ResponseUtil.ok(admin);
}
后台管理员的用户信息输入并保存后,需要添加角色信息。创建角色页面如下图所示:
创建角色和创建用户的代码逻辑其实是类似的。它还判断被添加的角色是否已经存在,然后决定是否保存数据。代码显示如下:
@RequiresPermissions("admin:role:create")
@RequiresPermissionsDesc(menu = {"系统管理", "角色管理"}, button = "角色添加")
@PostMapping("/create")
public Object create(@RequestBody EyeRole role) {
Object error = validate(role);
if (error != null) {
return error;
}
if (roleService.checkExist(role.getName())) {
return ResponseUtil.fail(ROLE_NAME_EXIST, "角色已经存在");
}
roleService.add(role);
return ResponseUtil.ok(role);
}
角色管理页面界面如下图所示:
最高级别的管理员可以为不同的角色设置不同的权限。具体权限配置界面如下图所示:
关于user-role-permission数据绑定模块的数据库,我们使用三个表:user、role、role_permission。系统的权限不是从数据库中的权限表数据中获取的,而是通过注解自动解析当前系统的所有权限。并且因为是注解,开发者在开发新权限的时候,只需要直接在代码里写就可以了,不需要再在数据库里写。具体实现代码如下:
private List getSystemPermissions() {
final String basicPackage = "com.eye.admin";
if (systemPermissions == null) {
List permissions = PermissionUtil.listPermission(context, basicPackage);
systemPermissions = PermissionUtil.listPermVo(permissions);
systemPermissionsString = PermissionUtil.listPermissionString(permissions);
}
return systemPermissions;
}
public static List listPermission(ApplicationContext context, String basicPackage) {
Map map = context.getBeansWithAnnotation(Controller.class);
List permissions = new ArrayList();
for (Map.Entry entry : map.entrySet()) {
Object bean = entry.getValue();
if (!StringUtils.contains(ClassUtils.getPackageName(bean.getClass()), basicPackage)) {
continue;
}
Class clz = bean.getClass();
Class controllerClz = clz.getSuperclass();
RequestMapping clazzRequestMapping = AnnotationUtils.findAnnotation(controllerClz, RequestMapping.class);
List methods = MethodUtils.getMethodsListWithAnnotation(controllerClz, RequiresPermissions.class);
for (Method method : methods) {
RequiresPermissions requiresPermissions = AnnotationUtils.getAnnotation(method,
RequiresPermissions.class);
RequiresPermissionsDesc requiresPermissionsDesc = AnnotationUtils.getAnnotation(method,
RequiresPermissionsDesc.class);
if (requiresPermissions == null || requiresPermissionsDesc == null) {
continue;
}
String api = "";
if (clazzRequestMapping != null) {
api = clazzRequestMapping.value()[0];
}
PostMapping postMapping = AnnotationUtils.getAnnotation(method, PostMapping.class);
if (postMapping != null) {
api = "POST " + api + postMapping.value()[0];
Permission permission = new Permission();
permission.setRequiresPermissions(requiresPermissions);
permission.setRequiresPermissionsDesc(requiresPermissionsDesc);
permission.setApi(api);
permissions.add(permission);
continue;
}
GetMapping getMapping = AnnotationUtils.getAnnotation(method, GetMapping.class);
if (getMapping != null) {
api = "GET " + api + getMapping.value()[0];
Permission permission = new Permission();
permission.setRequiresPermissions(requiresPermissions);
permission.setRequiresPermissionsDesc(requiresPermissionsDesc);
permission.setApi(api);
permissions.add(permission);
continue;
}
// TODO
// 这里只支持GetMapping注解或者PostMapping注解,应该进一步提供灵活性
throw new RuntimeException("目前权限管理应该在method的前面使用GetMapping注解或者PostMapping注解");
}
}
return permissions;
}
由于篇幅问题,小明只从一小部分简要说明了系统是如何实现的。新人可能难以理解。不明白的可以私信我寻求帮助。
六、系统测试
一般来说,软件毕业论文或毕业设计的结束是结束论文主体部分的系统测试。而系统测试也是系统开发的最终工作,是系统开发工作中不可或缺的一部分。系统的实施是从零开始的,难免会导致一些问题没有被发现。这时候就需要测试人员对系统进行测试,检查是否符合预期并纠正错误,以达到预期的效果。下面小明为大家罗列了详细的测试方法。
测试方法
系统测试方法主要分为白盒测试和黑盒测试。这两种类型的测试本质上是不同的。
黑盒测试就是把系统当成一个封闭的系统,用用户的身份来验证系统的所有功能是否完善。
白盒测试就是看穿整个系统,以开发者的身份验证整个系统的正常运行。
这里我们还是以/sunmooninfo的眼系统为例来演示白盒测试。
我们使用Postman检测后台管理员登录功能如下图所示。
上图为登录正常时的测试结果。
上图为登录失败时的测试结果。
也可以使用黑盒测试,启动前端代码,路径接入点到本地,打开开发者工具查看接入路径和接口响应。
由于缺乏实战经验,在测试过程中无法启动也是常有的事情。这个时候不要慌,可以联系我~
七、结论
论文以结论结尾,论文是否有什么可说的也是由结论决定的。结论并不多言。它是最终内容的精髓,也是使论文具有真正价值的结论。许多学生忽略了结论部分的完成,因为他们可以更好地拼凑论证的实现部分的字数。
结论主要是对论文开头论证或目标实现的解释。在上一篇的论证或实现的基础上是自然的结果,但是如果上一篇有问题,这部分就会变成一种机械的方法。
对具体系统难点、哪些目标已经实现、哪些目标没有完成有疑问的同学也可以联系小明进一步说明。