用C++语言设计个人帐薄管理系统_第1页
用C++语言设计个人帐薄管理系统_第2页
用C++语言设计个人帐薄管理系统_第3页
用C++语言设计个人帐薄管理系统_第4页
用C++语言设计个人帐薄管理系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录 言(1)2 相关技术(2) C+介绍(2)2.2 Visual Studio 2021介绍(2)2.3 需求分析(2)3系统流程图(4)4 算法设计(5)5 具体实现及运行结果(6)5.1 创立工程并建立件(6)5.2 个人帐薄管理系统的实现(6)6 结束语(12)7 参考文献(13)8 附件:程序代码(11)用C+语言设计个人帐薄管理系统摘 要 本课程设计主要涉及个人帐薄管理系统,记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。在课程设计中,系统开发平台为Windows Vista,程序设计语言采用Visual studio 2021,

2、数据库采用MS SQL 2021,程序运行平台为Windows Vista/7。对于进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。在程序设计中,添加了使用说明和帮助事项,并且采用了面向对象这种解决问题的方法。程序通过调试运行,初步是想了设计目标,并且经过适当完善后,将可以应用在个人理财解决实际问题。关键词 程序设计;C+;跟人帐薄管理系统;开支情况1 引 言本课程设计主要解决在个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可

3、以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。当今社会,计算机科学已经无处不在,人们的生活、学习、工作甚至娱乐都不可防止地与计算机科学息息相关1。并且随着经济的开展,理财成为我们生活中不可缺少的内容,理财的重要性显而易见。个人帐薄管理系统,能够为我们家庭生活个人理财提供诸多方便,使理财更系统,更精确。作为计算机应用的一局部,使用计算机提供个人帐薄管理系统,既继承了传统理财形式,也克服了人工理财的许多缺点,譬如:计算复杂,会时有错误,而用计算机处理的话这种错误可以轻易防止;输入方便,节省了理财人的时间,提高效率和精确度。查询方便、信息详细清晰。便于理财。2 相关技术21

4、C+介绍C+语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序设计方法。(1) C+是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C+的集成环境下调试和运行。这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。(2) C+是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。 (3) C+集成环境不仅支持C+程序的编译和调试,而且也支持C程序的编译和调试。通常,C+程序环境约定:当源程序文件的扩

5、展名为c时,那么为C程序;而当源程序文件的扩展名为.cpp时,那么为C+程序。(4) C+语句非常简练,对语法限制比拟宽松,因此C+语法非常灵活。其优点是给用户编程带来书写上的方便。其缺点是由于编译时对语法限制比拟宽松,许多逻辑上的错误不容易发现,给用户编程增加了难度。2. 2 Visual Studio 2021介绍Microsoft Visual Studio 2021是面向Windows Vista、Office 2007、W的下一代开发工具,代号“Orcas,是对Visual Studio 2005一次及时、全面的升级。VS2021引入了250多个新特性,整合了对象、关系型数据、XML

6、的访问方式,语言更加简洁。使用Visual Studio 2021可以高效开发Windows应用。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2021支持工程模板、调试器和部署程序。Visual Studio 2021可以高效开发Web应用,集成了,包含ASP.NET AJAX工程模板,它还可以高效开发Office应用和Mobile应用。由于Windows Vista于不兼容,所以我选择在VS2021运行该程序。2. 3 需求分析个人帐薄管理系统具有良好的性能和实用的功能,其性能的良好表现为:输入性强、检索迅速、查询方便、可靠性高等,其实用

7、的功能表现为:由于个人理财所要记载的工程比拟琐碎,查询不方便,容易搞错顺序,应用该管理系统可以输入任意每月开支情况,不但不会轻易犯错,而且可以容易修改每月的记录,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。节省时间和空间,这些优点能够促进优化家庭及财政管理,促进财政管理的科技化和现代化。个人帐薄管理系统可以为用户提供任意月份的查询,月份消费信息包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄,具体信息如表2-1所示。表2-1 个人开支工程信息表数字编号名称具体信息1录入数据录入个人每月份的开支情况2查看数据查看所录入月份的开支情况3修改数据如果录入开清情况有误,可以修改4查

8、询数据可以查询所有月份的开支情况5排序数据可以把所要查询的月份的开支情况按从小到大排列6删除数据删除所输入月份的数据0退出系统退出系统3 系统流程图结束开始0退出系统6删除数据5排序数据4查询数据3修改数据2查询数据1录入数据菜单4 算法设计4 算法设计(1)录入、查询、修改、删除数据。建立一个文件,包括某人5个月的开支情况,对文件中的信息扩充,包括修改,删除等。所以先确定文件保存路径,接受键盘输入,像文件内写入内容,将dat格式文件转换为txt文件,查询用声明,自定义数据类型,然后返回查询结果及查询状态,继而对查询结果排序。删除数据时,先调用翻开转换的文本文件。修改数据时,要重写数据,删除源

9、文件,重命名中间文件,显示新的数据。 (2)起泡排序 起泡排序是每趟把领先序列中最小的元素放在开始位置,是交换排序中最简单的排序方法,其根本思想是:两两比拟相邻记录的关键码,如果反序那么交换,值到没有反序的记录为止,将整个待排序的记录序列分成为有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。对无序去从前向后依次将相邻记录的关键码进行比拟,假设反序那么交换,从而使得关键码晓得记录向前移,关键码大的记录向后移像水中的气泡,体积大的先浮上来。重复执行,之前无序区中没有反序的记录。确定每趟范围。 (3)其根本思想是:先确定文件保存路径,建立一个文件,录入个人5个月的开支情况,对文件中的

10、信息扩充,包括修改,删除等。接受键盘输入,向文件内写入内容,将dat格式文件转换为txt文件,然后输入2进行查看,查看所录入的数据,如果数据有误,可以输入3修改数据,输入4查询所有月份的开支情况,系统自动启用气泡排序对数据精心两两比拟,按从小到大的顺序排列。5 具体实现及运行结果5.1 创立工程并建立文件1启动Visual Studio 2021。2新建工程名为“zj 的Win32控制台应用程序。3建立头文件“Myinfor.h,在其中定义图类myinfor。4建立源文件“myinfor。.cpp,在其中定义图类myinfor。的构造函数myinfor。、开支情况输出输出函数PutOutVex

11、Info。5建立源文件“myinfor Main.cpp,在其中输入开支情况及工程信息,通过主函数调用其它各函数,实现个人帐薄管理系统的设计。5.2 个人帐薄管理系统的实现图5-1 系统的初始状态 (1) 如果输入1,进行录入数据,并且录入某人从59月的开支情况。图5-2 开支情况信息录入1图5-3 5月份开支情况信息录入图5-4 6月份开支情况信息录入图5-5 7月份开支情况信息录入图5-6 8月份开支情况信息录入图5-7 9月份开支情况信息录入 (2)查看数据,输入2.图5-8 开支情况信息查询图5-9 开支情况信息修改图5-10 开支情况信息查询图5-11 5月份开支情况费用排序图5-1

12、2 7月份开支情况费用排序图5-13 开支情况记录删除图5-14 个人张博管理系统退出6 结束语该进程管理工具程序经过两周多时间的努力,终于编译调试成功,到达了设计要求,完成了设计目标。本课程设计主要运用数据结构知识和C+程序设计完成了一个个人帐薄管理系统的开发。该系统具的主要功能为:记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。其主要特点为:检索迅速、查找方便、可靠性高、实用性强。系统已经过调试运行,初步实现了设计目标。在这次数据结

13、构的课程设计中,曾遇到过一些问题,在老师和同学的帮助下,得到了解决。在此,我衷心感谢指导老师*老师和学校给予的良好环境的帮助可以让我们顺利完成这次课程设计。同时,也要感谢我的数据结构任课老师*老师,她以详细清晰的讲解带着我们完成了数据结构C+版的学习。另外,还要感谢各位同学对我的关心、帮助,为我提供了良好的设计环境以及各方面的支持。参考文献1 李春葆,曾慧,张植民. 数据结构程序设计题典. 北京:清华大学出版社,20022 李根强,谢月娥. 数据结构C+版实习指导. 北京:中国水利水电出版社,20023 朱建芳. 数据结构习题、实验. 北京:机械工业出版社,20064 王红梅,胡明,王涛. 数

14、据结构C+版. 北京:清华大学出版社,20055云磊博客937f附录1:个人帐薄管理系统设计源程序清单#include <stdio.h>#include <stdio.h>#include <memory.h>#include <windows.h>/文件保存路径#define FilePath1 "Myinfor.dat"#define FilePath2 "Myinfor.txt"/查询用声明#define Status int#define OK 1#define Error 0#define No

15、tFound 2typedef struct int month;/月份 int spxf;/食品消费 int fzfy;/房租费用 int znjy;/子女教育费用 int sdfy;/水电费用 int ylfy;/医疗费用 int cxfy;/储蓄费用 int srfy;/收入费用 Infor;typedef struct / 查询用自定义数据类型 int no; int data; pType;void menu(void); /菜单void input(Infor *newI); /接收键盘输入void writeinfor(Infor *newI);/向文件内写入内容void cha

