计算机科学与技术专业软件方向综合课程设计。
一. 课设题目
从实习管理系统、电商平台商品评论数据分析、图书管理系统中任选一个,这里个人选择了图书管理系统,要求如下:
1 | 图书信息表所表示的就是一个数据库文件,图书管理一般包括: 图书采编、图书编目、图书查询、图书流通(借书、还书)等。 要求设计一个图书管理信息系统,编写程序实现上述功能。具体设计要求如下: |
二. 实现过程
一开始看到这个题目,感觉像是要手动实现一个数据库(其实本意应该也是要手动实现一个数据库的),然后写了一下午B+树的实现,插入分裂把自己给绕晕了,只好作罢,失败的代码如下,只能顺序插入两层,再往后就会出问题,并且操作中较多地使用了for循环,性能上也比较差
1 | type TreeNode struct { |
不用手动实现数据库的话事情就简单了很多,直接改用orm去操作关系型数据库,只需要定义好数据表字段即可。最后使用Vue作为前端页面 + Gin后端路由 + Gorm操作数据库实现。
三. 存在问题
存在的可以改进的问题有(我应该是不会去改了,毕竟课设都答辩完了):
1.偷懒没写JWT等登录Auth方法,所以登录部分是直接存表,并且注册和登录是同一个接口,当用户名不存在时,即为注册,当用户名存在时,会判断密码是否正确,同时没有改密码等操作(因为压根没有找回密码的途径,如果需要找回密码、修改密码等功能,需要在注册部分索要用户邮箱或手机号等可供验证身份的联系方式)
2.并且由于登录是明文,所以其他接口也是使用明文的用户名+密码验证身份,而非token、cookie等方法,安全性差
3.图书借出没有记录借出日期,同时图书也没有设定最长可借出时间,无逾期通知等操作。可通过添加借出记录创建时间及常量借出日期实现,逾期通知可通过SMTP实现
4.由于所有接口都需要用户名+密码进行验证,所以前端使用了vuex的store去存储username和password,刷新页面时存储的信息会丢失,若改用token,可使用sessionStorage或localStorage存储
5.数据表可以再优化一下字段,目前的设计中,判断用户是否借了某本图书并显示不同的页面按钮的操作是在前端做的,在前端通过借出表+图书表的数据去判断哪本书被用户借走了并在接口返回的数据中添加新的属性字段用于判断,使用了双层for循环,比较耗时
四. 项目源码
https://github.com/LuHawXem/Software-Engineering-Course-Design---2021
https://gitee.com/LuHawXem/software-engineering-course-design---2021
发布时间: 2022-01-09
最后更新: 2024-05-12
本文标题: 软件方向综合课程设计
本文链接: https://cloudflare.luhawxem.com/2022/01/09/SoftwareEngineeringCourseDesign/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!