35

毕设开源了,126个star,39个fork

 5 years ago
source link: https://www.tuicool.com/articles/VFzeYfA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

毕设题目

我是软件工程专业,学校给的毕设题目是实现一个电影院订票系统,如图。

qauyUjQ.png!web

题目

嗯,题目一看很简单,其实就是实现一个web版的影票在线订票系统罢了,因此当天接到毕设后的我就大刀阔斧的准备开干了。

技术方案选择

先说个大前提:我们学校评比优秀毕业生的硬性条件之一是毕设必须拿到良以上。

从题目分析来看其实语言的选择上来看是要使用JSP或者.net技术,但是作为一个迫切想要拿到优秀毕业生的人来说【其实想装xヾ(≧O≦)〃嗷~】,自然不能使用这些比较古老的技术了,虽然我自身是一个Java系的支持者,但是为了最后在毕设答辩的时候可以在技术相关的选择上给评委一种眼前一亮的感觉,最终我选定了以下的技术方案。

技术方案:

  • 服务端:go-micro【微服务框架】
  • 数据库:mysql
  • 缓 存:redis
  • 前 端:el & vue
  • 服务器: centos 7 & nginx
  • 本地环境:go1.9
  • 容器:Docker
  • 进程管理:supervisor
  • 数据库备份:冷备份(rsync+mysqldump)

当然了,这里如果是对某种技术没那么熟悉的话还是不建议选择较新技术的,毕竟这是毕设。哦,这里要说一点,去年我们那一届,对于docker容器技术、进程管理、redis缓存和go语言和微服务这种概念有相关了解和应用的还是比较少的,大多是使用Java的三大框架,我个人是因为本身在学校便有不错的技术基础,并且算是熟悉这几个技术的搭配使用,所以才敢铤而走险,当然了,最终的结果也证明了我的选择是对的。

搭建基础框架

技术方案选型好了,那么接下来就是先搭好基础框架了,搭建基础框架相当于打地基,地基打好了后面写业务就相当于添砖加瓦了,简单分为以下几步:

  • golang语言环境搭建
  • docker环境搭建
  • go-mirco项目基础结构搭建,包括数据库、redis等
  • 模块划分
  • 服务划分
  • 各种脚本储备

前面几种环境的搭建大家可以自行谷歌百度,一搜一大把的那种,此处便不多描述了。关于模块划分,当年的我【嗯,现在老了(;´༎ຶД༎ຶ`)】是这样划分的

RBbMZjI.png!web

模块划分

关于模块划分这一点,一定要注意的是划分完一定要对照下毕设需求,大部分毕设上都有写需要实现的功能有哪些,因此如果少了就翻车了,到时候会被评委屌飞︿( ̄︶ ̄)︿,宁可做多不可做少。

之后便是做服务划分了,最终划分结果如下

AnuyInQ.png!web

服务划分

这里的划分思想我是基于平常做项目的时候划分controller的思想进行划分的,说实话,草根思想哈哈哈,不过在大学算是做了比较多的项目,也拿了比较多的奖项,所以对于这种划分的话算是还是有一定的实操依据。

最后各种脚本储备指的是

qY7ZVjf.png!web

shell1

包括好几个启动服务相关的shell脚本。

实现业务

基础框架搭建好了,接下来其实就是实现具体代码的时候了,业务上的具体实现便不细说了,大体流程是这样的,先定义接口,然后补充接口,服务端的大致流程跑通后,我再搭建前端,并且实现前端业务,再进行联调,一边联调一边修改接口。

最终实现出来的效果如下【大型界面翻车现场w(゚Д゚)w】:

u2Qzq2v.png!web

图片描述

3Ynyum3.png!web

图片描述

还有提供了操作后台【也是翻车现场w(゚Д゚)w】

jQF3YjN.png!web

图片描述

为了让大家知道我没有骗你们,我特地从论文中找出来的截图,现在看来这么丑还发出来,真的是老脸都不要了 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄

上云

最终为了给评委更加直观的感受,可以直接通过域名打开,我将前端后端代码都放到了我的腾讯云服务器上,这里使用docker容器技术的好处就体现出来了,我直接将代码提交到github上,然后再腾讯云服务器的ubuntu系统上直接clone下来,并且直接使用shell脚本打包发布部署,一键搞定,如果不使用docker的话,还要自己在ubuntu系统上重新搭建一份新的和本地一样的环境,你还要求神拜佛不要出现依赖冲突或者其他乱七八糟的问题,不然你还要在上云这一步花费不少的精力。

额,刚刚说了一键搞定,不是一行代码哈,我找了下我github上的README上写的,是这样的

jqQfeyi.png!web

启动程序

答辩结果

做了那么多装x的操作,目的就是为了那个优秀毕业生,我容易吗我???

好在最后结果还在没有翻车,评委老师确实被我这些装x的操作折服了,赏了我一个优秀毕业生。

超重点来了其实大部分人都没有好好看待学校的毕设,大部分人都是在答辩前一两个星期才匆匆忙忙搞,马马虎虎应付,不关技术好坏,只是看不起毕设或者懒,因此自然很难做到全面,而我的认真算是被评委老师们看出来了,因此才给了优的评分,最后顺其自然拿到了优秀毕业生。撒花撒花!!!

最后的最后

标题那么装x是怎么回事呢?其实就是我从一开始做毕设开始,就开源了,地址:

https://github.com/wiatingpub/MTBSystem

可能是因此使用了微服务技术,或者是docker,或者是毕设让大家觉得马马虎虎还过得去,因此断断续续有人star和fork,截止到当前为止,已经126个star和39个fork了。

在众多大神面前班门弄斧,确实在过分了,轻喷轻喷哈,溜了溜了!!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK