




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理课程设计题目:家庭财务管理系统组长:组员:所属院(系): 计算机科学学院专业年级:计算机科学与技术指导教师:职称:讲师时间:2015-5-27摘要1. 项目的设计目标现代社会家庭的理财观念进一步提高,理财手段变得更加丰富。随着生活水平和文化水平的提高, 家庭购买电脑的能力和应用电脑的能力开始提高。电脑及其应用的普及化, 人们应用电脑进行家庭财务管理的观念增强, 因此,开发一个通用性家庭理财软件已经成为社会需求。本系统是一个家庭通用型理财软件,系统目标是把适合家庭化管理的各种理财手段及家庭日常收支管理实现计算机化管理,使对家庭及家庭成员的收支活动更好地进行记录并加以统计分析成为可能,也
2、使家庭理财变得方便、全面、快捷。2. 项目的设计思路我们是根据咨询家长在记账时一般需要做哪些记录,并且有哪些统计不方便手工处理,需要计算机帮忙处理,如果有一个这样的记账软件,用户会希望有哪些功能。 所以我们先确定了有以下几大模块: 收入记录,支出记录,借入记录,借出记录,总结。然后就开始构思总的界面实现,以及各分界面实现,最后到数据库与各界面的链接以及相关功能实现。第一章前言现在,人们的生活水平和文化素质普遍提高, 并且开始注重生活质量。 随着市场经济的快速发展, 观念的不断更新, 个人理财意识普遍增强, 特别是家庭理财意识得到很大发展, 在意识上, 一方面,人们对家庭和个人的各方面消费有想进
3、行统计和分析的愿望, 以便更好地做好家庭收支计划, 和家庭财务管理。 另一方面,各种理财手段不断丰富, 如何把各种理财手段统一起来, 并且能更加方便的操作成为要求。 在物质基础上, 计算机的应用开始普及, 人们购置计算机和使用计算机的能力增强, 人均计算机拥有量将快速提高。 这些条件说明, 人们有使用一个家庭化财务软件的需求。第二章需求分析一、调查用户需求本系统的最终用户为以家庭为单位的个人。 根据我们日常生活中的经验,结合自己对父母或其他家庭成员的咨询与调查,得出用户的下列实际要求:用户以家庭为单位注册一个家庭财务信息管理系统的账号, 同为一个家庭的家庭成员只要知道本家庭的账号及账号密码,便
4、可登录使用该系统。1. 家庭收入的基本信息每个用户都有一个唯一的家庭财务信息管理系统账号,登录之后,每次收入记录都有唯一的收入编号,并且将同时记录下收入的日期,收款人等相关信息。2. 家庭支出的基本信息每条支出记录都有唯一的编号, 用户填入付款人, 日期、金额等信息后,将记录到支出资产状况登记表中,并且显示出经过统计之后同一天内的支出合计总额。3. 家庭借入的基本信息除了基本的收入支出以外,家庭财务还会涉及到借贷方面,用户在登录系统后,填入借款信息,包括是向谁借的款,借了多少等,在还款后也要填入已还金额以便查询。4. 家庭借出的基本信息用户借出款后,要及时填入相关信息,如:款项借给谁,是现金还
5、是存款,当然,和借入一样,在还款之后也要及时填入已还金额,这样可以帮助用户记忆所需要的信息。二、用户对系统的要求1. 信息要求:用户能查询到上面提到的家庭财务的所有相关信息, 包括单独的家庭收入信息、支出信息、借入信息、借出信息,还可以多表联查,以得出总的财产状况。2. 处理要求:系统在用户进行登录时, 能根据用户输入的账号和密码与用户信息登记表中的数据进行配对, 配对成功即可登录到系统页面中, 配对不成功则提示该账号不存在或密码错误,请重新输入。当用户发现过去输入的收支记录有错误时, 可以对其进行添加、 修改以及删除,例如某账号中,李明今天发了 3000 元工资,则可在收入模块中添加记录,填
6、写好日期、收款人为李明、项目为工资、金额 3000 元。在发生借贷情况时, 如果有还款行为, 可填写已还金额一栏, 系统可为用户记录,方便用户查询还有多少欠款。3. 安全性与完整性要求安全性要求:( 1) 系统应设置访问用户的标识以鉴别是否是合法用户, 并要求合法用户设置其密码,保证用户身份不被盗用。完整性要求:( 1) 各种信息记录的完整性;( 2) 各种数据间相互的联系的正确性;( 3) 相同的数据在不同记录中的一致性。三、系统功能的设计和划分根据如上得到的用户需求, 我们将本系统按照所能完成的功能分成以下几个模块:1. 处理用户登录2. 用户可以记录家庭收入信息3. 用户可以记录家庭支出
7、信息4. 用户可以记录家庭借入信息5. 用户可以记录家庭借出信息6. 用户可以对以上信息进行查询并查询总的财务状况四、数据流图收入分数据流图用户在登录家庭财务管理系统之后, 点击增加按钮, 选择收入栏, 便会弹出对话框,用户将收入信息(日期、收入金额、收款人、项目)填写好,点击确认,收入信息将自动存入收入资产登记表中。用户可以点击左侧的收入按钮,即提出收入查询请求,系统则会将数据库中的收入资产信息显示给用户。如图2-1用户收入信息收入登记收入信息收入资产登记表收收入入查资询产请信求息收入查询收入资产信息图 2-1收入分数据流图支出分数据流图用户在登录家庭财务管理系统之后,点击增加按钮, 选择支
8、出栏, 便会弹出对话框,用户将支出信息 (日期、支出金额、付款人、 项目)填写好,点击确认,支出信息将自动存入支出资产登记表中。用户可以点击左侧的支出按钮,即提出支出查询请求,系统则会将数据库中的支出资产信息显示给用户。如图2-2支出信息支出信息用户支出登记支出资产登记表支出资产信息支出查询请求支出资产信息支出查询图 2-2支出分数据流图借入分数据流图用户在登录家庭财务管理系统之后, 点击增加按钮, 选择借入栏, 便会弹出对话框,用户将借入信息 (日期、借入金额、已还金额、 借款人、项目)填写好,点击确认,借入信息将自动存入借入资产登记表中。 用户可以点击左侧的借入按钮,即提出借入查询请求,
9、系统则会将数据库中的借入资产信息显示给用户。 如图 2-3借入信息借入信息用户借入登记借入资产登记表借入查资询产请信求息借入资产信息借入查询图 2-3借入分数据流图借出分数据流图用户在登录家庭财务管理系统之后, 点击增加按钮, 选择借出栏, 便会弹出对话框,用户将借出信息 (日期、借出金额、已还金额、 借款人、项目)填写好,点击确认,借出信息将自动存入借出资产登记表中。 用户可以点击左侧的借出按钮,即提出借出查询请求, 系统则会将数据库中的借出资产信息显示给用户。 如图 2-4借出信息借出信息用户借出登记借出资产登记表借查出询资请产求信息借出资产信息借出查询图 2-4借出分数据流图总数据流图收
10、入资产登记表支出资产登记表收收入入信资产息信息收收入入登查记询收查入询信请息求借入信息借入登记借入信息借入资产登记表支出资产信息支出收入信息支出信息查询查询请求用户借出信息借借借出入出登资资产产记信信借息息出信息借出资产登记表支出信息支出登记支出信息登录信息用户登录情况登录用户信息用户信息登记表图 2-5总数据流图五、数据字典1. 数据项家庭收入数据字典属性名存储代码类型长度备注收入编号收入编号char5同一天以内的收入编号收款人收款人char10该收入的家庭成员姓名项目项目char10收入来源收入金额收入金额int20收入金额日期日期char15收入的时间家庭支出数据字典属性名存储代码类型长
11、度备注支出编号支出编号char5同一天以内的支出编号付款人付款人char10该支出的家庭成员姓名项目项目char10支出去向支出金额支出金额int20支出金额日期日期char15支出的时间借入数据字典属性名存储代码类型长度备注借入编号借入编号char5同一天以内的借入编号日期日期char15借款日期借入金额借入金额int20借款金额已还金额已还金额int20已还金额借款人借款人char10向谁借的款借出数据字典属性名存储代码类型长度备注借出编号借出编号char5同一天以内的借出编号日期日期char15借款日期借出金额借出金额int20借出金额已还金额已还金额int20已还金额借款人借款人cha
12、r10款项借给谁用户数据字典属性名存储代码类型长度备注账号账号char20登录账号密码密码char20登录密码2. 数据结构数据结构名组成家庭收入信息收入编号,收款人,项目,金额,日期家庭支出信息支出编号,付款人,项目,金额,日期家庭借入信息借入编号,日期,借入金额,已还金额,借款人家庭借出信息借出编号,日期,借出金额,已还金额,借款人用户信息账号,密码3. 数据流数据流名数据流来源数据流去向组成收入登记信息用户收入资产状况登记表收入信息收入查询信息收入状况登记表用户收入信息收入查询请求用户收入查询收入查询请求支出登记信息用户支出资产状况登记表支出信息支出查询信息支出状况登记表用户支出信息支出
13、查询请求用户支出查询支出查询请求借入登记信息用户借入资产状况登记表借入信息借入资产信息借入资产状况登记表用户借入资产信息借出登记信息用户借出资产状况登记表借出信息借出资产信息借出资产状况登记表用户借出资产信息登录信息用户用户登录登录信息用户信息用户信息登记表用户登录用户信息登录情况用户登录用户登录情况4. 数据存储数据存储名输入的数据流输出的数据流组成收入资产状况收入信息收入信息收入信息登记表支出资产状况支出信息支出信息支出信息登记表借入资产状况借入信息借入资产状况借入信息 借入资产状况登记表借出资产状况借出信息借出资产状况借出信息 借出资产状况登记表用户信息登记用户信息 登录登录情况用户信息
14、 登录信息 登录表信息情况5. 处理过程处理过程名输入数据流输出数据流收入登记收入信息收入信息收入查询收入信息 查询请求收入信息支出登记支出信息支出信息支出查询支出信息 查询请求支出信息借入登记借入信息借入信息借出登记借出信息借出信息用户登录登录信息 用户信息登录情况第三章系统概要设计本部分的目标是根据需求分析说明书设计ER图密码日期账号编号登录收入日期用户支出编号家庭支出项目日期付款人金额借入编号借出日期编号借入金额家庭借出借款人已还金额借出金额图 3-1总ER图项目家庭收入金额收款人借款人家庭借入已还金额收入分 ER图如图 3-2 所示,家庭收入这个实体共有三个属性,分别是收款人,收入金额
15、以及收入的项目(来源) ,其与实体用户的联系:收入,又有两个属性,分别是日期和编号用户日期编号收入家庭收入收款人项目收入金额图 3-2 收入分 ER 图支出分 ER图如图 3-3 所示,家庭支出这个实体共有三个属性, 分别是付款人, 支出金额以及支出的项目(去向) ,其与实体用户的联系:支出,又有两个属性,分别是日期和编号日期支出用户编号家庭支出支出金额付款人项目图 3-3支出分 ER 图借入分 ER图如图 3-4 所示,家庭借入这个实体共有三个属性, 分别是借款人, 借入金额以及已还金额,其与实体用户的联系:借入,又有两个属性,分别是日期和编号日期借入用户编号家庭借入已还金额借款人借入金额图
16、 3-4借入分 ER 图借出分 ER图如图 3-5 所示,家庭借出这个实体共有三个属性,分别是借款人, 借出金额以及已还金额,其与实体用户的联系:借出,又有两个属性,分别是日期和编号日期借出用户账号编号家庭借出借款人已还金额借入金额图 3-5借出分 ER 图第四章逻辑及物理设计本章的核心内容是将 ER图转换为关系模式和创建数据库关系模式:用户(账号,密码)家庭收入(收入编号,日期,收款人,项目,金额)家庭支出(支出编号,日期,付款人,项目,金额)家庭借入(借入编号,日期,借入金额,已还金额,借款人)家庭借出(借出编号,日期,借出金额,已还金额,借款人)(下划线标注的属性为主码)第五章系统实现及
17、测试1.系统实体对象设计实体类对象主要用java 类来结构化后台数据表,完成对后台对数据表的封装,定义与表结构相一致的各种类属性和读取、设置累属性的 get、set 类方法。在工程的 model 包中建立一个 java 类,定义相应的属性,并为每一个属性定义相应的 get()、set()方法,这样就完成了一个实体类的设计。下面给出家庭收入实体类的源代码:/*家庭收入 .java*/packagemodel;publicclass家庭收入 privateString收入编号 ;privateString日期 ;privateint 收入金额 ;privateString账户 ;privateSt
18、ring项目编号 ;privateString成员编号 ;public String get收入编号 ()return收入编号 ;publicString get日期 ()return日期 ;publicintget收入金额 ()return收入金额 ;publicString get账户 ()return账户 ;publicString get项目编号 ()return项目编号 ;publicString get成员编号 ()return成员编号 ;publicvoidset收入编号 (String收入编号 )this. 收入编号 = 收入编号 ;publicvoidset日期 (Strin
19、g日期 )this.日期 =日期 ;publicvoidset收入金额 ( int收入金额 )this. 收入金额 = 收入金额 ;publicvoidset账户 (String账户 )this.账户 =账户 ;publicvoidset项目编号 (String项目编号 )this. 项目编号 = 项目编号 ;publicvoidset成员编号 (String成员编号 )this. 成员编号 = 成员编号 ;其他实体类(家庭支出,家庭借入,家庭借出,用户)的设计与家庭收入类的设计相似,所不同的就是对应的后台表结构有所区别。2.操作数据库的公共类CommonaJdbc.java数据库的连接操作是
20、系统中的重要一步,系统运行首先进行数据库的连接操作,如果连接失败,则程序不能够运行。在包 util 下建立类 CommonaJdbc.java 文件,导入 jdbc 包文件,定义一个静态类型的类变量 connection 用来建立数据库的连接,这样在其他类中就可以直接访问到这个变量,定义公共方法getCon()为实例变量赋值,详细CommonaJdbc代码如下:/*CommonaJdbc.java*/package util;import java.sql.Connection;import java.sql.DriverManager;public class CommonaJdbc pub
21、lic static Connection conection = null;/ 连接数据库public CommonaJdbc()public static Connection getCon()try Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); conection =DriverManager.getConnection("jdbc:microsoft:sqlserver:/localhost :1433;DatabaseName=score", "sa&qu
22、ot;, ""); catch (java.lang.ClassNotFoundException ex) ex.printStackTrace(); catch (java.sql.SQLException ex) ex.printStackTrace();return conection;3. 操作数据库的公共类在 util 包下建立公共类 JdbcAdapter.java 文件,该类封装了对所有数据表的添加修改删除操作, 前台业务中的相应功能都是通过这个类来完成的, 它的设计思想是,通过上面设计的各种实体对象作为参数,进而执行类中的相应方法。(1) 定义一个私有类方法
23、 AdapterObject() 用来执行数据表的所有操作, 方法参数为生成的 sql 语句。该方法的详细代码如下:/*JdbcAdapter . java */privatestaticbooleanAdapterObject(String sqlState)booleanflag =false;System.out .println(" 执行的语句为 :"+ sqlState);con = CommonaJdbc.conection;trycon = CommonaJdbc.conection;pstmt=con .createStatement();pstmt.exe
24、cuteUpdate(sqlState);flag =true;JOptionPane.showMessageDialog( null, infoStr功!", " 系统提示 " ,JOptionPane.INFORMATION_MESSAGE );+" 数据成catch (java.sql.SQLException sql)flag =false;sql.printStackTrace();returnflag;(2) 由于这个类中封装了所有的表操作, 它们的实现方法都是一样的, 因此这里仅以操作家庭收入表插入的 InsertObject() 方法和操
25、作家庭收入表修改的UpdateObject()方法,其他的方法的编写相似。/*JdbcAdapter . java*/publicstaticbooleanInsertObject(家庭收入家庭收入info)String sqlStatement =null;sqlStatement ="Insert家庭收入values ('"+家庭收入info.get收入编号() +"','"+家庭收入info.get日期 ()+"','"+家庭收入info.get收入金额() +"',
26、39;"+家庭收入info.get项目编号()+"','"+家庭收入info.get成员编号()+"')"infoStrSystem.return="添加收入 "out .println(sqlStatement);AdapterObject(sqlStatement);publicstaticbooleanUpdateObject(家庭收入家庭收入 info)String sqlStatement =null;sqlStatement ="Update家庭收入set收入编号= '&
27、quot;+家庭收入 info.get收入编号 () +"',日期 ='"+家庭收入info.get日期 ()+"',收入金额='"+家庭收入info.get收入金额()+"',项目='"+ 家庭收入info.get项目编号()+"',收款人='"+家庭收入info.get成员编号()+"' where收入编号= '"+家庭收入info.get收入编号().trim()+"'"infoSt
28、rSystem.return="更新收入 "out .println(sqlStatement);AdapterObject(sqlStatement);4. 检索数据的公共类 RetrieveObject.java数据的检索功能在整个系统中占有重要位置,系统中的所有查询都是通过该公共类实现的,该公共类通过传递的查询语句调用相应的类方法,查询满足条件的数据或者数据集合。该类定义类方法getTableModel()用来生产一个表格数据模型,该方法返回类型为DefaultTableModel,该方法中一个数组参数name用来生成表模型的列名,方法getTableModel()的
29、详细代码如下。/*RetrieveObject.javapublicDefaultTableModelgetTableModel(StringVector vname =new Vector();for( inti = 0 ; i < name.lengthvname.addElement(namei);*/name,String; i+)sqlStr)DefaultTableModel tableModel =newDefaultTableModel(vname,0);connection= CommonaJdbc.getCon();tryrs=connection.prepareSt
30、atement(sqlStr).executeQuery();rsmd=rs .getMetaData();while( rs .next()Vector vdata =new Vector();for(inti = 1 ; i <=rsmd .getColumnCount() ; i +)vdata.addElement(rs .getObject(i);tableModel.addRow(vdata);catch (java.sql.SQLException sql) sql.printStackTrace();returnnull;returntableModel;5. 用户登录模
31、块设计系统用户登录主要用来验证用户的登录信息,完成用户的登录功能。在ui 包下建立 JF_login 文件,通过使用 MYeclipse 中的插件 SWT对界面进行布局,文件的组件结构图如下:(1)JF_login 文件在公共方法 textField1_keyPressed() 中,定义一个 String 类型的变量 sqlSelect 用来生产 SQL查询语句,再定义一个公共类RetrieveObject类型变量 retrieve,然后调用 retrieve的 getObjectRow() 方法,其参数为sqlSelect,用来判断该用户是否存在。该方法的详细代码如下:public/*JF_
32、login.java*/voidtextField1_keyPressed(KeyEvent keyEvent) if(keyEvent.getKeyCode() = KeyEvent.VK_ENTER)String sqlSelect =null;java.util.Vector vdata =null;sqlSelect ="select账号 from用户 where账号 = '"textField1.getText().trim() +"'"util.RetrieveObjectretrieve= new util.Retrieve
33、Object();vdata = retrieve.getObjectRow(sqlSelect);System.out .println("vdata "+ vdata.size();if(vdata.size() > 0)jPasswordField1.requestFocus();+else javax.swing.JOptionPane.showMessageDialog( null, " 输入的用户账号不存在,请重新输入!", " 系统提示 ",javax.swing.JOptionPane.ERROR_MESSAGE);textField1.requestFocus();(2) 如果用户存在, 再说如对应的口令, 输入的口令正确时, 单击“登录” 按钮,进入系统。公共方法 button1_actionPerformed()的设计与textField1_keyPressed()的设计方法相似,这里不给出代码。6. 系统主界面设计用户登录成功后,进入系统主界面,在主界面中主要完成对家庭财务信息的不同操作,包括各种参数的查询,增加,删除,修改等功能。主界面的组件结构图如下:在界面中设计了一个下拉框,单击“增加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030羊肉可追溯系统建设成本与消费者信任度提升效果评估
- 2026届北京师大附中英语九年级第一学期期末预测试题含解析
- 2025年马鞍山博望区中小学银龄讲学教师招募6人备考考试题库附答案解析
- 2025四川雅安市名山区人民医院招聘编制外专业技术人员12人备考考试题库附答案解析
- 2025四川成都经开区(龙泉驿区)面向社会招募医疗卫生辅助岗项目人员70人备考模拟试题及答案解析
- 2025山东菏泽学院招聘高层次人才3人(第五批)考试模拟试题及答案解析
- 2025天津城建大学第四批招聘22人(博士岗位)考试参考题库及答案解析
- 南昌市西湖城市建设投资发展集团有限公司及下属子公司招聘专题【40人】考试参考试题及答案解析
- 冰雪旅游项目2025年投资回报与可行性分析报告
- 2025年储能行业在储能市场国际化进程中的应用报告
- 2025至2030年中国晶质石墨深加工行业市场调查研究及投资战略咨询报告
- 船舶电气小知识培训课件
- 2025版外墙保温涂料分包工程合同范例
- (2025秋新版)人教版八年级地理上册全册教案
- 2025年成人高考政治试题及答案
- 2025版酒店租赁经营合作协议模板:2025年度版
- 湘少版(三起)(2024)三年级上册英语全册教案
- 小屁孩日记阅读课件
- 2025年新生儿误吸(呛奶)应急预案演练脚本
- 医院网络信息安全培训
- 《构成设计基础》全套教学课件
评论
0/150
提交评论