ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:516.88KB ,
资源ID:7406359      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7406359.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(个人记账簿管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

个人记账簿管理系统.docx

1、个人记账簿管理系统代码行数570项目名称个人记账簿管理系统1实训目的面向对象程序设计课程设计是计算机科学与技术专业培养计划中的重要实践教学环节,旨在通过一个管理信息系统的开发,加深学生对Java语言的理解和应用,尤其是对面向对象编程思想、Java编码规范、图形用户接口、JDBC访问数据库的理解,巩固软件工程课程的相关知识,了解软件开发的基本流程,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。2实训内容使用MyEclipse为开发工具,使用Rational Rose为建模工具,使用MySQL为数据库服务器,基于GUI和JDBC技术,分析、设计并实现一个管理信息系统。3.需求分析3.1

2、需求描述登录:输入账号和密码,完成登录操作,进入主界面,显示个人记账簿管理系统中所有的账单基本信息(主键、名称、消费时间、花费总额等)以及可进行的相关操作的选项。退出:登录后可进行退出操作,结束整个程序。注册:输入账户、密码和确认密码完成新用户的注册。显示账单信息:登录成功后在主界面中以表格形式显示所有账单的信息。添加账单:输入一份账单的各项基本信息(名称、消费时间等),再输入这份账单中的各项花销,完成账单的添加操作,添加成功后显示所有账单的基本信息。删除账单:根据显示的账单基本信息,输入某个账单的主键,完成账单的删除操作,删除成功后以表格形式按创建时间升序显示剩余账单的基本信息。修改账单:根

3、据显示的账单基本信息,输入某个账单的主键,显示账单的基本信息和账单中的各项花费,根据提示信息,选择要修改账单基本信息或某项花费或要删除的某项花费,输入相应字段值或要删除的某项花费的主键,完成账单信息的修改,修改成功后显示该账单修改后的详细信息。查询账单:利用主键查询,获得一份账单的详细信息。3.2 用例描述1、用例:添加账单简单描述:用户在数据库上添加账单信息主参与者:user副参与者:数据库前置条件:连接上数据库且有信息更新需要主流: 用户打开MyEclipse JDBC访问数据库 在控制台输入信息 输入回车,完成账单输入后置条件:账单添加成功附加流:数据库添加失败是提醒错误原因并询问否需要

4、重新输入2、用例:删除账单简单描述:用户在数据库上删除账单信息主参与者:user副参与者:数据库前置条件:连接上数据库且有信息需要删除主流: 用户打开MyEclipse JDBC访问数据库 在控制台输入某个账单的主键 输入回车,完成账单删除 显示剩余账单的基本信息后置条件:账单删除成功附加流:数据库删除失败是提醒错误原因并询问否需要重新删除3、用例:修改账单简单描述:用户在数据库上修改账单信息主参与者:user副参与者:数据库前置条件:连接上数据库且有信息需要修改主流: 用户打开MyEclipse JDBC访问数据库 在控制台输入某个账单的主键 根据提示选择修改账单基本信息 输入回车,完成账单

5、修改 显示剩余账单的基本信息后置条件:账单修改成功附加流:数据库修改失败是提醒错误原因并询问否需要重新删除4、用例:查询账单简单描述:用户在数据库上查新账单信息主参与者:user副参与者:数据库前置条件:连接上数据库且有信息需要查询主流: 用户打开MyEclipse JDBC访问数据库 在控制台输入某个账单的主键 输入回车,完成账单修改 获得一份账单的详细信息后置条件:账单查询成功附加流:数据库查询失败是提醒错误原因并询问否需要重新删除4.功能设计4.1 系统层次方框图4.2 算法设计(活动图或时序图)1.登录功能在主界面(MainView)输入账号和密码,封装成Login对象后发后给业务层(

6、LoginService),在业务层中组合成执行登录操作的SQL语句,再将其传递给数据库访问类(DB),由其完成数据库的查询操作。依据查询结果,如果成功则创建控制类(Controller)对象,显示欢迎信息和对账单信息进行维护的选项;如果失败,则显示提示信息并允许重新输入账号和密码。1.1登录功能时序图2.注册功能在主界面输入数字1,表示进行注册操作。依次输入账户、密码和确认密码,当密码和确认密码不一致时,需要重新输入密码和确认密码。之后,账户和密码封装至Login对象中,传递给业务层(LoginService),由业务层组合成添加SQL语句,发送至数据库访问类(DB),完成添加操作。如果添加

7、成功,则返回主界面,输入新注册的账户和密码进行登录;如果添加失败,则重新进行输入。2.1注册功能时序图3.显示所有账单信息功能登录成功及完成对账单信息增、删、改操作后,均需要进行所有账单信息的显示,由控制类(Controller)调用视图层(MainView)中的方法,在方法中再利用业务层(UserService)完成对数据库访问类(DB)的访问,获取t_bill表的所有记录。3.1显示所有账单信息时序图4.添加账单信息功能在控制类(Controller)输出的选择信息的提示下(1表示执行添加操作),利用简单工厂模式创建视图层(AddView)对象,之后回调接口方法,完成对业务层(UserSe

8、rvice)中注册方法的调用,在该方法中向数据库访问类(DB)发送添加SQL语句。如果添加成功,则显示所有账单信息;如果添加失败,则提示重新输入。4.1账单信息添加时序图5.查询账单信息功能在控制类(Controller)输出的选择信息的提示下(4表示执行添加操作),利用简单工厂模式创建视图层(QueryView)对象,之后回调接口方法,在方法中输入要查询的账单名,再对业务层(UserService)中查询方法执行调用,在该方法中向数据库访问类(DB)发送模糊查询SQL语句。如果查询成功,则显示查询到的账单信息;如果查询失败,则提示重新输入。5.1查询用户信息时序图5.数据设计5.1 类图设计

9、1.数据库访问层DB类用于封装JDBC的操作,完成对数据库的直接访问,采用单态模式创建对象,具体内容如下所示:1.1数据库访问层类图2.数据封装类Login类和User类分别用于登录、注册操作时的数据封装和用户信息管理时的数据封装,具体内容如下图所示:2.1数据封装类类图3.业务层LoginService类进行登录、注册等对Login类的访问操作,UserService类进行账单信息管理的操作,两者均采用单态模式创建对象,具体内容如下图所示:3.1业务层类图4.控制层Controller类用于进行系统的流程控制,具体内容如下所示:4.1控制层类图5.视图层MainView类用于完成登录、注册等

10、提示信息的显示和系统主界面的显示,具体内容如下所示:5.1 MainView类图Operation接口是增、删、改、查等操作的抽象,AddView类、DeleteView类、ModifyView类和QueryView类均使用Operation接口,分别完成增、删、改、查等操作,利用简单工厂模式与Controller类建立关系,具体内容如下所示:5.2视图层类图6.其它Test类是程序的主类,用于启动系统,具体内容如下:Test类是程序的主类5.2 数据表设计序号字段名类型长度备注1idint4主键2accountchar20唯一性、不为空3passwordchar20不为空表4-2 t_use

11、r表序号字段名类型长度备注1idint4主键2namechar20不为空3MoneyDouble2不为空4timedate默认不为空6.运行结果登录并显示账单信息添加账单信息删除账单信息修改账单信息查询账单信息7.关键代码DB类public class DB private Connection con; private PreparedStatement pre; private ResultSet rs; private static DB db; static try Class.forName(com.mysql.jdbc.Driver); catch (ClassNotFoundEx

12、ception e) e.printStackTrace(); private DB() public static DB getInstance() if(db = null) db = new DB(); return db; private void buildConnection() try con = DriverManager.getConnection(jdbc:mysql:/localhost:3306/user, root, root); catch (SQLException e) e.printStackTrace(); public ResultSet executeQ

13、ueryByParam(String sql,Object. o) this.buildConnection(); try pre = con.prepareStatement(sql); for (int i = 0; i o.length; i+) pre.setObject(i+1,oi); rs = pre.executeQuery(); catch (SQLException e) e.printStackTrace(); return rs; public ResultSet executeQueryNoParam(String sql) this.buildConnection(

14、); try pre = con.prepareStatement(sql); rs = pre.executeQuery(); catch (SQLException e) e.printStackTrace(); return rs; public int executeUpdate(String sql,Object. o) this.buildConnection(); try pre = con.prepareStatement(sql); for (int i = 0; i 0) return true; else return false; public class UserSe

15、rvice private DB db; private static UserService service; private UserService() db = DB.getInstance(); public static UserService getInstance() if (service = null) service = new UserService(); return service; public List getAllUsers() String sql = select * from t_user; ResultSet rs = db.executeQueryNo

16、Param(sql); List users = null; try users = this.getList(rs); catch (SQLException e) e.printStackTrace(); finally db.close(); return users; public List queryUsersByName(String name) String sql = select * from t_user where name like ?; ResultSet rs = db.executeQueryByParam(sql, % + name + %); List use

17、rs = null; try users = this.getList(rs); catch (SQLException e) e.printStackTrace(); finally db.close(); return users; private List getList(ResultSet rs) throws SQLException List users = new ArrayList(); User user; while (rs.next() user = new User(); user.setId(rs.getInt(1); user.setName(rs.getStrin

18、g(2); user.setMoney(rs.getInt(3); user.setTime(rs.getDate(4); users.add(user); return users; public boolean insertOneUser(String name, double money, Date time) String sql = insert into t_user(name,money,time) values(?,?,?); int count = db.executeUpdate(sql, name, money, time); db.close(); if (count

19、0) return true; else return false; public boolean deleteUserById(int id) String sql = delete from t_user where id = ?; int count = db.executeUpdate(sql, id); db.close(); if (count 0) return true; else return false; public boolean updateUser(int id, String name, double money, Date time) String sql =

20、update t_user set name = ?,money=?,time=? where id = ?; int count = db.executeUpdate(sql, name, money, time, id); db.close(); if (count 0) return true; else return false; public User getUserById(int id) String sql = select * from t_user where id = ?; ResultSet rs = db.executeQueryByParam(sql, id); t

21、ry if (rs.next() User user = new User(); user.setId(id); user.setName(rs.getString(2); user.setMoney(rs.getInt(3); user.setTime(rs.getDate(4); return user; catch (SQLException e) e.printStackTrace(); finally db.close(); return null; Controller类public class Controller public void controller() throws

22、InputMismatchException Scanner scan = new Scanner(System.in); while (true) MainView.showMain(); System.out.println(please select your operation:); System.out.println(1.insert 2.delete 3.modify 4.query 5.exit); int i = scan.nextInt(); UserService service = UserService.getInstance(); Operation o = nul

23、l; boolean flag = true; switch (i) case 1: o = new AddView(); break; case 2: o = new DeleteView(); break; case 3: o = new ModifyView(); break; case 4: o = new QueryView(); break; case 5: System.out.println(Bye); return; default: /scan.close(); System.out.println(input error,please input 15!); flag =

24、 false; if(flag) o.operation(service); 视图层public class MainView public static void start() Scanner scan = new Scanner(System.in); while (true) LoginService service; System.out.println(please input your account and password to login,enter 1 for register one new user.); String username = scan.next();

25、String password; while (1.equals(username) System.out.println(please input account:); String newUsername = scan.next(); String newPwd; while (true) System.out.println(please input password:); newPwd = scan.next(); System.out.println(please input confirmation password:); String confirmPwd = scan.next(); if (newPwd.equals(confirmPwd)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1