16、ngeFormat(void );/将dat格式文件转换为txt文件Status search(Infor *a);/查询函数返回查询的结果及查询的状态void paixu(Infor *a);/对查询据结果排序void modify(Infor *a,int mon);/修改数据void delRecord(int mon);/删除数据void main() while(1) menu(); void menu(void) int item; int mon; Infor *a; a=(Infor *)malloc(sizeof(Infor); do printf("n个人帐簿管理

17、系统设计赵婧制作nn"); printf("tt1.录入数据。n"); printf("tt2.查看数据。n"); printf("tt3.修改数据。n"); printf("tt4.查询数据。n"); printf("tt5.排序数据。n"); printf("tt6.删除数据。n"); printf("tt0.退出系统。nn"); printf("请输入要进行的操作: " ); scanf("%d",&

18、amp;item); while(item>6 | item<-1); switch(item) /退出程序 case 0: getchar();/保存界面 getchar(); exit(0); break; /录入数据 case 1: input(a); writeinfor(a); break; /查看数据 case 2: changeFormat(); break; /修改数据 case 3: item=search(a); mon=a->month; if (item!=OK) printf("n没有符合条件的记录!n"); else print

19、f("n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入n"); printf("- n"); printf("%7d %8d %8d %8d %8d %8d %8d %8dn",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); input(a); modify(a,mon); break; /查询数据 case 4: item=search(a); if (item!=OK) print

20、f("n没有符合条件的记录!n"); else printf("n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入n"); printf("- n"); printf("%7d %8d %8d %8d %8d %8d %8d %8dn",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); break; /排序数据 case 5: item=search(a); if (i

21、tem!=OK) printf("n没有符合条件的记录!n"); else paixu(a); break; /删除数据 case 6: item=search(a); mon=a->month; if (item!=OK) printf("n没有符合条件的记录!n"); else printf("n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入n"); printf("- n"); printf("%7d %8d %8d %8d %8d %8d %8d %8dn",a-

22、>month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); delRecord(mon); break; free(a);/释放内存空间void input(Infor *newI) printf("n请依次输入数据说明:中间以空格符隔开:n(本月月份食品消费房租费用子女费用水电费用医疗费用储蓄费用收入费用)n"); scanf("%d%d%d%d%d%d%d%d",&newI->month,&newI->sp

23、xf,&newI->fzfy,&newI->znjy,&newI->sdfy,&newI->ylfy,&newI->cxfy,&newI->srfy); fflush(stdin);void writeinfor(Infor *newI) FILE *fp; fp=fopen(FilePath1,"ab+"); if(fp=NULL) printf("无法创立文件:%s",FilePath1); exit(0); fwrite(newI,sizeof(Infor),1,f

24、p);/这里可以做特别处理可防止存在同一月份有条以上的记录问题。这里就不写了。 fclose(fp); printf("数据录入成功!n");void changeFormat(void) /暂时只能操作一行文件有待改良 FILE *fp1,*fp2; Infor *a; a=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,"rb+"); if(fp1=NULL) printf("无法找到文件:%sn",FilePath1); return ; /返回主函数 fp2=fopen(F

25、ilePath2,"wt+"); if(fp2=NULL) printf("无法创立文件:%sn",FilePath2); return ; /返回主函数 fputs(" n个人帐簿管理系统nn",fp2); fputs("记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入n",fp2); fputs("- n",fp2); printf("n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入n"); printf("- n")

26、; rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(fp1)/从原文件.dat中读数据写入显示文件.txt中 printf("%7d %8d %8d %8d %8d %8d %8d %8dn",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); fprintf(fp2,"%7d %8d %8d %8d %8d %8d %8d %8dn",a->month,a-

27、>spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); fread(a,sizeof(Infor),1,fp1); fputs("- n",fp2); fputs("关闭本程序继续原程序!n",fp2); fclose(fp1); fclose(fp2); system(FilePath2); /调用翻开转换的文本文件 remove(FilePath2);/删除文本文件文件Status search(Infor *a) FILE *fp1; int mon;

28、 int isfound=0; printf("请正确输入要查询的月份:"); scanf("%d",&mon); fflush(stdin); /去除缓冲区 fp1=fopen(FilePath1,"rb+"); if(fp1=NULL) printf("无法找到文件:%sn",FilePath1); return Error; /返回主函数 rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(fp1)/查询操作 if(a->month=mo

29、n) isfound=1; break; else isfound=0; fread(a,sizeof(Infor),1,fp1); fclose(fp1); if(isfound) return OK; else return NotFound;void paixu(Infor *a) int i=0,j=0,flag=0,t; pType px8=0,0; char str810="记录月份","食品消费","房租费用","子女费用","水电费用","医疗费用",&quo

30、t;储蓄费用","本月收入" for(;i<8;i+) pxi.no=i; px0.data=a->month; px1.data=a->spxf; px2.data=a->fzfy; px3.data=a->znjy; px4.data=a->sdfy; px5.data=a->ylfy; px6.data=a->cxfy; px7.data=a->srfy; for(i=1;i<8;i+)/冒泡排序 flag=0; for(j=0;j<8-i;j+) if(pxj.data>pxj+1.data) t=pxj.data; pxj.data=pxj+1.data; pxj+1.data=t; t=pxj.no; pxj.no=pxj+1.no; pxj+1.no=t; flag=1; /输出结果 if(flag=0) break; printf("n"); for(i=0;i<8;i+) printf(" %s",strpxi.no); printf("n- n"); for(i=0;i<8;i+) printf("%8d &qu

温馨提示

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

评论

0/150

提交评论