毕业设计(论文)家庭记账系统的设计与实现_第1页
毕业设计(论文)家庭记账系统的设计与实现_第2页
毕业设计(论文)家庭记账系统的设计与实现_第3页
毕业设计(论文)家庭记账系统的设计与实现_第4页
毕业设计(论文)家庭记账系统的设计与实现_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、家庭记账系统的设计与实现 摘要摘要:记账是一个家庭不可缺少的,企业很早就实施了记账的集中系统管理,而家庭使用 的小型记账系统却还是凤毛麟角,记账是很小的一个部分,但大到企业,小到家庭都有十 分重要的意义。 本论文介绍了家庭记账系统开发的整个过程。利用软件工程原理,采用面向对象的编程方 法,其开发主要包括后台数据库的建立、维护以及前端应用程序开发,实现了家庭记账的 自动化和信息化。 主要包括以下几个模块:用户密码登陆,原始数据的汇入、查询、统计,家庭特殊事件的 提醒等,从而对家庭收入与支出进行有效、系统的管理,并使之更全面和灵活。 论文系统地分析了软件开发的背景及过程,首先介绍了软件的开发环境,

2、其次介绍了本软 件的详细设计过程:数据库的设计以及具体界面的设计和功能,最后对在本软件开发过程 中的问题进行了总结。 关键词关键词:记账;收支管理;查询;软件工程 the design and implementation of the domestic accounting system abstract:the system of domestic accounting is very important to a family, and it is an indispensability part. long ago, the corporation had focused on car

3、ry out the financial manage. however, it was rarity. though accounting was only a small part, but to corporation or family, it has very important meaning. the thesis introduced the whole process which refers to the system of domestic accounting in family. using the theory of software engineering and

