C语言程序的设计个人财务管理系统方案
c语言课程设计个人财务
c语言课程设计个人财务一、教学目标本节课的教学目标是使学生掌握C语言编程的基本方法,能够运用C语言编写简单的个人财务管理系统。
具体目标如下:1.知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等,为编写个人财务管理系统打下基础。
2.技能目标:培养学生运用C语言进行编程的能力,使其能够独立完成个人财务管理系统的开发。
3.情感态度价值观目标:培养学生对计算机编程的兴趣,提高其主动学习和解决问题的能力,使其认识到计算机编程在实际生活中的应用价值。
二、教学内容本节课的教学内容主要包括以下几个部分:1.C语言基本语法和数据类型:介绍C语言的基本语法规则、数据类型及其运算。
2.控制结构:讲解条件语句和循环语句的用法,为编写个人财务管理系统提供逻辑支持。
3.函数:介绍函数的定义、声明和调用,使学生能够理解模块化编程的思想。
4.个人财务管理系统的设计与实现:引导学生运用所学知识,分析并设计个人财务管理系统,最后通过编程实现。
三、教学方法为了提高教学效果,本节课将采用以下几种教学方法:1.讲授法:讲解C语言的基本语法、数据类型、运算符和控制结构等知识。
2.案例分析法:通过分析实际案例,使学生了解个人财务管理系统的设计过程,提高其编程能力。
3.实验法:安排课堂实验,让学生动手编写代码,巩固所学知识。
4.讨论法:学生进行小组讨论,培养其合作精神和解决问题的能力。
四、教学资源为了支持教学内容的传授和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材,为学生提供理论知识的学习材料。
2.参考书:提供一些经典的C语言编程实例,帮助学生更好地理解编程技巧。
3.多媒体资料:制作课件、演示文稿等,以便于生动、形象地展示教学内容。
4.实验设备:提供计算机、编程环境等,让学生能够进行实际操作。
五、教学评估为了全面、客观地评估学生的学习成果,本节课将采用以下几种评估方式:1.平时表现:观察学生在课堂上的参与程度、提问回答等情况,了解其对C语言编程的掌握程度。
用c语言编写个人财务管理程序
用C语言编写个人财务管理程序青岛理工大学《C语言程序设计》题目个人财务管理程序一、内容个人财务管理程序主要实现对每次财务收支的管理,具有输入收支信息、按天查询信息、按月查询信息、按年查询信息、查询全部信息、删除全部收支信息、按天删除部分收支信息、退出等功能。
本系统操作十分简单用户只需按提示选择所需要执行的功能或输入相应信息即可。
在主功能区中有1、2、3、0四种选择。
选主功能区中的 1 是输入收支信息。
选择主功能区中的2 是进入查询收支信息功能区,在查询功能区有五个子功能选择1、2、3、4、0;选择1 是按天查询收支信息;选择2 是按月查询收支信息,选择3 是按年查询收支信息,选择4是查询全部收支信息,其中2、3、4查询方式还可以显示总收入、总支出和总余额;选择0 是退出查询功能区。
选择主功能区中的3是进入删除收支信息功能区,在删除功能区中有1、2、0三种子功能选择,选择1 是按日期删除某天的收支信息,选择2 是删除所有的收支信息;选择0是退出删除功能区。
选择主功能区的0是退出个人财务管理系统。
二、上机环境操作系统:Windows XP开发工具:VC6.0三、函数调用关系图四、各函数功能说明1、void main() 主函数2、void input() 输入收支信息函数3、void Output() 查询收支信息函数4、void Dateput() 按天查询收支信息函数5、void Monput() 按月查询收支信息函数6、void Yearput() 按年查询收支信息函数7、void Allput() 查询所有收支信息8、void Delete() 删除收支信息函数9、void Delpart() 按日期删除部分信息函数 10、void Delall() 删除所有信息函数五、算法描述或流程图算法描述:函数一:void input() /*输入收支信息函数*/ {FILE *ap;printf("\t输入收入:"); /*输入收入*/scanf("%g",&RMB.shou);printf("\t收入来源:"); /*输入收入来源*/scanf("%s",RMB.a);printf("\t输入支出:");scanf("%g",&RMB.zhi); /*输入支出*/printf("\t支出去向:");scanf("%s",RMB.b); /*输入支出去向*/RMB.yu=RMB.shou-RMB.zhi;printf("\t输入年月日:");scanf("%d",&RMB.year); /*输入年月日*/scanf("%d",&RMB.mon);scanf("%d",&RMB.day);if((ap=fopen("money.txt","ab"))==NULL) /*打开文件*/printf("不能建立文件money.txt\n");elsefwrite(&RMB,sizeof(struct money),1,ap); /*将收支信息记录在money.txt文件*/fclose(ap); /*关闭文件*/printf("************************************************************ **********\n");}函数二:void Output() /*查询收支信息函数*/ {int i;while(1){printf("\n 1 按天查询部分收支信息\n");printf(" 2 按月查询部分收支信息\n");printf(" 3 按年查询部分收支信息\n");printf(" 4 查询全部收支信息\n");printf(" 0 退出查询\n");printf(" 请选择查询方式:"); /*输入选择*/scanf("%d",&i);if(i==1){Dateput(); /*调用按日期查询收支信息函数*/}else if(i==2)Monput();else if(i==3)Yearput();else if(i==4){Allput(); /*调用查询全部收支信息函数*/}else if(i==0){printf("************************************************************ *****\n");break; /*退出查询收支信息函数*/}else{printf(" 输入错误!\n");printf("************************************************************ ******\n");break; /*用户输入错误时退出*/}}}函数三:void Dateput() /*按日期查询收支信息函数*/ {FILE *ap;int y,m,d,n=0;float zs=0,zz=0,s=0;printf("\t输入要查询的年月日:"); /*输入要查询的年、月、日*/scanf("%d%d%d",&y,&m,&d);if((ap=fopen("money.txt","r"))==NULL)printf("不能读取money.txt文件\n");while(1){if(fread(&RMB,sizeof(struct money),1,ap)>0) /*从文件读取信息*/{if(y==RMB.year&&m==RMB.mon&&d==RMB.day) /*查找用户查询的收支信息并将其输出*/{printf("\t收入:%g\n\t收入来源:%s\n",RMB.shou,RMB.a);printf("\t支出:%g\n\t支出去向:%s\n",RMB.zhi,RMB.b);printf("\t余额:%g\n\n",RMB.yu);zs+=RMB.shou; /*统计该天的总收入、总支出、总余额*/zz+=RMB.zhi;s+=RMB.yu;n++; /*统计该天的收支次数*/}}else break;}fclose(ap); /*关闭文件*/if(n==0) printf("\t无该日期的收支信息!\n");if(n>=2) /*若该天收支次数大于1则输出该天的总收入、总支出、总余额*/ {printf("\n\t该天有%d次收支信息\n",n);printf("\t该天总收入:%g\n",zs);printf("\t该天总支出:%g\n",zz);printf("\t该天总余额:%g\n",s);}printf("************************************************************ ***********\n");}函数四:void Monput() /*按月查询收支信息函数*/{FILE *ap;int y,m;float zs=0,zz=0,s=0;printf("输入要查询的年月:");scanf("%d%d",&y,&m);if((ap=fopen("money.txt","r"))==NULL)printf("不能打开money.txt文件!\n");while(fread(&RMB,sizeof(struct money),1,ap)>0){if(y==RMB.year&&m==RMB.mon) /*在文件中查找符合条件的信息并输出*/{printf("\t%d年%d月%d日\n",RMB.year,RMB.mon,RMB.day);printf("\t收入:%g\n\t收入来源:%s\n",RMB.shou,RMB.a);printf("\t支出:%g\n\t支出去向:%s\n",RMB.zhi,RMB.b);printf("\t余额:%g\n\n",RMB.yu);zs+=RMB.shou; /*统计查询月份的总收入、总支出、总余额*/zz+=RMB.zhi;s+=RMB.yu;}}fclose(ap);printf("\t%d年%d月总收入:%g\n",y,m,zs); /*输出所查询月份的总收入、总支出、总余额*/printf("\t%d年%d月总支出:%g\n",y,m,zz);printf("\t%d年%d月总余额:%g\n",y,m,s);printf("************************************************************ ******************");}函数五:void Yearput() /*按年查询收支信息函数*/{FILE *ap;int y;float zs=0,zz=0,s=0;printf("输入要查询的年份:");scanf("%d",&y);if((ap=fopen("money.txt","r"))==NULL)printf("不能打开money.txt文件!\n");while(fread(&RMB,sizeof(struct money),1,ap)>0){if(y==RMB.year) /*输出符合条件的信息*/{printf("\t%d年%d月%d日\n",RMB.year,RMB.mon,RMB.day);printf("\t收入:%g\n\t收入来源:%s\n",RMB.shou,RMB.a);printf("\t支出:%g\n\t支出去向:%s\n",RMB.zhi,RMB.b);printf("\t余额:%g\n\n",RMB.yu);zs+=RMB.shou; /*统计查询年份的总收入、总支出、总余额*/zz+=RMB.zhi;s+=RMB.yu;}}fclose(ap);printf("\t%d年总收入:%g\n",y,zs); /*输出年度总收入、总支出、总余额*/ printf("\t%d年总支出:%g\n",y,zz);printf("\t%d年总余额:%g\n",y,s);printf("******************************************************************************\n");}函数六:void Allput() /*查询全部收支信息函数*/{FILE *ap;float s=0,zs=0,zz=0;if((ap=fopen("money.txt","r"))==NULL)printf("不能读取money.txt文件\n");while(1){if(fread(&RMB,sizeof(struct money),1,ap)>0) /*在money.txt文件中读取信息*/{printf("\t日期:%d %d %d\n",RMB.year,RMB.mon,RMB.day); /*输出年、月、日*/printf("\t收入:%g\n\t收入来源:%s\n",RMB.shou,RMB.a); /*输出查询的收入、收入来源*/printf("\t支出:%g\n\t支出去向:%s\n",RMB.zhi,RMB.b); /*输出查询的支出、支出去向*/printf("\t余额:%g\n\n",RMB.yu); /*输出余额*/zs+=RMB.shou; /*统计总收入*/zz+=RMB.zhi; /*统计总支出*/s+=RMB.yu; /*统计总余额*/}else break;}printf("************************************************************ ***********\n");printf("\t总收入:%g\n\t总支出:%g\n\t总余额:%g\n",zs,zz,s); /*输出总收入、总支出、总余额*/printf("************************************************************ ***********\n");fclose(ap); /*关闭文件*/}函数七:void Delete() /*删除收支信息函数*/{int i;while(1){printf("\n 1 按日期部分删除\n");printf(" 2 全部删除\n");printf(" 0 退出删除\n");printf(" 请选择删除方式:");scanf("%d",&i); /*收受用户输入的删除方式*/if(i==1) /*按日期删除部分收支信息*/{Delpart(); /*调用按日期删除部分收支信息函数*/}else if(i==2) /*删除全部信息*/{Delall(); /*调用删除全部收支信息函数*/}else if(i==0) /*退出删除*/{printf("************************************************************ *****\n");break;}else /*用户输入的信息错误*/{printf(" 输入错误!\n");printf("************************************************************ ***\n");break;}}}函数八:void Delpart() /*按日期删除部分收支信息函数*/ {FILE *ap;List *head,*r,*s,*pb;int n=0,y,m,d;head=(List *)malloc(sizeof(List)); /*创建头节点*/head->next=NULL;r=head;if((ap=fopen("money.txt","r"))==NULL)printf("不能打开money.txt文件!\n");printf(" 输入要删除的年月日:");scanf("%d%d%d",&y,&m,&d);while(fread(&RMB,sizeof(struct money),1,ap)>0) /*在文件中读取信息查找要删除的信息*/{if(y==RMB.year&&m==RMB.mon&&d==RMB.day)n++;else{s=(List *)malloc(sizeof(List)); /*尾插入法创建链表并将不需要删除的信息存在数据域*/s->data=RMB;r->next=s;r=s;}}r->next=NULL; /*为节点的next置为NULL*/fclose(ap); /*关闭文件*/if(n) /*要删除的信息存在*/{ap=fopen("money.txt","wb"); /*重新打开文件并删除原全部记录*/pb=head->next;while(pb!=NULL){fwrite(&pb->data,sizeof(struct money),1,ap); /*将链表数据域中的数据读入文件得到删除后的新文件*/pb=pb->next;}fclose(ap); /*删除成功,关闭文件*/printf(" \n 成功删除%d年%d月%d日的收支信息!\n",y,m,d);printf("************************************************************ ****\n");}else /*要删除的信息部存在*/{printf(" \n 无%d年%d月%d日的收支信息!\n",y,m,d);printf("************************************************************ ****\n");}}函数九:void Delall() /*删除全部收支信息函数*/{FILE *ap;ap=fopen("money.txt","wb");fclose(ap);printf(" \n 成功删除全部收支信息!\n");printf("************************************************************ *\n");}函数函数十:void main(){int i;printf("**********************^_^欢迎进入个人财务管理程序^_^*************************\n");printf(" 1 输入收支信息\n");printf(" 2 查询收支信息\n");printf(" 3 删除收支信息\n");printf(" 0 退出\n");printf(" 请选择要执行的功能:");scanf("%d",&i);while(i!=0){if(i==1){input(); /*调用输入收支信息函数*/printf(" 1 输入收支信息\n");printf(" 2 查询收支信息\n");printf(" 3 删除收支信息\n");printf(" 0 退出\n");printf(" 请选择要执行的功能:");scanf("%d",&i);}else if(i==2){Output(); /*调用查询收支信息函数*/ printf(" 1 输入收支信息\n");printf(" 2 查询收支信息\n");printf(" 3 删除收支信息\n");printf(" 0 退出\n");printf(" 请选择要执行的功能:");scanf("%d",&i);}else if(i==3) /*调用删除收支信息函数*/ {Delete();printf(" 1 输入收支信息\n");printf(" 2 查询收支信息\n");printf(" 3 删除收支信息\n");printf(" 0 退出\n");printf(" 请选择要执行的功能:");scanf("%d",&i);}else /*用户输入错误时提示*/{printf("\n 只能输入1或2或3或0!\n");printf(" 请重新选择要执行的功能:");scanf("%d",&i);}}printf("========================^_^ 谢谢您的使用!^_^============================\n");}六、程序运行效果图七、总结通过做个人财务管理程序这课程设计,我意识到逻辑分析能力理清问题的思路以及函数间的相互调用关系很重要。
利用C语言完成的个人财务管理软件设计与实现
利用C语言完成的个人财务管理软件设计与实现一、引言在当今社会,个人财务管理变得越来越重要。
随着生活水平的提高和金融市场的多样化,人们需要更好地管理自己的财务状况,以确保财务安全和稳定。
为了更好地满足这一需求,设计并实现一款利用C 语言完成的个人财务管理软件显得尤为重要。
二、软件功能设计1. 用户登录用户可以通过输入用户名和密码登录软件,确保用户信息的安全性。
2. 记账功能用户可以记录每笔收入和支出,包括金额、时间、类别等信息,方便用户随时查看自己的财务情况。
3. 统计分析软件可以根据用户输入的数据进行统计分析,生成收支明细、月度报表、年度报表等,帮助用户更直观地了解自己的财务状况。
4. 预算管理用户可以设定每月的预算金额,并实时查看预算执行情况,帮助用户控制支出,避免超支。
5. 数据备份与恢复软件支持数据备份功能,用户可以随时备份自己的财务数据,并在需要时进行恢复,确保数据安全。
三、软件实现1. 界面设计利用C语言中的图形库或者控制台输出,设计简洁直观的界面,方便用户操作。
2. 数据存储使用文件系统或数据库存储用户输入的数据,确保数据持久化和安全性。
3. 功能实现根据软件功能设计,逐步实现用户登录、记账、统计分析、预算管理等功能模块,并确保功能之间的协调性和稳定性。
4. 测试与优化在软件开发过程中,进行充分测试,发现并修复可能存在的bug 和问题,并对软件进行优化,提升用户体验。
四、总结通过利用C语言完成个人财务管理软件的设计与实现,可以帮助用户更好地管理自己的财务状况,提升财务安全性和稳定性。
同时,这也是对C语言编程能力的一次锻炼和提升。
希望这款软件能够为广大用户带来便利和帮助。
c语言个人财务管理系统[1]
小我财务支出治理付欣 05盘算机四班指点先生:梁新元一.问题描写及剖析1二.试验程序设计思惟及功效描写13.重要函数模块的设计思惟和具体实现2三.试验程序测试41.程序开端履行时体系的所显示的页面:42.选择退出体系:53.选择登陆,并且输入的帐号和暗码都准确:54.用户输入的帐号不准确:55.用户输入的帐号准确,暗码不准确:6四.试验程序自我评价7五.课程设计创新7六.课程设计总结7七.参考书目:7八.试验程序源代码8一.问题描写及剖析编写一个小我财务支出治理体系,重要解决的问题是作为一个体系而言,它所要面临不只是某一小我而言,而是要面临很多的用户.那么想要解决这一问题,就必须请求这个体系可以或许存储很多用户的根本信息和记载.同时也请求体系可以或许对不合的用户的身份进行查找和验证.在验证经由过程之后,在对其进行用户所请求的操纵.作为一个财务支出体系,那么就请求对于用户关于金钱的每一项操纵都要有响应的记载,同时并许可用户对于每一条整体的记载进行操纵,例如可以依据时光来查找某一肯定日期是否进行了收入或者支出的操纵,也可以依据特定的须要来删除某一条整体的记载.但不许可对每笔记载的单项数据进行更改,因为不管是收入照样支出,所涉及的金额都是固定的,时光也是固定的,所以体系不许可用户对其进行操纵.除此之外,还必须有足够大的空间来存储新的记载.所以此程序就是基于这个思惟而编写出来的,根本知足了用户对于一个财务支出治理体系所请求的相干功效.二.试验程序设计思惟及功效描写依据前面临于编写一个小我财务支出治理体系的程序的问题描写和剖析,肯定了此程序的根本思惟和相干功效.1、根本思惟起首界说一个构造体数组,这个数组的功效等于用来所有效户的所有信息.它的成员为每个用户的帐号(account).暗码(code).姓名(name).记载(record rec[max]),以及记载的条数(rec_len).个中记载(record rec[max])这个成员本身也是一个构造体数组.它包含了用户所有的记载(record),并且依据用户的操纵,记载这个成员变量也会有所跟改,例如假如拥戴增长了一笔记载,那么这一笔记载就会存储在此成员变量中.除了这个成员变量是动态变更之外,记载的条数(rec_len)也会依据用户的操纵进行变更,例如假如用户增长了一笔记载,则rec_len就会自加1,假如用户删除了一笔记载,则rec_len就会自减1.记载(record rec[max])这个成员变量是今后函数中操纵的重要内容.除了这两个成员变量之外,其它的成员变量则不会被转变,体系只许可用户对其进行拜访,但不许可进行操纵,因为这几个成员变量的感化主如果用来验证用户的身份用的,所以不成以更改.个中的暗码(code)甚至只能别体系挪用,而不克不及对用户进行显示的,也就是说暗码(code)对于用户是不成预知的,如许做的目标是为了体系自身的安然性,以免用户的信息被其他人看到.这就是这个构造体数组的功效和根本成员变量及各个成员变量的功效.界说了构造体数组之后,起首要做的就是要把所有的记载都存入这个构造体数组中,以便利用户的操纵.所以在main函数中有体系自行挪用了old_record这个函数来存入信息.在此之落后行的操纵等于让用户选择所要进行的是登陆体系的操纵照样退出体系的操纵.假如选择登陆,则要输入帐号和暗码.之后由体系来检讨帐号的消失性和暗码的准确性.假如这两项都经由过程了体系的检讨,那么用户即可以进行具体记载的操纵了.这等于这个程序的根本设计思惟.2.各个函数模块的功效(1)old_record( ):此函数由体系自行挪用,感化是将所有效户信息存入体系.(2)void save( ): 此函数的感化是将构造体数组中的信息写入文件存储,由体系挪用.(3)load( ):此函数的感化是将构造体数组中写入文件的信息读出,由体系挪用.(4)lookup_accounts():此函数的感化是将用户输入的帐号与体系中的所有帐号进行比较,检讨体系中是否有此帐号.(5) check_code( ):此函数是感化是在体系查询到了帐号之后,对用户输入的帐号和暗码进行磨练,看是否相对应.(6)print_message():此函数的功效是在体系检讨了用户输入的帐号和暗码之后,假如用户经由过程了体系的检讨,在此显示用户可见的根本信息.(7)find_record():此函数的感化是依据用户输入的日期进行查找操纵.(8)insert_record():此函数的功效是在记载中增长一条新的记载,这个记载由用户输入.(9)del_record():此函数的功效是依据用户的输入的地位,将响应地位的记载删除.(10)sum_num():此函数的功效是盘算所有收入和支出的总和,盘算全体的收入的总合,盘算全体输出的总合.(11)打印输出记载的函数:在本程序中一共有三个打印输出记载的函数,分离为all_print().acc_print ().pay_print()这三个函数.它们的功效依次是打印输出全体记载,打印输出输入记载,打印输出支出记载.(12)mian( ):在主函数中,可以依据用户的选择来操纵体系许可用户运用的功效,也可以随时退出这个体系.3.重要函数模块的设计思惟和具体实现(1)void save( )函数和load( )函数.这两个函数的功效是在体系挪用了old_record( )这个函数之后,构造体内就有了所有效户的所有信息.Save( )函数的感化是将所有的信息都存入文件中,便于数据的保管和读取.Load ( )函数的感化则是把存入的文件中的信息读出来.这两个函数所涉及的常识点为文件的读入和写出.主如果freadhe和fwrite两个函数的运用.它们的一般挪用情势为:fread(buffer,size,count,fp);fwrite(buffer,size ,count,fp);个中:Buffer:是一个指针,对fread来说,它是读入数据的存放地址.对fwrite来说,是要输出数据的地址.Size:要读写的字节数.Count:要进行读写若干个size字节的数据项.Fp;文件型指针.挪用这两个函数之后,假如挪用成功,则函数返回值为count 的值,即输入或输出数据项的完全个数.(2)lookup_accounts()函数和 check_code( )函数:这两个函数的功效主如果用来查对用户的身份.体系先磨练的是axxounts这个函数.依据用户输入的帐号与体系中所有的帐号进行比较,查找看是否有雷同的.假如找到了,则进行对暗码进行磨练,看暗码与帐号是否对应.在磨练帐号的时刻,假如用户输入的帐号在体系中不消失,体系则会给出提醒请求用户从新输入.但假如用户输入了三次体统都找不到帐号的时刻,体系则会强迫请求用户退出体系,此时则显示停止语的迎接词.而假如帐号找到了,但用户输入的暗码与原有暗码不一致,体系也会给出提醒信息请求用户再次输入.同样的,假如用户输入三次体统都磨练到不是准确的暗码的时刻,体系则会强迫请求用户退出体系,此时则显示停止语的迎接词.在这两个函数中重要用到的常识点就是对字符串的相干操纵.假如帐号和暗码都经由过程磨练之后,此函数则将返回struct list_record类型的数据.字符串处理的函数重要有以下几个:puts函数:其一般情势为puts(字符数组).其感化是将一个字符串输出到终端.Gets函数:其一般情势为gets (字符数组).其感化是从终端输入一个字符串到字符数组,并且得到一个函数值.该函数值是字符数组的肇端地址.Stract函数:其一般情势为strcat(字符数组1,字符数组2).Strcat是字符串衔接的缩写.其感化是衔接两个字符数组中的字符串,把字符串2接到字符串1的后面,成果放在字符数组1 中,函数挪用后得到一个函数值——字符数组1的地址.Strcpy函数:其一般情势为strcpy(字符数组1,字符数组2).Strcpy是字符串复制的简写.它的感化是将字符串2复制到字符数组1中去.在本程序中.用到的最多的等于此函数.strcmp 函数:其一般情势为strcmp(字符串1,字符串2).Strcmp是字符串比较的缩写.它的感化是比较字符串1和字符串2,比较的成果有函数值带回.假如字符串1=字符串2,则函数值为0;假如字符串1大于字符串2,则函数值为一个正整数,不然则为负整数.(3)find_record()函数:此函数的功效是依据用户输入的时光查找当天的记载.这个函数的参数为一个指向构造体的指针和一个字符串.字符串是用语输入的日期,指向构造体的指针指向的则是用户输入的帐号的这个构造体.假如找到了用户输入的日期,则输出当天的所以记载.假如找不到,则显示无此日的记载.(4)insert_record()函数和del_record()函数:这两个函数的功效是增长新的记载和删除用户指定的记载.在insert_record( )函数中,此函数的参数是一个指向struct list_record的指针和一个指向struct record的指针还有一个选择拔出地位的整形变量.在主函数中,先界说一个struct record的构造体.这个构造体的内容是由用户输入的,也就是用户所要向struct list_record这个构造体中输入的新的记载的内容.然后再在主函数中界说一个指向struct record构造体的指针,并指向已经输入记载的构造体,最后将此指针作为实参传入函数.因为向函数中传如是指针,所以在函数中记载更改之后,返回主函数的是更改后的记载.在del_record()函数中,有效户在主函数中输入要删除的记载的地位,然后挪用此函数,那么就会履行删除该记载的操纵.与insert_record函数一样,参数传递的也是指针,所以在函数中更改的记载,返回主函数后依旧是更改后的记载.(5)sum_num()函数:此函数的功效是用来盘算用户所有记载中的钱数的总和,以便利用户对于体系的操纵,同时也可以运用户对本身的帐户有更深刻的懂得.除此之外,该函数还能会对用户所有的收入和所有的支出进行乞降,运用户可以或许知道本身的所有的收入的总和和所有支出的总和,如许也便利了用户进行下一步的操纵.(6)打印输出函数:在此程序中,打印输出函数共有三个,分离是输出全体记载,输出收入记载和输出支出记载.在这里界说三个输出函数是为了便利用户可以或许更轻易的进行操纵.假设只有一个输出全体记载的函数,那么假如用户只想检讨收入的记载或者支出的记载,此时用户只能本身一条一条的去检讨,如许就会让用户觉得不便利.一个优越的治理体系的目标就是能尽可能的知足用户的所有须要,分工越是准确越好,所认为了知足此项请求,在此界说了三个输出函数.(7)main( )函数:在一个程序中,main( )函数是最为重要的一个函数,因为它是所有程序履行的进口.同时函数也是以main( )函数的停止作为停止的,由此可见main()函数的重要性.在本程序中,所以的功效模块函数都是在main()函数中挪用的,如许做的目标是为了是全部程序的构造简略紧凑,同时也是为了程序的调试便利.但如许也就相对的增长了main()函数的庞杂性.在本程序中,main ()函数中涉及的语法常识包含轮回的嵌套运用,分之构造的嵌套运用,指针的运用,指向构造体指针的运用等很多语法构造.因为main()函数在本程序中有着至关重要的感化,所以在此具体解释.在程序开端履行之后,起首由用户来选择是要登陆体系照样要推出体系.假如是退出体系,那么程序便会停止.假如选择登陆,那么体系便会请求用户输入帐号和暗码.体系先会对帐号进行检讨,假如检讨经由过程了,则要对暗码进行检讨,假如经由过程了,则会显示用户信息,同时也许可用户对记载进行操纵,而所有的操纵都是由用户自行随便选择的,直到用户选择退出体系之后,程序便会停止.这是在用户输入的帐号和暗码都经由过程检讨的情形.假如帐号没有经由过程检讨,体系便会请求用户从新输入,然后体系再对其进行检讨,经由过程了就持续,通不过则还要从新输入,但用户输入帐号的次数最多只有三次.三次之后,体系变会自行推出.假如帐号经由过程了检讨,而暗码没有经由过程,那么体系也会请求用户从新输入,同样输入的次数不会超出三次,不然体系便会自行退出.这等于main()函数的具体设计思惟和具体的功效的描写.三.试验程序测试1.程序开端履行时体系的所显示的页面:2.选择退出体系:3.选择登陆,并且输入的帐号和暗码都准确:4.用户输入的帐号不准确:5.用户输入的帐号准确,暗码不准确:6.用户进行具体操纵:四.试验程序自我评价在这个程序中,我认为我已经完成了所请求的根本操纵,同时也增长了响应的功效模块来让用户操纵.设计的基起源基本则就是尽可能的知足用户的所有请求,同时也能尽可能便利的运用户对体系进行操纵.固然这个程序可能还出缺少之处,但我对于这个程序照样比较知足的.五.课程设计创新本程序重要模拟是是银行的ATM机的相干功效,除此之外,还增长了许可用户对于记载的一些操纵.而不是只许可用户进行检讨,如许就增长了体系的灵巧性.六.课程设计总结本程序在编写是,重要就是基于用户的角度去剖析该若何设计此程序,和编写功效模块的.在编写程序时,所有的数据都是对构造体进行的操纵,在此进程中,我发明了本身在对指针操纵的时刻,尤其是对指向构造体数组的指针和指向构造体的指针的操纵都不敷闇练.但在编写完此程序之后,我感到本身对语法的运用有了显著的进步.七.参考书目:1.C程序设计(第三版)谭浩强清华大学出版社2.数据构造(C说话版)谭浩强清华大学出版社3.程序设计基本(C说话版)龙昭华王玉柱重庆大学出版社八.试验程序源代码#include<stdio.h>#include<string.h>#define null 0#define max 20#define ok 1struct record{char date[20];char operate[20];int num;};struct list_record{char account[20];char code[20];char name[20];int rec_len;struct record rec[max];}r[max];//体系原稀有据,用户不成知int old_record( struct list_record r[]){int i;for(i=0;i<3;i++)r[i].rec_len=4;strcpy(r[0].account,"1001");//账号strcpy(r[1].account,"1002");strcpy(r[2].account,"1003");strcpy(r[0].code,"111111");//暗码strcpy(r[1].code,"222222");strcpy(r[2].code,"333333");strcpy(r[0].name ,"wang");//姓名strcpy(r[1].name ,"li");strcpy(r[2].name ,"zhang");strcpy(r[0].rec[0].date,"07-01-01");//日期strcpy(r[0].rec[2].date,"07-03-01"); strcpy(r[0].rec[3].date,"07-04-01"); strcpy(r[1].rec[0].date,"07-01-02"); strcpy(r[1].rec[1].date,"07-02-02"); strcpy(r[1].rec[2].date,"07-03-02"); strcpy(r[1].rec[3].date,"07-04-02"); strcpy(r[2].rec[0].date,"07-01-03"); strcpy(r[2].rec[1].date,"07-02-03"); strcpy(r[2].rec[2].date,"07-03-03"); strcpy(r[2].rec[3].date,"07-04-03"); strcpy(r[0].rec[0].operate,"in");strcpy(r[0].rec[1].operate,"out");strcpy(r[0].rec[2].operate,"in");strcpy(r[0].rec[3].operate,"out");strcpy(r[1].rec[0].operate,"out");strcpy(r[1].rec[1].operate,"in");strcpy(r[1].rec[2].operate,"out");strcpy(r[1].rec[3].operate,"in");strcpy(r[2].rec[0].operate,"in");strcpy(r[2].rec[1].operate,"out");strcpy(r[2].rec[2].operate,"in");r[0].rec[0].num=3000;r[0].rec[1].num=-1500;r[0].rec[2].num=2500;r[0].rec[3].num=-1000;r[1].rec[0].num=-3000;r[1].rec[1].num=5000;r[1].rec[2].num=-1000;r[1].rec[2].num=2000;r[2].rec[0].num=1000;r[2].rec[1].num=-1500;r[2].rec[2].num=3000;r[2].rec[2].num=-500;return ok;}//将数据写入文件void save( ){FILE *fp;int i;if((fp=fopen("wenjian","wb"))==null)//只许可写数据 {printf("can not open the file.\n");return;}for(i=0;i<max;i++)if(fwrite(&r[i],sizeof(struct list_record),1,fp)!=1) printf("file write error.\n");fclose(fp);}//文件读出void load( ){FILE *fp;int i;if((fp=fopen("wenjian","rb"))==null){printf("can not open infile.\n");return;}for(i=0;i<max;i++)if(fread(&r[i],sizeof(struct list_record),1,fp)!=1) {if(feof(fp))//文件停止为1;不然为0(fclose(fp));Return;//为什么在这加return}fclose(fp);}//将用户输入的帐号与体系华夏有帐号比较,查找用户帐号int lookup_accounts( struct list_record r[],char acc[]){int i;for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0){return ok;}printf("帐号不消失,请从新输入!\n");return null;}//检讨暗码函数struct list_record check_code(struct list_record r[],char acc[],char c[]){int i;struct list_record a;strcpy(a.account,"0");strcpy(a.code,"0");a.rec_len=0;for(i=0;i<a.rec_len;i++){strcpy(a.rec[i].date,"0");strcpy(a.rec[i].operate,"0");a.rec[i].num=0;}for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0)if(strcmp(r[i].code,c)==0)return r[i];printf("the code is wrong,please input again!\n"); return a;}//显示用户根本信息void print_message( struct list_record *p){printf("姓名:%s\n",p->name);printf("帐号:%s\n",(*p).account);}//依据用户输入的日期,查找记载int find_record( struct list_record *p,char d[]){int i;for(i=0;i<(*p).rec_len;i++){if(strcmp((*p).rec[i].date,d)==0){printf("date operate money\n");printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d \n",(*p).rec[i].num);return ok;}}if(i==(*p).rec_len)printf("the date is not exit!\n");return null;}//拔出函数,依据用户输入的信息,增长记载int insert_record( struct list_record *p,struct record *p1,int lop){int i;if((lop<1)||(lop>((*p).rec_len+1))){printf("the position is wrong.\n");return 0;}else{for(i=(*p).rec_len;i>lop-1;i--){strcpy((*p).rec[i].date,(*p).rec[i-1].date);strcpy((*p).rec[i].operate,(*p).rec[i-1].operate);(*p).rec[i].num=(*p).rec[i-1].num;}strcpy(p->rec[i].date,p1->date);strcpy((*p).rec[i].operate,(*p1).operate);(*p).rec[i].num=(*p1).num;(*p).rec_len++;return ok;}}// 删除记载函数int del_record( struct list_record *p,int lop2) {int i;if((lop2<1)||(lop2>(*p).rec_len)){printf("the position is wrong.\n");return null;}else{for(i=lop2-1;i<(*p).rec_len-1;i++){strcpy((*p).rec[i].date,(*p).rec[i+1].date);strcpy((*p).rec[i].operate,(*p).rec[i+1].operate);(*p).rec[i].num=(*p).rec[i+1].num;}(*p).rec_len--;return ok;}}//输出全体记载函数void all_print( struct list_record *p){ int i;printf("date operate num\n");for(i=0;i<(*p).rec_len;i++){ printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num);printf("\n");}}//盘算总的钱数int sum_num( struct list_record *p){int i;int sum=0;int sum_in=0;int sum_out=0;for(i=0;i<(*p).rec_len;i++){sum+=(*p).rec[i].num;if((*p).rec[i].num>0)sum_in+=(*p).rec[i].num;if((*p).rec[i].num<0)sum_out+=(*p).rec[i].num;}printf("总金额为: %d\n",sum);printf("总收入为: %d\n",sum_in);printf("总支出为: %d\n",sum_out);return ok;}//输出收入记载int acc_print( struct list_record *p){int i;int sum_acc=0;printf("date operate num\n");for(i=0;i<(*p).rec_len;i++)if((*p).rec[i].num>0){sum_acc+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num);printf("\n");}printf("总收入金额为: %d\n",sum_acc);return ok;if(sum_acc==0)printf("there is no account.\n");return null;}//输出支出记载int pay_print( struct list_record *p) {int i;int sum_pay=0;printf("date operate num\n"); for(i=0;i<p->rec_len;i++)if((*p).rec[i].num<0){sum_pay+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date); printf("%s ",(*p).rec[i].operate); printf("%d ",(*p).rec[i].num);printf("\n");}printf("总的支出为: %d\n",sum_pay); return ok;if(sum_pay==0)printf("there is no payout.\n");return null;}void main( ){int j=0,n=0;//n记载暗码输入次数int x,k,lop1,lop2;//k为敕令数字选项char data1[20];char accou[20],cod[20];//accou账号cod暗码struct record *p0;//内容是由用户输入的struct record a;struct list_record b;struct list_record *p;b.rec_len=0;p0=&a;old_record(r);save( );load( );//显示printf(" 迎接运用小我财务支出治理体系!\n");printf("------------------------------------------------------------\n");printf("| |\n");printf("| 1.登陆体系|\n");printf("| 随便率性键.退出体系|\n");printf("| |\n");printf("------------------------------------------------------------\n");scanf("%d",&x);if(x!=1)printf(" 感激您运用本体系,再会!\n");else{do{printf("请输入帐号:"); //while(j<3);scanf("%s",accou);if(lookup_accounts(r,accou))//将用户输入的帐号accou与体系中的所有帐号r进行比较,检讨体系中是否有此帐号.{ printf("请输入暗码:"); //while(j<3);scanf("%s",cod);b=check_code(r,accou,cod);//在体系查询到了帐号之后,对用户输入的帐号和暗码进行磨练,看是否相对应.if(b.rec_len==0)//rec_len记载的条数{do{b=check_code(r,accou,cod); //scanf("%s",cod);n++;}while(n<3);if(n=3)printf("您的暗码不准确,请退出体系,感谢运用,再会!\n");break;}else{printf("---------------请选择您要进行的操纵-------------------\n");printf("| |\n"); //while(j<3);printf("| 2.查找记载|\n");printf("| 3.增长记载|\n");printf("| 4.删除记载|\n");printf("| 5.输出所有记载|\n");printf("| 6.输出所有收入记载|\n");printf("| 7.输出所有支出记载|\n");printf("| |\n");printf("-----------------------------------------------------|\n");p=&b;print_message(p);//在体系检讨了用户输入的帐号和暗码之后,假如用户经由过程了体系的检讨,在此显示用户可见的根本信息.do{scanf("%d",&k); //while(k>0)if(k==10)printf("感激您运用本体系,再会!\n");if(k==2){printf("请输入您要查询的日期:");scanf("%s",data1);find_record(p,data1);}if(k==3){printf("请输入你要拔出的地位:\n");scanf("%d",&lop1);printf("请输入您要添加的记载:\n");printf("日期:");scanf("%s",p0->date);printf("操纵:");scanf("%s",p0->operate);printf("金额:");scanf("%d",&(p0->num));insert_record(p,p0,lop1);//增长新的记载 }if(k==4)printf("请输入您要删除的记载的地位:\n");scanf("%d",&lop2);del_record(p,lop2);}if(k==5){all_print(p);sum_num(p);}if(k==6)acc_print(p);//输出所有收入记载if(k==7)pay_print(p);//输出所有支出记载}while(k>0);break;}}j++;}while(j<3);printf("感激您运用本体系,再会!\n");}。
c语言个人账簿管理系统代码
个人帐簿管理系统设计五、程序运行结果1、原文件内容#include <stdio.h>#include <stdlib.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 NotFound 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 changeFormat(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******个人帐簿管理系统设计*****\n\n");printf("1.录入数据\n");printf("2.查看数据\n");printf("3.修改数据\n");printf("4.查询数据\n");printf("5.排序数据\n");printf("6.删除数据\n");printf("0.退出系统\n\n");printf("请输入要进行的操作: " );scanf("%d",&item);}while(item>6 || item<-1);switch(item){ //退出程序case 0: getchar();getchar();exit(1);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{printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");printf("----------------------------------------------------------------------- \n");printf("%7d %8d %8d %8d %8d %8d %8d %8d\n",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) printf("\n没有符合条件的记录!\n");else{printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");printf("----------------------------------------------------------------------- \n");printf("%7d %8d %8d %8d %8d %8d %8d %8d\n",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy, a->cxfy,a->srfy);}break;//排序数据case 5: item=search(a);if (item!=OK) printf("\n没有符合条件的记录!\n");elsepaixu(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 %8d\n",a->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->spxf,&newI->fzfy,&newI->znjy,&newI->s dfy,&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,fp);//这里可以做特别处理可防止存在同一月份有2条以上的记录问题。
个人财务管理程序设计
目录摘要 (2)绪论 (2)1. 系统分析 (2)1.1数据需求 (2)1.2功能需求 (3)1.3性能需求 (3)2. 总体设计 (3)2.1功能模块设计 (3)2.2系统设计方案 (4)3. 详细设计和实现 (5)3.1创建信息模块 (5)3.2修改信息模块 (6)3.3插入信息模块 (7)3.4删除信息模块 (8)3.5显示当前余额模块 (10)3.6按月查询收支总额模块 (11)3.7按一定范围查询收支情况模块 (12)3.8显示当前情况模块 (13)3.9保存文件模块 (14)3.1调试过程 (15)3.2测试过程 (15)4. 结论 (15)结束语 (16)参考文献 (16)附录1-用户手册 (17)附录2-源程序 (25)摘要个人财务管理程序:能够帮助个人方便的管理自己的财务。
系统使用C语言进行编写个人财务管理程序,能够对程序进行添加,插入,删除,修改,按月查询,按范围查询,余额查询,结束程序,保存到文本文件里等等。
本文分别从分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现调试过程,最后对系统的编译情况进行了总结,程序在构造若干模块,因此易修改,完善的具体,这个程序可以对个人财务信息进行多种常用的处理,添加,查询,修改,插入,查询等等都是非常方便快捷的。
关键词:添加;删除;修改;个人财物管理;C语言绪论本程序将个人的财务信息以序号、月份、日期、年份、收支信息,说明等方式储存的,视觉明了,并且便于系统操作,系统对信息可以逐条的进行创建、添加、删除、修改、还可以进行按月,一定范围的查找,以及保存文件到文本文档。
整个程序操作方便,流程清晰。
本程序用C语言来开发个人财务管理系统的。
根据课程设计任务书要求,本程序开发主要完成以下功能和性能。
①创建财务信息。
②删除财务信息,同时显示账户余额。
③添加财务信息,同时显示账户余额。
④修改财务信息,同时显示账户余额。
⑤按月份查询收支信息。
C语言个人财务小管家课程设计
个人小管家应用系统给家庭提供了一个管理个人财务的平台,主要用于对家庭成员收入、支出进行添加、查询、删除、修改以及打印的操作,使得家庭财务收支状况一目了然。
主要功能包括:(1)主菜单。
主要包括收入管理、支出管理和退出;(2)添加收入记录;(3)查询收入记录;(4)删除收入记录;(5)修改收入记录;(6)打印收入记录;(7)添加支出记录;(8)查询支出记录;(9)删除支出记录;(10)修改支出记录;(11)打印支出记录;(12)退出系统。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<math.h>#define SIZE 100typedef struct{long no; /*每一组输入的编号*/long Number; /*家庭成员编号*/char Name[20]; /*家庭成员姓名*/float in; /*家庭成员收入*/char intime[10]; /*收入时间*/float out; /*家庭成员支出*/char outtime[10]; /*支出时间*/float sum; /*总计*/}money;//--------------------------------------------------------------void dayinshou(){ FILE *fp;money Tm;char Da[40],next;printf("请输入你要查询的文件名\n");gets(Da);fp=fopen(Da,"rb"); /*只读方式打开二进制文件*/if (fp==NULL){printf("\n打开文件%s失败!按任意键结束!\n",Da);exit(0);}printf("文件全部内容如下:\n\n");while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*读取文件内容,并判断是否成功*/ { printf("###############################################\n");printf("\n成员编号:%ld\n",Tm.Number);printf("成员姓名:%s\n",);printf("成员收入:%f元\n",Tm.in);printf("收入时间:%s\n",Tm.intime);printf("###############################################\n");printf("\n\n");}fclose(fp);next=getche();}//--------------------------------------------------------------------------void dayinzhi(){ FILE *fp;money Tm;char Da[40],next;printf("请输入你要查询的文件名\n");gets(Da);fp=fopen(Da,"rb"); /*只读方式打开二进制文件*/if (fp==NULL){printf("\n打开文件%s失败!按任意键结束!\n",Da);exit(0);}printf("文件全部内容如下:\n\n");while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*读取文件内容,并判断是否成功*/ { printf("###############################################\n");printf("\n成员编号:%ld\n",Tm.Number);printf("成员姓名:%s\n",);printf("成员支出:%f元\n",Tm.out);printf("支出时间:%s\n",Tm.outtime);printf("###############################################\n");printf("\n\n");}fclose(fp);next=getche();}//-------------------------------------------------------------------------------void chaxunzhi() /*按编号查询家庭成员财务支信息记录*/{int result;/* "result=1"说明查询成功,反之查找失败*/money Tm; /*定义进行操作时的临时结构体变量*/long bianhao,before=0;char Da[40],next;/*Da存储家庭成员财务信息的文件名,next为是否进行下一次操作的选项*/FILE *fp=NULL;/*提示用户输入要查询的文件名*/printf("\n 请输入存储数据的文件名,按回车键结束。
c++个人财务管理系统(五篇模版)
c++个人财务管理系统(五篇模版)第一篇:c++个人财务管理系统个人财务管理系统//mynumber.h #include #include #include #include #include using namespace std;struct record {string time;string operate;int money;};struct code {string password;stringacnumber;string person1;string person2;};const record mark={“notimen”,“non”,0};class account {public: struct record A;struct code B;intcheckacnumber();intcheckpassword();voidoldrecord(const char *filetxt);void inquire(const char *filetxt);void del(const char *filetxt);void increase(const char *filetxt);voidCreateTxt(const char *filetxt);voidprintall(const char *filetxt);voidprintincome(const char *filetxt);voidprintpay(const char *filetxt);voidModifynumber();voidCreateDat();void Initial(const char *filetxt);intendmark(record A);intfindback();voidrecyclebin(const char *filetxt);};//main.cpp #include“mynumber.h” const char *file=“E:RecordFile.txt”;int main(){cout<<“欢迎使用个人财务管理系统n”;cout<<“-----------n”;cout<<“||n”;cout<<“|1.登陆|n”;cout<<“|2.注册|n”;cout<<“|cout<<”-----------n“;intn,k,t;cin>>n;accountX;if(n==2){X.CreateDat();n=1;} if(n==1){k=X.checkacnumber();if(k==0)exit(0);else{t=X.checkpassword();if(t==0)exit(0);else while(1){cout<<”-----------请选择您要进行的操作-----------n“;cout<<”|cout<<“|0.退出系统cout<<”|1.查找记录cout<<“|2.增加记录cout<<”|3.删除记录cout<<“|4.输出所有记录cout<<”|5.输出所有收入记录cout<<“|6.输出所有支出记录cout<<”|7.修改密码cout<<“|8.初始化记录cout<<”|9.回收站char choice;cin>>choice;switch(choice){case'0':cout<<“感谢您使用本系统!n”;exit(0);case'1':X.inquire(file);break;case'2':X.increase(file);b reak;case'3':X.del(file);break;case'4':X.printall(file);break;case'5':X. printincome(file);break;|n“;|n”;|n“;|n”;|n“;|n”;|n“;|n”;|n“;|n”;|n“;|n”;case'6':X.printp ay(file);break;case'7':X.Modifynumber();break;case'8':X.Initial(file);break;case'9':X.recyclebin(file);break;} cout<//check-acnumber.cpp #include“mynumber.h” int account::checkacnumber(){stringa;intj=3;ifstreamfdat(“E:accountFile.dat”,ios::in);cout<<“请输入您的账号: ”;while(j--){cin>>a;fdat.seekg(0,ios::beg);fdat.read((char*)&B,sizeof(code)) ;if(a==B.acnumber){fdat.close();return 1;} else cout<<“此账号不存在,请重新输入!n”;} cout<<“n您的账号已输错三次!请退出系统!n”;fdat.close();return 0;}//check-passwo rd.cpp #include“mynumber.h” int account::checkpassword(){ifstreamfdat(“E:accountFile.dat”,ios:: in);strings;int j=3,x;cout<<“请输入密码:”;while(j--){cin>>s;fdat.seekg(0,ios::beg);fdat.read((char*)&B,sizeof(code)) ;if(s==B.password){fdat.close();return 1;} else co ut<<“密码错误,请重新输入!n”;} cout<<“n您输入的密码已错误三次,请问想找回密码吗?(Y/N)n”;char answer;cin>>answer;if(answer=='Y'||answer=='y'){x=account::fi ndback();if(x==1)return 1;else return 0;} else {cout<<“感谢您使用本系统,再见!n”;return 0;} }//CreateDat.cpp #include“mynumber.h” void account::CreateDat(){codeB;stringa,b;account::oldrecord(“E:Rec ordFile.txt”);fstreamtemp(“E:lalala.txt”,ios::out|ios::binary);fstreamrub(“E:RecycleBin.txt”,ios::out|ios::binary);temp.seekp(0,ios::be g);temp.write((char*)&mark,sizeof(record));rub.seekp(0,ios::beg); rub.write((char*)&mark,sizeof(record));while(1){cout<<“请输入您要注册的账号:”;cin>>B.acnumber;cout<>B.password;cout<>b;cout<>a;co ut<{cout<<“为了便于验证身份,请您填写以下信息作为验证方式n”;cout<<“自己身高多少:”;cin>>B.person1;cout<<“自己颜值多高:”;cin>>B.person2;cout<<“(自己身高多少:”<”<<“(自己颜值多高:”<{s tringE;int n=0;char answer;cout<<“请输入您要删除的日期:”;cin>>E;fdat.seekg(0,ios::beg);do {fdat.read((char*)&A,sizeof(record));if(E==A.time){n++;cout<<“(”<{ cout<<“没有该日期的记录!n”<<“您还要继续删除记录吗?(Y/N)n”;cin>>answer;if(answer=='Y'||answer=='y'){cout<>a nswer;if(answer=='Y'||answer=='y'){ fdat.seekg(0,ios::beg);ftxt.se ekp(0,ios::beg);rub.seekg(0,ios::beg);do{rub.read((char*)&A,sizeof(record));}while(!endmark(A));rub.seekp(-long(sizeof(record)),ios::cur);do{fdat.read((char*)&A,sizeof(record));if(A.time!=E&&!endmark(A)){ftxt.write((char*)&A,sizeof(reco rd));}if(A.time==E&&!endmark(A)){rub.write((char*)&A,sizeof(rec ord));}}while(!endmark(A));ftxt.write((char*)&mark,sizeof(record));r ub.write((char*)&mark,sizeof(record));fdat.seekp(0,ios::beg);ftxt.s eekg(0,ios::beg);do{ftxt.read((char*)&A,sizeof(record));if(!endmark(A))fdat.write((char*)&A,sizeof(record));}while(!endmark(A));fdat.write((char*)&mark,sizeof(record));cout<<“成功删除记录!n”;cout<<“您是否还要继续删除日期记录?(Y/N)n”;cin>>answer;if(answer=='Y'||answer=='y'){cout<//findback.cpp #include“mynumber.h” int account::findback(){fstreamfdat(“E:accountFile.dat”,ios::in|ios:: out|ios::binary);fdat.seekg(0,ios::beg);fdat.read((char*)&B,sizeof( code));stringa,b,c,d;cout<<“自己身高多少:”;cin>>a;if(a!=B.person1){cout<<“n验证错误!请退出系统!n”;return 0;} else {cout<<“自己颜值多高:”;cin>>b;if(b!=B.person2){cout<<“n验证错误!请退出系统!n”;return 0;} else {cout<<“n验证成功!请修改您的密码!n”;account::Modifynumber();fdat.close();return 1;} } } //increase.cpp #include“mynumber.h” void account::increase(const char* filetxt){fstreamfdat(filetxt,ios::in|ios::out|ios::binary);while(1){record D;cout<<“请输入您要添加的日期:”;cin>>D.time;cout<<“请输入所添加日期的操作:”;cin>>D.operate;cout<<“请输入所添加日期的支出或收入:”;cin>>D.money;cout.setf(ios::showpos);cout<<“(”<cout<<“n是否确定将该日期记录进行保存?(Y/N)n”;char answer;cin>>answer;if(answer=='Y'||answer=='y'){fdat.seekg(0,i os::beg);do{fdat.read((char*)&A,sizeof(record));}while(!endmark(A));fdat.seekp(-long(sizeof(record)),ios::cur);fdat.write((char*)&D,sizeof(record));fdat.write((char*)&mark,sizeof(record));cout<<“n您是否还要继续添加日期记录?(Y/N)n”;cin>>answer;if(answer=='Y'||answer=='y'){cout<else {cout<<“记录保存成功!n”;fdat.close();break;} }else {cout<<“取消操作!n”;cout<<“您还要进行日期记录添加的操作吗?(Y/N)n”;cin>>answer;if(answer=='Y'||answer=='y')continue; else {fdat.close();break;} } } }//Initial.cpp #include“mynumber.h” externconst record mark;void account::Initial(const char *filetxt){fstreamfdat(filetxt,ios::out|ios::binary);cout<<“若账目文件存在,将删除所有数据,要进行文件初始化吗?(Y/N)n”;char answer;cin>>answer;if(answer=='Y'||answer=='y'){fdat.seekp(0,i o s::beg);fdat.write((char*)&mark,sizeof(record));cout<<“文件已经初始化。
C语言财务管理系统(源代码)
#include"stdio.h"#include"stdlib.h"#define MAX_NAME 11#define MAX_DETAIL 21#define MENU_COUNT 9#define DATA_FILE "fa.dat" typedef wnum_fi_type{income=1,payout=-1}fi_type;typedef struct_fi_info{int year;int month;fi_type type;char name[MAX_NAME];float money;char detail[MAX_DETAIL];}fi_info;typedef struct_fi_data{fi_info info;struct_fi_data *next;}fi_data;void add_income();void search_income();void delete_income();void update_income();void add_payout();void search_payout();void delete_payout();void update_payout();void count_total();void quit();void search_data(fi_type type); void delete_data(fi_type type); void update_data(fi_type type); void initialize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p);void input_info(fi_info *info);void show_info(fi_data *p[],int count);fi_data *head;char menu[]="===============================================\n" "| 家庭财务管理系统|\n" "+---------------------------------------------+\n""| 收入管理|\n" "| 1 添加收入|\n" "| 2 查询收入明细|\n" "| 3 删除收入|\n" "| 4 修改收入|\n" "| 支出管理|\n" "| 5 添加支出|\n" "| 6 查询支出明细|\n" "| 7 删除支出|\n" "| 8 修改支出|\n" "| 统计|\n" "| 9 统计总收入总支出|\n" "----------------------------------------------+\n""| 0 退出系统|\n" "==============================================+\n"; void(*menu_fun[])()={quit,add_income,search_income,delete_income,update_income,add_payout,search_payout,delete_payout,update_payout,count_total};int main(){int selected=0;initialize();while(selected>=0 && selected<=MENU_COUNT){system("cls");printf(menu);printf(">请选择要进行的操作(%d - %d):",0,MENU_COUNT);if(scanf("%d",&selected)!=1||selected<0||selected>MENU_COUNT){printf(">输入错误!请选择[ %d - %d]之间的数字!按任意键重试...",0,MENU_COUNT); fflush(stdin);getchar();}else{menu_fun[selected]();}selected=0;}}void add_income(){fi_data *p=(fi_data *)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));p->next=NULL;input_info(&(p->info));p->info.type=income;if(head==NULL){head=p;}else{get_last(head)->next=p;}}void search_income(){search_data(income);}void delete_income(){delete_data(income);}void update_income(){update_data(income);}void add_payout(){fi_data *p=(fi_data*)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));input_info(&(p->info));p->info.type=payout;if(head==NULL){head=p;}else{get_last(head)->next=p;}}void search_payout(){search_data(payout);}void delete_payout(){delete_data(payout);}void update_payout(){update_data(payout);}void count_total(){float total_income=0.0;float total_payout=0.0;fi_data *p=head;while(p!=NULL){if(p->info.type==income){total_income+=p->info.money;}else{total_payout+=p->info.money;}p=p->next;}printf("+---------+---------+---------+\n");printf("| 合计收入| 合计支出| 结余|\n"); printf("+---------+---------+---------+\n");printf("|%12.2f|%12.2f|%12.2f|\n", total_income, total_payout,total_income - total_payout);printf("+---------+---------+---------+\n");printf(">按任意键继续返回主菜单...");fflush(stdin);getchar();}void search_data(fi_type type){int year=0;int month=0;fi_data *p=NULL;fi_data *result[9]={NULL};int count=0;char input=' ';while(1){printf(">请输入要查询的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2){p rintf(">输入错误。
C++课程设计报告 个人财务管理系统
C++语言程序设计课程设计报告题目:个人财政管理年级:2014级专业:信息与计算科学学号:姓名:指导教师:目录一、需求分析 (2)二、概要设计 (2)三、详细设计 (3)3.1系统主界面设计 (4)3.2 收支模块设计 (5)3.3 统计管理模块设计 (5)四、调试分析 (6)4.1运行结果 (7)4.2调试结果 (8)4.3程序不足之处 (8)4.4改进之处 (8)五、小结 (8)附录 (9)【摘要】个人理财管理系统是一款管理个人财物的应用软件。
该软件代替了手工记账的麻烦,可以方便的实现个人收支状况的浏览、添加、删除、修改、查询等功能,适合个人管理自己的日常收入收支情况。
该系统运用了C++语言程序设计知识中的面向对象的思想,在VC++6.0集成开发环境下完成程序的编写。
【关键词】个人理财;管理信息系统;面向对象;VC++6.01.需求分析:1)程序中的收支情况按时间顺序存放,将其放入一个文件中,每次运行程序时首先打开这个文件,程序运行完毕时将更新的记录放回文件中。
2)可以按时间的范围检查账目,记在主菜单中增加检索的功能选项,输入时间范围即可打印出详细报表。
3)可以修改、删除某笔收入或支出。
4)当输入时间发生错误(如月份超过12等),要求重新输入正确的时间;当结余的数目为负数时,打印出信息,警告已经超支。
5)显示时,要求每笔收入和支出都要重新统计当前情况下的盈余数目。
2.概要设计:系统的功能模块划分:整个系统分为收支管理,报表统计管理,系统管理等模块,收支管理模块分为添加收支,修改收支,删除收支,统计管理模块分为收支管理,收支明细,系统管理分为,帮助,退出系统。
3.详细设计:3.1系统主界面设计主界面左侧有7个选项,分别为收入模式,支出模式,查看账目,制定目标,记录置零,退出系统,帮助,下侧为“请输入你的选择:”。
相应代码:Manager main() //主函数{Manager mm; //创建对象char select;cprintf("======个人财政支出管理====== ");//显示标题# ifdef MINcout<<"\n\n\n##########################调试模式#########################"<<endl;#endifcout<<"\n\n\t<1> 收入模式"<<endl; //选择<1>进入收入模式cout<<"\n\t<2> 支出模式"<<endl; //选择<2>进入支出模式cout<<"\n\t<3> 查看帐目"<<endl; //选择<3>进入查看帐目模式cout<<"\n\t<4> 制定目标"<<endl; //选择<4>进入制定目标模式cout<<"\n\t<5> 记录置零"<<endl; //选择<5>记录置零cout<<"\n\t<6> 退出系统"<<endl; //选择<6>退出cout<<"\n\t<0> 帮助"<<endl;cout<<"\n\n\t请输入你的选择: ";cin>>select;if(select == '1'){mm.Deposit();}else{if(select == '2'){mm.Withdraw();}else{if(select == '3'){mm.ViewTotal();}else{if(select == '4'){mm.SetGoal();}else{if(select == '5'){mm.SetZero();}else{if(select == '0'){cout<<"\n\n\n\n程序功能简介:个人财政支出管理程序,完成收入,支出,盈余的记录和管理。
c语言课程设计财务管理
c语言课程设计财务管理一、教学目标本节课的教学目标是让学生掌握C语言在财务管理领域的应用,包括数据结构、算法和程序设计等方面的知识。
在知识目标方面,学生需要了解C语言的基本语法、数据类型、运算符、控制结构等;掌握数组、字符串、结构体等数据结构的使用;熟悉函数、指针的概念和应用。
在技能目标方面,学生需要能够运用C语言编写简单的财务管理程序,解决实际问题;具备良好的编程习惯和调试能力。
在情感态度价值观目标方面,学生需要培养对计算机科学的兴趣和热情,提高自主学习和解决问题的能力。
二、教学内容本节课的教学内容主要包括C语言的基本语法、数据结构、算法和程序设计等方面的知识。
首先,介绍C语言的基本语法,包括数据类型、运算符、控制结构等;其次,讲解数组、字符串、结构体等数据结构的使用方法;然后,介绍函数和指针的概念及应用;最后,通过实例分析,让学生掌握C语言在财务管理领域的实际应用。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法。
首先,采用讲授法,为学生讲解C语言的基本语法、数据结构、算法等知识;其次,运用讨论法,让学生在小组内交流学习心得,解决问题;然后,采用案例分析法,分析C语言在财务管理领域的实际应用;最后,运用实验法,让学生动手编写财务管理程序,巩固所学知识。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:教材《C语言程序设计》、参考书《C语言编程实践》、多媒体资料(包括PPT、视频教程等)、实验设备(计算机、编程环境等)。
这些教学资源将帮助学生更好地掌握C语言在财务管理领域的应用,提高他们的编程能力和解决问题的能力。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估主要包括以下几个方面:1.平时表现:通过观察学生在课堂上的参与度、提问回答、小组讨论等表现,评估他们的学习态度和积极性。
2.作业:布置与课程内容相关的编程作业,评估学生对C语言语法、数据结构、算法等知识的掌握程度。
C语言程序设计个人财务管理系统
程序设计工程训练报告C语言程序设计个人财务管理系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制页脚内容1目录1.需求分析 (1)2系统总框图和功能模块说明 (2)2.1系统总框图 (2) (2)2.2功能模块说明 (2)3系统设计 (3)3.1主要结构体 (3)3.2主要功能函数 (3)4系统调试 (4)页脚内容24.1、程序开始执行时系统的所显示的页面: (4)4.2、选择退出系统: (4)4.3、选择登陆,并且输入的帐号和密码都正确: (5)4.4、用户输入的帐号不正确: (5)4.6、用户进行具体操作: (6)5总结 (7)6源程序清单 (7)页脚内容31.需求分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。
那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。
同时也要求系统能够对不同的用户的身份进行查找和验证。
在验证通过之后,在对其进行用户所要求的操作。
作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。
但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。
除此之外,还必须有足够大的空间来存储新的记录。
所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。
页脚内容12系统总框图和功能模块说明2.1系统总框图2.2功能模块说明(1)old_record( ):此函数由系统自行调用,作用是将所有用户信息存入系统。
(2)void save( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。
C语言-个人收入支出系统
#include"stdio.h"#include"windows.h"#include"stdlib.h"#include"conio.h"#include"iostream.h"#define pe "%2d%8d%6d%9d%10d%11d%8d%7d%8d\n" struct Checkbook{int mon;int income;int food;int house;int education;int wat_ele;int treat;int save;int out;Checkbook *next;};int count=0;int flag=0;Checkbook *Head,*Total;void init_Head(){Head=new Checkbook;Head=NULL;}void init_Total(){Total=new Checkbook;Total->income=0;Total->food=0;Total->house=0;Total->education=0;Total->wat_ele=0;Total->treat=0;Total->save=0;Total->out=0;}void TOTAL(Checkbook *h){Checkbook *p=h;while(p!=NULL){p->out=p->food+p->house+p->education+p->wat_ele+p->treat;Total->income=Total->income+p->income;Total->food=Total->food+p->food;Total->house=Total->house+p->house;Total->education=Total->education+p->education;Total->wat_ele=Total->wat_ele+p->wat_ele;Total->treat=Total->treat+p->treat;Total->save=Total->save+p->save;Total->out=Total->out+p->out;p=p->next;}}int insert(){Checkbook *p,*q;int i; int ch;while(1){system("cls");for(i=0;i<15;i++)printf(" *");printf("记录每月收支情况");for(i=0;i<15;i++)printf(" *");p=new Checkbook;printf("\n\n请输入:\n\n");printf("月份收入食品消费房租子女教育费用水电费医疗费储蓄\n");cin>>p->mon>>p->income>>p->food>>p->house>>p->education>>p->wat_ele>>p->treat>>p->s ave;count++;if(flag==0){if(count==1)Head=p;elseq->next=p;q=p;}if(flag==1){q=Head;while(q->next!=NULL)q=q->next;q->next=p;q=p;}q->next=NULL;printf("\n\n\n\n\n\n\t\t\t\1 继续请按1, 返回请按0 ! ");scanf("%d",&ch);getchar();if(ch==0){flag=1;init_Total();TOTAL(Head);return 0;}}}Display(Checkbook *p){Checkbook *q=p;int i;system("cls");for(i=0;i<15;i++)printf(" *");printf("每月收支状况");for(i=0;i<15;i++)printf(" *");printf("\n\n月份收入食品消费房租子女教育费用水电费医疗费储蓄支出\n\n");while(q!=NULL){printf(pe,q->mon,q->income,q->food,q->house,q->education,q->wat_ele,q->treat,q->save,q->out);q=q->next;}printf("\n合计:%5d%6d%9d%10d%11d%8d%7d%8d",Total->income,Total->food,Total->house,Total->educa tion,Total->wat_ele,Total->treat,Total->save,Total->out);printf("\n\n\n\n\n\t\t\t\1 请按0返回!");getchar();getchar();return 1;}Checkbook *q[12];selectsort_1(Checkbook *q[],int n){int i,j,min;Checkbook *t;for(i=0;i<n;i++){min=i;for(j=i+1;j<n;j++)if(q[j]->out<q[min]->out)min=j;if(min!=i){t=q[i];q[i]=q[min];q[min]=t;}}return 1;}SORT_out(Checkbook *h){Checkbook *p=h;int i=0,j;system("cls");printf("\t\t\t\t开支递增排列\n");for(j=0;j<=39;j++)printf(" *");while(p!=NULL){q[i]=p;i++;p=p->next;}selectsort_1(q,i);printf("\n\n月份收入食品消费房租子女教育费用水电费医疗费储蓄支出\n\n");for(j=0;j<i;j++)printf(pe,q[j]->mon,q[j]->income,q[j]->food,q[j]->house,q[j]->education,q[j]->wat_ele,q[j]->treat, q[j]->save,q[j]->out);printf("\n\n\n\n\n\t\1 请按0返回!");getchar();return 1;}selectsort_2(Checkbook *s[],int n){int i,j,min;Checkbook *t;for(i=0;i<n-1;i++){min=i;for(j=i+1;j<n;j++)if(s[j]->income<s[min]->income)min=j;if(min!=i){t=s[i];s[i]=s[min];s[min]=t;}}return 1;}SORT_income(Checkbook *h){Checkbook *p=h,*q[12];int i=0,j;system("cls");printf("\t\t\t\t收入递增排列\n");for(j=0;j<=39;j++)printf(" *");while(p!=NULL){q[i]=p;i++;p=p->next;}selectsort_2(q,i);printf("\n\n月份收入支出\n\n");for(j=0;j<i;j++)printf("%2d%9d%9d\n",q[j]->mon,q[j]->income,q[j]->out); printf("\n\n\n\n\t\1 请按0返回!");getchar();getchar();}Checkbook *Find(int m){Checkbook *p=Head;while(p!=NULL){if(p->mon==m) break;p=p->next;}return p;}CONSULT(){Checkbook *C;int i,c,p;do{system("cls");for(i=0;i<13;i++)printf(" \1"); printf(" 查询某月收支情况");for(i=0;i<13;i++)printf(" \1");printf("\n\n \1 请输入要查询的月份:");scanf("%d",&c);C=Find(c);if(C!=NULL){printf("\n\n月份收入食品消费房租子女教育费用水电费医疗费储蓄支出\n\n");printf(pe,C->mon,C->income,C->food,C->house,C->education,C->wat_ele,C->treat,C->save,C-> out);}elseprintf("\n\n\1 对不起,找不到你要查询的月份!"); //如果返回的结点点为空则显示提示printf("\n\n\n\n\n\t\t\t\1 继续查询请按1 ,返回请0 !");scanf("%d",&p); getchar();if(p==0)return 1;}while(p==1);return 1;}DELETE_Data(){Checkbook *p,*q,*s;int i,c,d;do{system("cls");for(i=0;i<13;i++)printf(" \1");printf(" 删除某月收支数据");for(i=0;i<13;i++)printf(" \1");printf("\n\n \1 请输入要删除的月份:");scanf("%d",&c);q=Find(c);if(q!=NULL){p=Head;while(p!=NULL&&p!=q){s=p;p=p->next;}if(q==Head)Head=Head->next;elseif(p->next==NULL) s->next=NULL;else s->next=p->next;printf("\n\n\n\t\t%d月份的数据已删除成功!",c);}elseprintf("\n\n\1 对不起,找不到你要删除的月份!");printf("\n\n\n\n\n\t\t\1 继续删除请按1,返回请按0!");scanf("%d",&d); getchar();if(d==0){init_Total();TOTAL(Head);return 1;}}while(d==1);return 1;}Modify_Data(){Checkbook *p,*q,*s;int i,c,d;do{system("cls");for(i=0;i<13;i++) printf(" \1"); printf(" 修改某月收支数据");for(i=0;i<13;i++) printf(" \1");printf("\n\n \1 请输入要修改的月份:");scanf("%d",&c);q=Find(c);if(q!=NULL){p=Head;while(p!=NULL&&p!=q){s=p;p=p->next;}if(q==Head){printf("收入食品消费房租子女教育费用水电费医疗费储蓄\n");cin>>p->income>>p->food>>p->house>>p->education>>p->wat_ele>>p->treat>>p->save;}elseif(p->next==NULL){printf("收入食品消费房租子女教育费用水电费医疗费储蓄\n");cin>>p->income>>p->food>>p->house>>p->education>>p->wat_ele>>p->treat>>p->save;}else{printf("收入食品消费房租子女教育费用水电费医疗费储蓄\n");cin>>p->income>>p->food>>p->house>>p->education>>p->wat_ele>>p->treat>>p->save;}printf("\n\n\n\t\t%d月份的数据已修改成功!",c);}elseprintf("\n\n\1 对不起,找不到你要修改的月份!");printf("\n\n\n\n\n\t\t\1 继续修改请按1,返回请按0!");scanf("%d",&d);getchar();if(d==0){init_Total();TOTAL(Head);return 1;}}while(d==1);return 1;}SA VE(){system("cls");printf("\n\n\n\n\n\n\n\n\t\t\t\t数据已经保存好!");printf("\n\n\t\t\t\t\1 (请按任意键返回!)");getchar();getchar();return 1;}void MENUE_WINDOW(){int i, choice;for(;;){system("cls");for(i=0;i<13;i++)printf(" *");printf(" 个人帐簿管理系统");for(i=0;i<14;i++)printf(" *");printf("\n\n");for(i=0;i<40;i++)printf(" \1");printf("\n\n\t\t\t\t1 输入某月收支\n\n\t\t\t\t2 每月的收支状况\n\n\t\t\t\t3 开支递增排列\n\n\t\t\t\t4 收入递增排列");printf("\n\n\t\t\t\t5 查询某月收支\n\n\t\t\t\t6 删除某月收支\n\n\t\t\t\t7 保存数据\n\n\t\t\t\t8修改数据\n\n\t\t\t\t9 退出");printf("\n\n\t\1 \1 请选择1-9 : ");scanf("%d",&choice);switch(choice){case 1: insert(); break;case 2: Display(Head); break;case 3: SORT_out(Head); break;case 4: SORT_income(Head); break;case 5: CONSULT(); break;case 6: DELETE_Data(); break;case 7: SA VE(); break;case 8: Modify_Data(); break;case 9: exit(0); break;default: printf("\n\n\t\t\t选择错误,请重选!");getchar();getchar();}}}void START_WINDOW(){printf("\n\t\t\t \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 ");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 ");printf("\n\n\t\t\t欢迎使用该帐簿管理程序!!");printf("\n\n\t\t\t\t(请按Enter进入程序)");}void main(){printf("dddddddd");char choice;init_Head();init_Total();do{system("cls");START_WINDOW();scanf("%c",&choice);if(choice=='\n')MENUE_WINDOW(); }while(choice!='\n');}。
c语言课程设计个人账本管理
c语言课程设计个人账本管理一、教学目标本节课的教学目标是让学生掌握C语言的基本语法和编程技巧,通过编写个人账本管理系统,培养学生的实际编程能力和问题解决能力。
具体分为以下三个维度:1.知识目标:学生需要掌握C语言的基本数据类型、运算符、控制结构、函数等语法知识,理解结构体和文件操作等高级概念。
2.技能目标:学生能够运用C语言编写简单的程序,具备基本的调试和优化代码的能力。
通过个人账本管理系统的开发,培养学生的实际编程能力和团队协作能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高他们对编程和解决问题的自信心,培养良好的编程习惯和团队精神。
二、教学内容本节课的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,以及结构体和文件操作等高级概念。
具体安排如下:1.引入:介绍C语言的背景和发展历程,让学生了解C语言的重要性和应用领域。
2.基本语法:讲解C语言的基本数据类型、运算符、控制结构等基础知识,让学生掌握编写简单程序的基本技巧。
3.函数:介绍函数的定义和声明,讲解如何编写和使用函数,培养学生编写模块化代码的能力。
4.结构体:讲解结构体的定义和用法,让学生了解如何使用结构体来存储和管理复杂的数据。
5.文件操作:讲解文件的基本概念和操作方法,让学生掌握如何读写文件,为后续的个人账本管理系统开发打下基础。
6.个人账本管理系统:通过项目驱动的方式,让学生动手编写个人账本管理系统,培养学生的实际编程能力和问题解决能力。
三、教学方法为了提高教学效果,本节课将采用多种教学方法相结合的方式进行教学。
具体包括:1.讲授法:讲解C语言的基本语法和概念,让学生掌握基础知识。
2.案例分析法:通过分析实际案例,让学生了解C语言在实际应用中的作用和价值。
3.实验法:学生进行个人账本管理系统的开发,培养学生的实际编程能力和团队协作能力。
4.讨论法:鼓励学生积极参与课堂讨论,提问和解答问题,提高他们的思维能力和沟通能力。
C语言程序设计个人财务管理系统
C语言程序设计个人财务管理系统个人财务管理系统是一款帮助个人进行财务管理和分析的软件,能够帮助用户记录、分类、统计和分析个人的收入和支出。
本文将介绍一个使用C语言编写的简单个人财务管理系统。
首先,我们需要定义几个结构体来表示财务记录和分类信息:```c//定义财务记录结构体struct financial_recordint id; // 编号int year; // 年份int month; // 月份int day; // 日期char type[20]; // 类型double amount; // 金额};//定义分类信息结构体struct categorychar name[20]; // 分类名称double total; // 总金额int count; // 记录数量};//定义财务管理系统结构体struct financial_management_systemstruct financial_record records[100]; // 财务记录数组struct category categories[10]; // 分类信息数组int record_count; // 记录数量};```接下来,我们可以实现几个基本的功能,如添加记录、删除记录、查询记录和分类汇总等:```c//添加财务记录void add_record(struct financial_management_system *system) printf("请输入年份:");scanf("%d", &(system->records[system->record_count].year));//省略其他输入信息的代码printf("请输入金额:");scanf("%lf", &(system->records[system->record_count].amount));system->record_count++;//删除财务记录void delete_record(struct financial_management_system*system, int id)for (int i = 0; i < system->record_count; i++)if (system->records[i].id == id)for (int j = i; j < system->record_count - 1; j++)system->records[j] = system->records[j + 1];}system->record_count--;break;}}//查询财务记录void query_record(struct financial_management_system system, int year, int month, int day)for (int i = 0; i < system.record_count; i++)if (system.records[i].year == year &&system.records[i].month == month &&system.records[i].day == day)printf("编号:%d\n", system.records[i].id);//输出其他信息的代码}}//分类汇总void summarize_category(struct financial_management_system system)for (int i = 0; i < system.record_count; i++)//查找分类信息是否存在int category_index = -1;for (int j = 0; j < 10; j++)if (strcmp(system.records[i].type, system.categories[j].name) == 0)category_index = j;break;}}//如果分类信息不存在,则添加分类信息if (category_index == -1)strcpy(system.categories[system.category_count].name, system.records[i].type);system.categories[system.category_count].count = 1;system.categories[system.category_count].total = system.records[i].amount;system.category_count++;} elsesystem.categories[category_index].count++;system.categories[category_index].total +=system.records[i].amount;}}for (int i = 0; i < system.category_count; i++)printf("分类:%s\t总金额:%lf\t记录数量:%d\n",system.categories[i].name,system.categories[i].total,system.categories[i].count);}```最后,我们可以编写主函数来完成用户和系统的交互:```cint maistruct financial_management_system system; system.record_count = 0;system.category_count = 0;while (1)printf("\n请选择操作:\n");printf("1. 添加记录\n");printf("2. 删除记录\n");printf("3. 查询记录\n");printf("4. 分类汇总\n");printf("0. 退出\n");int choice;scanf("%d", &choice);switch (choice)case 1:add_record(&system);break;case 2:printf("请输入要删除的记录编号:");int id;scanf("%d", &id);delete_record(&system, id);break;case 3:printf("请输入查询的日期(年月日):"); int year, month, day;scanf("%d %d %d", &year, &month, &day); query_record(system, year, month, day); break;case 4:summarize_category(system);break;case 0:return 0;default:printf("无效的操作!\n");break;}}```通过以上代码,我们实现了一个简单的个人财务管理系统。
c课程设计个人财务系统设计
c 课程设计个人财务系统设计一、教学目标本课程旨在帮助学生了解和掌握个人财务系统设计的基本概念和方法,使他们在理论知识、实践技能和情感态度方面达到以下目标:1.知识目标:–掌握个人财务系统的定义、功能和分类。
–了解个人财务规划的基本原则和方法。
–学习个人资产负债表、收入支出表的编制方法。
–掌握储蓄、投资、消费决策的制定原则。
2.技能目标:–能够运用个人财务规划方法,为他人提供财务咨询。
–能够独立完成个人资产负债表、收入支出表的编制。
–学会分析个人财务状况,提出改进措施。
–能够根据自身情况,制定合理的储蓄、投资、消费决策。
3.情感态度价值观目标:–培养学生正确的理财观念,认识到个人财务规划的重要性。
–培养学生关注社会经济发展,关注个人财务问题。
–培养学生独立思考、解决问题的能力。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.个人财务系统概述:介绍个人财务系统的定义、功能和分类,使学生了解个人财务系统的基本概念。
2.个人财务规划:讲解个人财务规划的基本原则和方法,让学生学会如何为他人提供财务咨询。
3.个人财务报表:详细介绍资产负债表、收入支出表的编制方法,帮助学生掌握财务报表的基本知识。
4.储蓄、投资与消费决策:分析储蓄、投资、消费决策的制定原则,让学生能够根据自身情况,制定合理的财务决策。
三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:通过讲解基本概念、原理和方法,使学生掌握个人财务系统设计的相关知识。
2.案例分析法:分析实际案例,让学生学会如何运用所学知识解决实际问题。
3.讨论法:学生进行分组讨论,培养学生的独立思考和团队协作能力。
4.实验法:安排实验课程,让学生动手操作,提高实践能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《个人财务系统设计》教材,为学生提供理论知识的学习材料。
2.参考书:提供相关领域的参考书籍,拓展学生的知识视野。
C语言个人账簿管理系统报告
程序设计课程设计程序设计课程设计报告( 2012-- 2013年度第2学期)个人账簿管理系统的设计专业 软件工程学生姓名 班级 软件121学号指导教师 完成日期2013.7.4个人账簿管理系统目录1概述 (1)1.1课程设计目的 (1)1.2 课程设计内容 (1)2系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3 开发环境 DEVC++ (2)3系统概要设计 (2)3.1 系统的功能模块划分 (2)3.2 系统流程图 (2)4系统详细设计 (4)4.1 个人账簿管理系统主函数前常变量定义和函数声明 (4)4.2 个人账簿管理系统主函数 (4)4.3个人账簿管理系统注册函数、登陆函数和正常退出函数(Quit) (5)4.4 个人账簿管理系统主菜单函数和查找子菜单函数 (5)4.5 个人账簿管理系统录入收支模块 (6)4.6 个人账簿管理系统查询模块 (6)4.7 个人账簿管理系统修改数据模块 (7)4.8 个人账簿管理系统排序模块 (7)4.9 个人账簿管理系统帮助说明 (7)5测试 (7)5.1 测试方案 (7)5.2 测试结果 (7)6小结 (13)参考文献 (14)附录 (15)附录1源程序清单 (15)附录1.1个人账簿管理系统主函数前声明 (15)附录1.2个人账簿管理系统注册、登陆和退出 (16)附录1.3个人账簿管理系统菜单和子菜单函数 (19)附录1.4个人账簿管理系统收支录入和写入文件 (25)附录1.5 个人账簿管理系统查找函数 (26)附录1.6 个人账簿管理系统移除记录函数 (29)附录1.7 个人账簿管理系统排序函数 (29)附录1.8 个人账簿管理系统说明函数 (30)个人账簿管理系统的设计1 概述1.1课程设计目的1).加深对《C语言程序设计》课程知识的理解,掌握C语言应用程序的开发方法和步骤;2).进一步掌握和利用C语言进行设计的能力;3).进一步理解和运用结构化程序设计的思想和方法;4).初步掌握开发一个小型实用系统的基本方法;5).学会调试一个较长程序的基本方法;6).学会利用流程图或N-S图表示算法;7).掌握书写程序设计开发文档的能力(书写课程设计报告)。
个人财务管理系统
八、参考文献
【1】C语言程序设计教程(第二版) 李春葆 曾平 喻丹丹
九、程序清单(双列排版,小五号字)
#include<stdio.h> #include<string.h> #define null 0 #define max 20 #define ok 1 struct record{ /*结构体record*/ char date[20]; /*日期*/ char operate[20]; /*操作*/ int num; /*金额*/ }; struct list_record{ char account[20]; /*账号*/ char code[20]; /*密码*/ char name[20]; /*姓名*/ int rec_len; /*记录条*/ struct record rec[max]; /*结构体声明*/ }r[max]; int old_record( struct list_record r[]) /*结构体list record r【】*/ { int i; for(i=0;i<3;i++) r[i].rec_len=4; strcpy(r[0].account,"1001"); strcpy(r[1].account,"1002"); strcpy(r[2].account,"1003"); strcpy(r[0].code,"101"); strcpy(r[1].code,"102"); strcpy(r[2].code,"103"); strcpy(r[0].name ,"lihailong"); strcpy(r[1].name ,"lining"); strcpy(r[2].name ,"changle"); strcpy(r[0].rec[0].date,"12-06-21"); /*记录日期*/ strcpy(r[0].rec[1].date,"12-06-22"); strcpy(r[0].rec[2].date,"12-06-23"); strcpy(r[0].rec[3].date,"12-06-24"); strcpy(r[1].rec[0].date,"12-06-25");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计工程训练报告C语言程序设计个人财务管理系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制目录1.需求分析 (1)2系统总框图和功能模块说明 (1)2.1系统总框图 (1)2.2功能模块说明 (1)3系统设计 (2)3.1主要结构体 (2)3.2主要功能函数 (2)4系统调试 (3)4.1、程序开始执行时系统的所显示的页面: (3)4.2、选择退出系统: (3)4.3、选择登陆,并且输入的和密码都正确: (3)4.4、用户输入的不正确: (4)4.5、用户输入的正确,密码不正确: (4)4.6、用户进行具体操作: (5)5总结 (6)6源程序清单 (6)1.需求分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。
那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。
同时也要求系统能够对不同的用户的身份进行查找和验证。
在验证通过之后,在对其进行用户所要求的操作。
作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。
但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。
除此之外,还必须有足够大的空间来存储新的记录。
所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。
2系统总框图和功能模块说明2.1系统总框图2.2功能模块说明(1)old_record( ):此函数由系统自行调用,作用是将所有用户信息存入系统。
(2)void save( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。
(3)load( ):此函数的作用是将结构体数组中写入文件的信息读出,由系统调用。
(4)lookup_accounts():此函数的作用是将用户输入的与系统中的所有进行对比,查看系统中是否有此。
(5) check_code( ):此函数是作用是在系统查询到了之后,对用户输入的和密码进行检验,看是否相对应。
(6)print_message():此函数的功能是在系统检查了用户输入的和密码之后,如果用户通过了系统的检查,在此显示用户可见的基本信息。
(7)find_record():此函数的作用是根据用户输入的日期进行查找操作。
(8)insert_record():此函数的功能是在记录中增加一条新的记录,这个记录由用户输入。
(9)del_record():此函数的功能是根据用户的输入的位置,将相应位置的记录删除。
(10)sum_num():此函数的功能是计算所有收入和支出的总和,计算全部的收入的总合,计算全部输出的总合。
(11)打印输出记录的函数:在本程序中一共有三个打印输出记录的函数,分别为all_print()、acc_print()、pay_print()这三个函数。
它们的功能依次是打印输出全部记录,打印输出输入记录,打印输出支出记录。
(12)mian( ):在主函数中,可以根据用户的选择来操作系统允许用户使用的功能,也可以随时退出这个系统。
3系统设计3.1主要结构体个人信息账户信息3.2主要功能函数old_record( ) //将所有用户信息存入系统print_message() //显示用户可见的基本信息sum_num() //计算所有收入和支出的总和all_print()、acc_print()、pay_print() //打印输出全部记录,打印输出输入记录,打印输出支出记录4系统调试4.1、程序开始执行时系统的所显示的页面:4.2、选择退出系统:4.3、选择登陆,并且输入的和密码都正确:4.5、用户输入的正确,密码不正确:5总结本程序在编写是,主要就是基于用户的角度去分析该如何设计此程序,和编写功能模块的。
在编写程序时,所有的数据都是对结构体进行的操作,在此过程中,我发现了自己在对指针操作的时候,尤其是对指向结构体数组的指针和指向结构体的指针的操作都不够熟练。
但在编写完此程序之后,我感觉自己对语法的应用有了明显的提高。
6源程序清单#include<stdio.h>#include<string.h>#define null 0#define max 20#define ok 1struct record{char date[20];char operate[20];int num;};struct list_record{char account[20];char code[20];char name[20];int rec_len;struct record rec[max];}r[max];//系统原有数据,用户不可知int old_record( struct list_record r[]){int i;for(i=0;i<3;i++)r[i].rec_len=4;strcpy(r[0].account,"1001");strcpy(r[1].account,"1002");strcpy(r[2].account,"1003");strcpy(r[0].code,"111111");strcpy(r[1].code,"222222");strcpy(r[2].code,"333333");strcpy(r[0].name ,"wang");strcpy(r[1].name ,"li");strcpy(r[2].name ,"zhang");strcpy(r[0].rec[0].date,"07-01-01"); strcpy(r[0].rec[1].date,"07-02-01"); strcpy(r[0].rec[2].date,"07-03-01"); strcpy(r[0].rec[3].date,"07-04-01"); strcpy(r[1].rec[0].date,"07-01-02"); strcpy(r[1].rec[1].date,"07-02-02"); strcpy(r[1].rec[2].date,"07-03-02"); strcpy(r[1].rec[3].date,"07-04-02"); strcpy(r[2].rec[0].date,"07-01-03"); strcpy(r[2].rec[1].date,"07-02-03"); strcpy(r[2].rec[2].date,"07-03-03"); strcpy(r[2].rec[3].date,"07-04-03"); strcpy(r[0].rec[0].operate,"in");strcpy(r[0].rec[1].operate,"out");strcpy(r[0].rec[2].operate,"in");strcpy(r[0].rec[3].operate,"out");strcpy(r[1].rec[0].operate,"out");strcpy(r[1].rec[1].operate,"in");strcpy(r[1].rec[2].operate,"out"); strcpy(r[1].rec[3].operate,"in");strcpy(r[2].rec[0].operate,"in");strcpy(r[2].rec[1].operate,"out"); strcpy(r[2].rec[2].operate,"in");strcpy(r[2].rec[3].operate,"out"); r[0].rec[0].num=3000;r[0].rec[1].num=-1500;r[0].rec[2].num=2500;r[0].rec[3].num=-1000;r[1].rec[0].num=-3000;r[1].rec[1].num=5000;r[1].rec[2].num=-1000;r[1].rec[2].num=2000;r[2].rec[0].num=1000;r[2].rec[1].num=-1500;r[2].rec[2].num=3000;r[2].rec[2].num=-500;return ok;}//将数据写入文件void save( ){FILE *fp;int i;if((fp=fopen("wenjian","wb"))==null) {printf("can not open the file.\n"); return;}for(i=0;i<max;i++)if(fwrite(&r[i],sizeof(struct list_record),1,fp)!=1) printf("file write error.\n");fclose(fp);}//文件读出void load( ){FILE *fp;int i;if((fp=fopen("wenjian","rb"))==null){printf("can not open infile.\n");return;}for(i=0;i<max;i++)if(fread(&r[i],sizeof(struct list_record),1,fp)!=1) {if(feof(fp))(fclose(fp));return;}fclose(fp);}//将用户输入的与系统中原有比较,查找用户int lookup_accounts( struct list_record r[],char acc[]) {int i;for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0){return ok;}printf("不存在,请重新输入!\n");return null;}//检查密码函数struct list_record check_code(struct list_record r[],char acc[],char c[]) {int i;struct list_record a;strcpy(a.account,"0");strcpy(a.code,"0");a.rec_len=0;for(i=0;i<a.rec_len;i++){strcpy(a.rec[i].date,"0");strcpy(a.rec[i].operate,"0");a.rec[i].num=0;}for(i=0;i<3;i++)if(strcmp(r[i].account,acc)==0)if(strcmp(r[i].code,c)==0)return r[i];printf("the code is wrong,please input again!\n");return a;//显示用户基本信息void print_message( struct list_record *p){printf(":%s\n",p->name);printf(":%s\n",(*p).account);}//根据用户输入的日期,查找记录int find_record( struct list_record *p,char d[]){int i;for(i=0;i<(*p).rec_len;i++){if(strcmp((*p).rec[i].date,d)==0){printf("date operate money\n");printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d \n",(*p).rec[i].num);return ok;}}if(i==(*p).rec_len)printf("the date is not exit!\n");return null;}//插入函数,根据用户输入的信息,增加记录int insert_record( struct list_record *p,struct record *p1,int lop)int i;if((lop<1)||(lop>((*p).rec_len+1))){printf("the position is wrong.\n");return 0;}else{for(i=(*p).rec_len;i>lop-1;i--){strcpy((*p).rec[i].date,(*p).rec[i-1].date);strcpy((*p).rec[i].operate,(*p).rec[i-1].operate); (*p).rec[i].num=(*p).rec[i-1].num;}strcpy(p->rec[i].date,p1->date);strcpy((*p).rec[i].operate,(*p1).operate);(*p).rec[i].num=(*p1).num;(*p).rec_len++;return ok;}}// 删除记录函数int del_record( struct list_record *p,int lop2){int i;if((lop2<1)||(lop2>(*p).rec_len)){printf("the position is wrong.\n");return null;}else{for(i=lop2-1;i<(*p).rec_len-1;i++){strcpy((*p).rec[i].date,(*p).rec[i+1].date);strcpy((*p).rec[i].operate,(*p).rec[i+1].operate); (*p).rec[i].num=(*p).rec[i+1].num;}(*p).rec_len--;return ok;}}//输出全部记录函数void all_print( struct list_record *p){ int i;printf("date operate num\n");for(i=0;i<(*p).rec_len;i++){ printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d ",(*p).rec[i].num);printf("\n");}}//计算总的钱数int sum_num( struct list_record *p) {int i;int sum=0;int sum_in=0;int sum_out=0;for(i=0;i<(*p).rec_len;i++){sum+=(*p).rec[i].num;if((*p).rec[i].num>0)sum_in+=(*p).rec[i].num;if((*p).rec[i].num<0)sum_out+=(*p).rec[i].num;}printf("总金额为: %d\n",sum);printf("总收入为: %d\n",sum_in);printf("总支出为: %d\n",sum_out);return ok;}//输出收入记录int acc_print( struct list_record *p) {int i;int sum_acc=0;printf("date operate num\n"); for(i=0;i<(*p).rec_len;i++)if((*p).rec[i].num>0){sum_acc+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d ",(*p).rec[i].num);printf("\n");}printf("总收入金额为: %d\n",sum_acc);return ok;if(sum_acc==0)printf("there is no account.\n");return null;}//输出支出记录int pay_print( struct list_record *p){int i;int sum_pay=0;printf("date operate num\n");for(i=0;i<p->rec_len;i++)if((*p).rec[i].num<0){sum_pay+=(*p).rec[i].num;printf("%s ",(*p).rec[i].date);printf("%s ",(*p).rec[i].operate);printf("%d ",(*p).rec[i].num);printf("\n");}printf("总的支出为: %d\n",sum_pay);return ok;if(sum_pay==0)printf("there is no payout.\n");return null;}void main( ){int j=0,n=0;int x,k,lop1,lop2;char data1[20];char accou[20],cod[20];struct record *p0;struct record a;struct list_record b;struct list_record *p;b.rec_len=0;p0=&a;old_record(r);save( );load( );printf(" 欢迎使用个人财政支出管理系统!\n");printf("------------------------------------------------------------\n");printf("||\n");printf("| 1、登陆系统|\n");printf("| 2、退出系统|\n");printf("||\n");printf("------------------------------------------------------------\n");scanf("%d",&x);if(x==0)printf(" 感您使用本系统,再见!\n");else{do{printf("请输入:"); //while(j<3);scanf("%s",accou);if(lookup_accounts(r,accou)){ printf("请输入密码:"); //while(j<3);scanf("%s",cod);b=check_code(r,accou,cod);if(b.rec_len==0){do{b=check_code(r,accou,cod); //while(n>3)scanf("%s",cod);n++;}while(n<3);if(n=3)printf("您的密码不正确,请退出系统,使用,再见!\n");break;}else{printf("---------------请选择您要进行的操作-------------------\n");printf("| |\n"); //while(j<3);printf("| 2、查找记录|\n");printf("| 3、增加记录|\n");printf("| 4、删除记录|\n");printf("| 5、输出所有记录|\n");printf("| 6、输出所有收入记录|\n");printf("| 7、输出所有支出记录|\n");printf("| |\n");printf("-----------------------------------------------------|\n");p=&b;print_message(p);do{scanf("%d",&k); //while(k>0)if(k==10)printf("感您使用本系统,再见!\n");if(k==2){printf("请输入您要查询的日期:");scanf("%s",data1);find_record(p,data1);}if(k==3){printf("请输入你要插入的位置:\n");scanf("%d",&lop1);printf("请输入您要添加的记录:\n");printf("日期:");scanf("%s",p0->date);printf("操作:");scanf("%s",p0->operate);printf("金额:");scanf("%d",&(p0->num));insert_record(p,p0,lop1);}if(k==4){printf("请输入您要删除的记录的位置:\n"); scanf("%d",&lop2);del_record(p,lop2);}if(k==5){all_print(p);sum_num(p);}if(k==6)acc_print(p);if(k==7)pay_print(p);}while(k>0);break;}}j++;}while(j<3);printf("感您使用本系统,再见!\n");}}(2)量化评分表请学生将下面成绩评定表复制到报告的最后一页(单独一页)。