基于Java的简单银行管理系统(MVC设计模式)
功能展示
本系统基于命令台窗口,暂未与图形页面结合。话不多说,先上效果图:

当系统中暂无用户时会提示暂无用户,提醒注册;

输入错误会提示,注册成功后会随机生成卡号,此卡号是由系统随机生成的,要牢记。注册成功后进入功能页面;

查看余额:

存钱:

取钱:

记录用户交易明细:

修改资料,若用户什么不填则不修改,两次输入密码必须一致;暂不演示。

注销账户必须验证密码;

另外还有管理员部分,暂不演示,文末放源码,感兴趣的可以自行了解。其功能如下;

项目描述
本系统涉及的知识点主要包括,面向对象,I/O操作,异常处理,集合等操作。。。
本系统主要针对服务用户以及后台管理人员,各自可以实现各自操作:


项目结构
除去测试模块不谈(对一些功能的测试),本项目基本结构如下:

data
data模块用于管理数据,两个.dat文件分别存储用户以及管理员信息,DataPath保存的是文件的路径,方便操作(绝对路径),FileInOut主要用于控制文件的读入读出操作,内置两个函数:

service
此模块主要用于对用户数据存储,以及相关操作,接下来一一介绍:
Information是UserInfo以及AdminInfo的父类,用于定义信息
Information为抽象类,设置此类的目的是方便对数据操作,想要获取任何一种身份的信息,只需要调他们共有的父类就行了,然后再具体身份具体转换,另外InfoList是直接对信息进行操作(包含了添加,删除,修改等操作)
而文件直接存储的是InfoList,因此他们都实现了序列化,结构如下:

utils
工具类,一个是自定义的异常类InfoException,另一个是控制用户从键盘输入和输出的工具类MyUtils,其中控制输入密码的部分,因为我为了方便测试,就没有设置为输入隐藏,感兴趣的可以自行设置。

view
视图层,直接与用户交互的模块,其中EnterMain为程序主入口,通过这个类进入。
AdminLogin和UserLogin完成用户以及管理员的登录,以及功能界面的显示,UserMenu和AdminMenu是对具体功能的细化,在基础功能上加入了与用户交互的部分。

欠缺与总结
本系统在构思的时候,是想让代码尽量轻量化,避免重复性,因此采用了这种模式,让各部分都相互独立,也方便管理。但是我设计的各个类之间联系不大,就不可避免的还是存在了重复性代码,因此显得有些多余。
但是因为着急完成,抽的课余时间写的,想着锻炼一下,花了三天时间。
我的设计顺序是:先设计信息模块,再对文件操作定义好,再去封装操作信息的功能类,等到这些都完成后,就该最外层与用户直接交互的部分了;先创建两个工具类避免重复调用输入,最后对各个功能加工,加入提示信息。
总之,收获还是很大的,毕竟是自己独立完成的,也加深了我对这种设计模式的认识。
源码下载
点此下载,或可评论区留言说明。
注意因为管理员的账号也是随机生成,因此需要你记下来:
账号:0074700904
密码:admin123456
基于Java的简单银行管理系统(MVC设计模式)的更多相关文章
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- 课程设计- 基于ssm的捐赠物资分配管理系统 && 基于java的申请救援管理系统
课程设计- 基于ssm的捐赠物资分配管理系统 && 基于java的申请救援管理系统 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架: ...
- 基于Java实现简单亚马逊爬虫
前言:最近博主买了台Kindle,感觉亚马逊上的图书资源质量挺好,还时不时地会有价格低但质量高的书出售,但限于亚马逊并没有很好的优惠提醒功能,自己天天盯着又很累.于是,我自己写了一个基于Java的亚马 ...
- 基于java的简单Socket编程
1TCP协议与UDP协议 1.1 TCP TCP是(Tranfer Control Protocol)的简称,是一种面向连接的保证可靠传输的协议.通过TCP协议传输 ...
- java一个简单的管理系统
用java实现的简单管理系统 运行出来的状态 实现了新增.删除.借出.归还.排行榜简单的功能! 下面是简单的代码 首先定义一个书籍类,自己打开哦! public class Book implemen ...
- 基于.NET6的简单三层管理系统
前言 笔者前段时间搬砖的时候,有了一个偷懒的想法:如果开发的时候,简单的CURD可以由代码生成器完成,相应的实体.服务都不需要再做额外的注册,这样开发人员可以省了很多事. 于是就开了这个项目,期望实现 ...
- 001. 使用IDEA新建一个JAVA最简单的Spring MVC JAVAWEB程序
1. 我们打开一个空的IDEA 2. 选择Java之后点击Next 3. 点击Next创建空白工程 4. 给工程取个名字,叫MYIDEA 5. 勾选之后,点击This Window按钮 6. 我们可以 ...
- 基于mybatis设计简单信息管理系统2
1.空指针异常 public class CanvasServlet extends HttpServlet { private CanvasService canvasService; privat ...
- 基于JAVA WEB的医药管理系统
学习上可以模仿,但是不可以抄袭! 附加百度链接:http://wenku.baidu.com/link?url=_r44vGCi8pcm6o44YCvkcHGoT_XhB8jURnweao2YVo1j ...
随机推荐
- Python中切片方法总结
对字符串或列表使用切片方法进行操作时 对包含[-1]的方法的使用经常用错 其实[-1]即指最后一个元素(同理[-2]指倒数第二个元素) 现总结如下 以便加深记忆 >>> li = [ ...
- hive 之 常用基本操作
show databases; -- 查看所有数据库 use 数据库; -- 进入某个数据库 select current_database(); -- 查看当前使用的数据库 show tables; ...
- c# - 实体类和有参无参构造函数的具体写法
1.前言 与Java基本一模一样,但是rider貌似没有意见生成get和set方法的指令 2.操作 (1)目录 实体源码 namespace ConsoleApp1.entity { public c ...
- centos7 date时间命令
date "+%F %T" %F full date; same as %Y-%m-%d --相当于年月日格式 %T time; same as %H:%M:%S ...
- 在字节,A/B 实验是这么做的!
主要为大家介绍了为什么要做 A/B 测试.火山引擎的 A/B 测试系统架构及字节跳动内部 A/B 测试的最佳实践. 为什么要做 A/B 测试 首先我们看一个案例. 字节跳动有一款中视频产品叫西瓜视频, ...
- Web安全攻防(一)XSS注入和CSRF
跨站脚本攻击(XSS) XSS(Cross Site Scripting),为不和层叠样式表CSS混淆,故将跨站脚本攻击缩写为XSS. 攻击原理: 恶意攻击者往Web页面里插入恶意Script代码,当 ...
- Android学习笔记2
4,用intent在activity之间传递数据(两个Activity可能不是在一个应用程序中) (1),从MainActivity向HelloActivity传递参数123 package com. ...
- netty基础知识
参考 http://www.infoq.com/cn/articles/netty-high-performance 1. 传统 RPC 调用性能差的三宗罪 1)网络传输方式问题 2)序列化方式问题 ...
- vuecli学习01 - 环境搭建
到这个链接下载nvm的安装包:https://github.com/coreybutler/nvm-windows/releases. 然后点击一顿下一步,安装即可! 安装完成后,还需要配置环境变量. ...
- Django 优化杂谈
Django 优化杂谈 Apr 21 2017 总结下最近看过的一些文章,然后想到的一些优化点,整理一下. 数据库连接池 http://mt.dbanotes.net/arch/instagram.h ...