4、 adopting the way of object oriented program, whose exploitation mainly includes the establishment begin form1.hide; frm_userregister.showmodal; form1.show; end; procedure tform1.bitbtn2click(sender: tobject); begin form1.hide; frmlogon.showmodal; form1.show; end; /procedure tform1.bitbtn3click(send

5、er: tobject); /begin /form1.hide; /frmchangepassword.showmodal; /form1.show; /end; procedure tform1.formcreate(sender: tobject); var sql : string ; / i:integer; strstartdate:string ; strenddate:string ; begin strstartdate:=datetostr(now(); strenddate:=datetostr(now()+7 ); sql:=select * from dt where

6、 date_time= +strstartdate + and date_time 0 then begin showmessage(成功登录!); frmlogon.hide; frmmain.showmodal; frmlogon.show; end else showmessage(输入有误!); end; procedure tfrmlogon.button3click(sender: tobject); begin close; end; end. 程序主界面 正确登陆后出现此窗口,可以选择想进行的操作,点击对应按钮即可。设置的提醒事 件显示在该窗口下方。 核心代码: procedu

7、re tfrmmain.button1click(sender: tobject); begin frmincomeadd.showmodal; end; procedure tfrmmain.button2click(sender: tobject); begin frmoutcomeadd.showmodal; end; procedure tfrmmain.button3click(sender: tobject); begin frmqueryincome.showmodal; end; procedure tfrmmain.button4click(sender: tobject);

8、 begin frmqueryoutcome.showmodal; end; procedure tfrmmain.button5click(sender: tobject); begin frmincomesum.showmodal; end; procedure tfrmmain.button6click(sender: tobject); begin frmoutcomesum.showmodal; end; procedure tfrmmain.formcreate(sender: tobject); begin lbldt.caption := + unit1.strdt; end;

9、 procedure tfrmmain.button7click(sender: tobject); begin frmmain.hide; frmchangepassword.showmodal; frmmain.show; end; procedure tfrmmain.button8click(sender: tobject); begin frmmain.hide; frmaddnotice.showmodal; frmmain.show; end; end. 收入登记 输入任一人的收入信息。 核心代码: procedure tfrmincomeadd.button1click(sen

10、der: tobject); var sql:string; /i:integer; dt1:string; begin dt1:=datetostr(now(); sql:=insert into salary(user_name,price,mark,date_time) values(+edit2.text+,+edit1.text+,+edit3.text+,+dt1+); adoconnection1.open; adoconnection1.execute(sql); adoconnection1.close; showmessage(添加成功!); end; procedure

11、tfrmincomeadd.button2click(sender: tobject); begin close; 收入查询 输入用户想查询的人的名字,可一查询到所有该姓名对应的收入详细情况。 核心代码: procedure tfrmqueryincome.button1click(sender: tobject); var sql : string ; item:tlistitem; i:integer; begin sql:=select * from salary where user_name=+ edit1.text + and price not like -%; adoquery

12、1.sql.clear; adoquery1.sql.add(sql); adoquery1.open; / i := listview1.items.count; listview1.items.clear; while not(adoquery1.eof) do for i := 0 to adoquery1.recordcount -1 do begin item:=listview1.items.add; / listitem.caption:= inttostr(i); item.caption:=trim(adoquery1.fieldbyname(user_name).asstr

13、ing); item.subitems.add(trim(adoquery1.fieldbyname(price).asstring); item.subitems.add(trim(adoquery1.fieldbyname(mark).asstring); item.subitems.add(trim(adoquery1.fieldbyname(date_time).asstring); adoquery1.next; end; end; 收入统计 点击收入统计按钮后出现此窗口,显示出一段时间内所有姓名对应的各项收入总和。 核心代码: procedure tfrmincomesum.for

14、mcreate(sender: tobject); var sql : string ; item:tlistitem; i:integer; strstartdate:string ; strenddate:string ; begin strstartdate:=datetostr(now(); strenddate:=datetostr(now()-30 ); sql:=select user_name ,mark,sum(price) as price from salary where price not like -% and date_time= +strenddate + gr

15、oup by user_name,mark order by user_name; adoquery1.sql.clear; adoquery1.sql.add(sql); adoquery1.open; / i := listview1.items.count; listview1.items.clear; while not(adoquery1.eof) do for i := 0 to adoquery1.recordcount -1 do begin item:=listview1.items.add; / listitem.caption:= inttostr(i); item.ca

16、ption:=trim(adoquery1.fieldbyname(user_name).asstring); item.subitems.add(trim(adoquery1.fieldbyname(price).asstring); item.subitems.add(trim(adoquery1.fieldbyname(mark).asstring); adoquery1.next; end; end; 修改密码 输入正确的用户名和密码可以修改密码。 核心代码: procedure tfrmchangepassword.button2click(sender: tobject); var

17、 strstr:string; i:integer; begin /adoquery1,close; adoquery1.sql.text:=select * from user_info where user_name=+ edit1.text + and user_password=+ edit2.text + ; adoquery1.open; i:=adoquery1.recordcount; if i =0 then /原用户名和密码输入有误 showmessage(原用户名和密码输入有误!) else begin if edit3.text edit4.text then show

18、message(两次输入的密码不相同!) else /两次输入的密码相同 ,可以修改密码 begin /adoquery1.close; /adoquery1.sql.text:=update user_info set user_password=+ edit3.text + where user_name=+ edit1.text + and user_password=+ edit2.text + ; /adoquery1.open; strstr:=update user_info set user_password=+ edit3.text + where user_name=+ e

19、dit1.text + and user_password=+ edit2.text + ; adoconnection1.open(); adoconnection1.execute(strstr); showmessage(密码修改成功!) end; end; end; procedure tfrmchangepassword.button3click(sender: tobject); begin close; end; 事件提醒设置 可以设置需要进行提醒的事件。 核心代码: procedure tfrmaddnotice.button2click(sender: tobject); b

20、egin close; end; procedure tfrmaddnotice.button1click(sender: tobject); var sql:string; /i:integer; begin sql:=insert into dt values(+edit1.text+,+edit2.text+,+edit3.text+); adoconnection1.open; adoconnection1.execute(sql); adoconnection1.close; showmessage(添加成功!); end; 注:由于支出和收入模块设计与实现类似,此处不再表述。 4.

21、2 ado 连接数据库设计 ado 连接数据库 delphi 连接数据库使用 ado 控件,具体设置如下: (1)打开 ado 的属性。 (2)选择数据库类型,我用的是 sql server 2000 数据库,所以选择 midrosoft ole db provider for sql server。 (3)选择数据库测试连接,如果连接成功确定即连接上了服务器了。 5 系统测试和优化 5.1 测试目的 系统测试的目的是:测试的定义是为了发现程序中的错误而执行程序的过程。所以测 试的目的是测试系统中各个功能模块的功能,及时发现迄今为止尚未发现的错误,及时发 现系统中尚未发现的缺陷,及时地反馈给程

22、序设计人员,以达到改正错误、优化程序代码、 提高程序执行速度和提高软件可靠性的目的。 5.2 测试方法 测试任何的系统都有两种方法:如果已经知道了系统应该具有的功能,可以通过测试 来检验是否每个功能都能正常使用;如果知道产品内部工作过程,可以通过测试来检验系 统内部动作是否按照规格说明回溯的规定正常进行。前一种方法称为黑盒测试;后一种方 法称为白盒测试。 对于软件测试而言,黑盒测试方法把程序看成一个黑盒子,完全不考虑程序的内部结 构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能 按照规格说明书的规定正常使用,程序是否能适当的接收输入数据产生正确的输出信息, 并且保

23、持外部信息(如数据库或文件)的完整性。黑盒测试又称为功能测试。与黑盒测试 法相反,白盒测试法这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否 都能按预定要求正确工作。白盒测试又称为结构测试。 5.3 测试步骤 除非是测试一个小程序,否则一开始就把整个系统作为一个单独的实体来测试是不现 实的。与开发过程类似,测试过程也必须分步骤进行,后一个步骤在逻辑上是前一个步骤 的继续。 从过程的观点考虑测试,在软件工程环境中的测试过程,实际上是顺序进行的四个步 骤的序列: (1) 单元测试 单元测试阶段着重测试每个单独的模块,以确保它作为一个单元来说的功能是正确的。 单元测试大量使用白盒测试技术

24、,检查模块控制结构中的特定路径,以确保做到完全覆盖 并发现最大数量的错误。 (2) 集成测试 集成测试是测试和组装软件的系统化技术,在把模块按照设计要求组装起来的同时进 行测试,主要目标是发现与接口有关的问题。在集成测试过程中最常使用的是黑盒测试用 例设计技术,当然,为了保证覆盖主要的控制路径,也可能使用一定数量的白盒测试。 (3) 高级测试 在软件集成完成之后,还要进行一系列高级测试。必须测试在需求分析阶段确定下来 的标准,确认测试是对软件满足所有功能的、行为的和性能的需求的最终保证。 5.4 系统优化 系统优化很大一部分是在数据库系统的优化,查询优化在数据库中有着非常重要的地 位。所以系统

25、要优化大部分的优化是在查询数据库方面来做的。查询优化的优点不仅在于 用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的优 化做的更好,因为: (1) 优化器可以从数据字典中获取许多统计信息; (2) 如果数据库的物理统计信息改变了,系统可以自动的对查询进行重新优化以选择 适当的执行计划; (3) 优化器可以考虑数百种不同的优化技术,而程序员一般只能考虑有限的几种可能 性; (4) 优化器中包括了很多复杂的优化技术,这些技术要很好的技术员才能掌握,系统 的自动优化解决了这个问题。 另外 delphi 中在窗体转化中,隐藏窗体有两种方式,一个是.hide,另一个是 clo

26、se,前 面的只是把这个窗体隐藏起来,而后面的就是在运行本系统的时候的内存中把窗体关掉, 所以除了主窗体用 hide 以外一般直接 close,这样可以尽量减少本系统占用用户机子的内存, 使得系统的性能更好。 6 结束语结束语 通过此次毕业设计,我学习了用软件工程的方法较为系统地开发一款应用软件的全过 程。基本实现了家庭记账可能牵涉到的各方面功能。 在设计过程中,对 delphi 这一工具的学习也使我受益不少。很多更好的功能等待进一 步的发掘。 对 sql server 2000 的使用也让我对该数据库的内涵有了新的了解。 由于时间的关系,该系统设计的较粗糙,有许多需要完善的地方。比如,提醒功能只 能显示出一条需要进行提醒的事件,若有多条符合条件的无法全部显示。在后续的时间里, 我将尽力完成对该系统的优化。 计算机技术飞速发展,在今后的工作中,我会继续学习,学以致用,贡献自己的力量。 参考文献参考文献 1 王珊.数据库系统概论(第四版)m.高等教育出版社,2006 2 张海藩.软件工程导轮(第 4 版)m.清华大学出版社,2003 3 黄梯云.管理信息系统(第三版)m. 高等教育出版社,2004 4 胡学钢,王浩.计算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论