这次的寒假大作业宠物商店,我是通过Java和MySQL实现的,具体的操作在下文会给出详细说明!
另外,由于Java和MySQL都是寒假刚学的,然后这个项目是边学边做的,所以有些方法在学习后期看起来很稚嫩,但是由于本人的懒惰((lll¬ω¬),在后期没有简化修改,但是还是用基本的方法实现了这个自己设计的宠物商店!
IDEA 版本 2020.3
MySQL版本 5.7.19
mysql-connector-java 驱动包版本 5.1.47
总项目工程:
MySQL表:
这个宠物商店的设计思路如下图所示:
这个UML图仅是商店大题的方法,有些选项之后还有细小选项需要选择!
设计思路如下:
1、在MySQL创建4张表,分别是——店主表shopkeeper,管理员表admin,宠物表pet,游客表visitor。四张表的内容在图中都有显示。
2、设计商店菜单,包括各种功能的菜单。首先是商店主菜单,然后再是店主操作菜单,管理员操作菜单,游客操作菜单。
3、设计每个菜单对应身份的对应方法,通过不同方法实现不同功能。
4、用JDBC操作将Java与MySQL连接,实现方法代码直接对MySQL中的表进行增删改查等操作。
以上就是简单的设计思路了,至于每个方法的不同功能,图中都有显示!
店主是宠物店唯一的存在,也就是说,店主表中只有一个店主的信息,我在店主表中给予的信息是 id=1,keepername = keeper,password = 123456。
在我想象的宠物店中,店主是不会直接管理宠物的,所以我将管理宠物的权限给予了管理员,而店主的权力就是——管理管理员。所以店主有如下操作:
1、新增管理员
2、删除管理员
3、更改管理员信息
4、查修管理员信息(所有管理员)
5、更改店主用户名
6、更改店主密码
7、退出并返回主菜单
1、2、3、4操作都是通过MySQL对admin表进行一系列操作实现的
5、6操作则是通过MySQL对shopkeeper表进行操作实现的
一个宠物店有很多管理员,他们都是被店主授权管理的,不存在一个管理员将一个普通人提拔为宠物店管理员。而管理员在宠物店中的权限有如下:
1、上架宠物
2、下架宠物
3、更改宠物名字
4、查询某类宠物信息
5、查询所有宠物信息
6、更改用户名
7、更改密码
8、退出并返回主菜单
1、2、3、4、5操作是通过MySQL对pet表进行增删改查实现的
6、7操作则是通过MySQL对admin表进行更改操作实现的
值得一提的是:
1、上架宠物会自动记录上架日期,pet表中的birthday就是记录这个数据
2、选择查询某类宠物信息后,会提示选择查询哪类宠物,按条件输入即可查询
3、更改宠物名字是,不能将宠物名重名,因为在pet表中petname是主键
一个宠物店有很多游客,通过注册的方式即可登录宠物店。游客在宠物店中没有管理权限,但是可以购买宠物,并且对自己旗下拥有的宠物进行很多有趣的互动!游客能够进行的操作如下:
(在主菜单选择注册后即可登录)
1、购买宠物
2、出售宠物
3、查询自己的宠物
4、查询宠物店宠物
5、查询自己的宠物食物
6、购买宠物食物(5份)
7、与宠物嬉戏
8、治疗宠物
9、更改密码
10、退出并返回主菜单
1、2、3、4、5、7、8操作是通过MySQL对pet表进行增删改查实现
6、9操作是通过MySQL对visitor表进行更新实现
值得一提的是:
1、购买宠物时会自动记录购买时间,pet表中的buy_day就是记录这个数据
2、出售宠物不会将宠物的数据删除,仅仅是把该只宠物出售给宠物店,清零master(主人)、buy_day(购买日期)和love(亲密度)的数据。
3、查询自己宠物时,会看到自己宠物的所有属性(品种、名字、上架日期、购买日期、主人名字、好感度、是否健康),而查询宠物店宠物则不会显示购买日期、主人名字、好感度信息。
4、与宠物嬉戏的操作包括(遛狗狗、撸猫猫、玩金鱼、逗仓鼠、喂食物)前四种操作必须有相对应的宠物才能完成,喂食物任何宠物都可以完成。这五种操作都会增加宠物好感度,但是前四种操作有1/25的概率使宠物受伤、变得不再健康,这时候就要去治疗宠物,否则无法再进行前四种嬉戏操作。
5、注册游客用户名时不能重名,因为visitor表中username是主键
店主登录
店主新增管理员
店主删除管理员
店主更改管理员信息
店主查询管理员信息
店主更改用户名
其实宠物商店这个项目其实构思了很久,但是途中发现我很多的突发奇想、有趣的点子,由于自己的技术受限无法实现,所以在写完这个项目后,我又开始了新一轮的学习。原本以为MySQL实现的宠物商店会别具一格,但是发现,归根到底还是对数据进行增删改查。由于这个项目是Java入手的第一个项目,而且是在MySQL学习过程中写出来的劣质品,所以在一开始我的思想还是偏向c语言类型的面向过程,我把很多的函数写在一个类中,用static方式调用,并没有做出一些实例化的对象出来。但是在不断的学习过程中,我好像有点渐渐懂得了面向对象的内涵,我开始把游客与宠物嬉戏的很多操作写在了一个类中,并且构建了宠物父类pet,dog、cat、fish等子类。由于时间和惰性,我有很多的点没有更改,即使想到了更好的解决方法,也面对着改了一处就要改n处的问题。所以并没有选择大改,仅仅是在后期应用了面向对象的知识点,但我觉得这是远远不够的,还有很多等待着我去学习。所以,在这个项目总结中立下一个flag,大一下学期一定要再次设计一个运用更多知识和技术实现的宠物商店!