C语言程序设计个人财务管理系统

合集下载

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语言财务管理系统(源代码)

#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));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));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};char input=' ';while(1){printf(">请输入要查询的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2){printf(">输入错误。

用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语言完成的个人财务管理软件设计与实现一、引言在当今社会,个人财务管理变得越来越重要。

随着生活水平的提高和金融市场的多样化,人们需要更好地管理自己的财务状况,以确保财务安全和稳定。

为了更好地满足这一需求,设计并实现一款利用C 语言完成的个人财务管理软件显得尤为重要。

二、软件功能设计1. 用户登录用户可以通过输入用户名和密码登录软件,确保用户信息的安全性。

2. 记账功能用户可以记录每笔收入和支出,包括金额、时间、类别等信息,方便用户随时查看自己的财务情况。

3. 统计分析软件可以根据用户输入的数据进行统计分析,生成收支明细、月度报表、年度报表等,帮助用户更直观地了解自己的财务状况。

4. 预算管理用户可以设定每月的预算金额,并实时查看预算执行情况,帮助用户控制支出,避免超支。

5. 数据备份与恢复软件支持数据备份功能,用户可以随时备份自己的财务数据,并在需要时进行恢复,确保数据安全。

三、软件实现1. 界面设计利用C语言中的图形库或者控制台输出,设计简洁直观的界面,方便用户操作。

2. 数据存储使用文件系统或数据库存储用户输入的数据,确保数据持久化和安全性。

3. 功能实现根据软件功能设计,逐步实现用户登录、记账、统计分析、预算管理等功能模块,并确保功能之间的协调性和稳定性。

4. 测试与优化在软件开发过程中,进行充分测试,发现并修复可能存在的bug 和问题,并对软件进行优化,提升用户体验。

四、总结通过利用C语言完成个人财务管理软件的设计与实现,可以帮助用户更好地管理自己的财务状况,提升财务安全性和稳定性。

同时,这也是对C语言编程能力的一次锻炼和提升。

希望这款软件能够为广大用户带来便利和帮助。

C语言程序设计个人财务管理系统审批稿

C语言程序设计个人财务管理系统审批稿

C语言程序设计个人财务管理系统YKK standardization office【 YKK5AB- YKK08- YKK2C- YKK18】程序设计工程训练报告C语言程序设计个人财务管理系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制目录1.需求分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。

那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。

同时也要求系统能够对不同的用户的身份进行查找和验证。

在验证通过之后,在对其进行用户所要求的操作。

作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。

但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。

除此之外,还必须有足够大的空间来存储新的记录。

所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。

2系统总框图和功能模块说明系统总框图功能模块说明(1)old_record( ):此函数由系统自行调用,作用是将所有用户信息存入系统。

(2)void save( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。

(3)load( ):此函数的作用是将结构体数组中写入文件的信息读出,由系统调用。

(4)lookup_accounts():此函数的作用是将用户输入的帐号与系统中的所有帐号进行对比,查看系统中是否有此帐号。

(5) check_code( ):此函数是作用是在系统查询到了帐号之后,对用户输入的帐号和密码进行检验,看是否相对应。

c语言个人账簿管理系统代码

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条以上的记录问题。

C语言程序的设计个人财务管理系统方案

C语言程序的设计个人财务管理系统方案

程序设计工程训练报告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( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。

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++个人财务管理系统(五篇模版)第一篇: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++课程设计报告 个人财务管理系统

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语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制页脚内容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语言-个人收入支出系统

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语言财务管理系统(源代码)

#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_CO UNT){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){printf(">输入毛病.\n");}else{p=head;count=0;memset(result,0,sizeof(fi_data*));while(p!=NULL){if(p->info.year==year && p->info.month==month && p->info.type==type){if(count<9){result[count]=p;count++;}else{show_info(result,count);printf(">输入空格并回车翻页.其他键退出.");fflush(stdin);input=getchar();if(input==' '){memset(result,0,sizeof(fi_data*)); count=0;result[count]=p;count++;}else{break;}}}p=p->next;}if(count!=0){show_info(result,count);}else{printf(">没有找到数据.\n");}printf(">继续查找其他数据?(y or n)"); fflush(stdin);input=getchar();if(input=='y'||input=='Y'){continue;}else{break;}}}}void delete_data(fi_type type){int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;fi_data *result[9]={NULL};int count=0;char input=' ';int i=0;while(1){printf(">请输入要查询的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2){printf(">输入毛病.\n");}else{p=head;count=0;memset(result,0,sizeof(fi_data*));while(p!=NULL){if(p->info.year==year && p->info.month && p->info.type){if(count=9){result[count]=p;count++;}else{show_info(result,count);printf(">请输入空格并回车翻页.输入对应的序号删除.其他键退出:");fflush(stdin)input=getchar();if(input==' '){memset(result,0,sizeof(fi_data*)); count=0;result[count]=p;count++;}else if(input=='1' && input<=48+count) {i=input-49;pre=get_previous(result[i]);if(pre==NULL){head=head->next;}else{pre->next=result[i]->next;}free(result[i]);for(;i<count-1;i++){result[i]=result[i+1];}result[i]=p;printf(">删除胜利.\n");}else{break;}}}p=p->next;}if(count!=0){show_info(result,count);printf(">输入对应的序号删除.其他键退出."); fflush(stdin);input=getchar();if(input>='1' && input<=48+count){i=input-49;pre=get_previous(result[i]);if(pre==NULL){head=head->next;}else{pre->next=result[i]->next;}free(result[i]);for(;i<count-1;i++){result[i]=result[i+1];}result[i]=NULL;count--;printf(">删除胜利.\n");}}else{printf(">没有找到数据.\n");}printf(">继续查找数据?(y or n)");fflush(stdin);input=getchar();if(input=='y' || input=='Y'){continue;}else{break;}}}}void update_data(fi_type type){int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;fi_data *result[9]={NULL};int count=0;char input=' ';int i=0;while(1){printf(">请输入要查询的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2){printf(">输入毛病.\n");}else{p=head;count=0;memset(result,0,sizeof(fi_data*));while(p!=NULL){if(p->info.year==year && p->info.month==month && p->info.type==type){if(count<9){result[count]=p;count++;}else{show_info(result,count);printf(">输入空格并回车翻页.输入对应的序号修改.其他键退出.");fflush(stdin);input=getchar();if(input==' '){memset(result,0,sizeof(fi-data*));count=0;result[count]=p;count++;}else if(input>='1' && input<=48+count){i=input-49;input_info(&(result[i]->info));printf(">修改胜利.\n");p=get_previous(p);}else{break;}}}p=p->next;}if(count!=0){show_info(result,count);printf(">输入对应的序号修改.其他键退出.");fflush(stdin);input=getchar();if(input>='1' && input<=48+count) {i=input-49;input_info(&(result[i]->info)); show_info(result,count);printf(">修改胜利.\n");}}else{printf(">没有找到数据.\n");}printf(">继续查找数据?(y or n)"); fflush(stdin);input=getchar();if(input=='y' || input=='Y'){continue;}else{break;}}}}void initialize(){FILE *fp=NULL;fi_data *p=NULL;fi_data *last=NULL;int count=0;fp=fopen(DATA_FILE,"rb");if(fp==NULL){fp=fopen(DATA_FILE,"w");fclose(fp);return;}p=(fi_data*)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));p->next=NULL;while(fread(&(p->info),sizeof(fi_info),1,fp)==1) {if(head==NULL){head=p;}else{last=get_last();last->next=p;}count++;fseek(fp,count *sizeof(fi_info),SEEK_SET);p=(fi_data*)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));p->next=NULL;}free(p);p=NULL;fclose(fp);}。

C语言程序设计个人财务管理系统

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课程设计个人财务系统设计

c 课程设计个人财务系统设计一、教学目标本课程旨在帮助学生了解和掌握个人财务系统设计的基本概念和方法,使他们在理论知识、实践技能和情感态度方面达到以下目标:1.知识目标:–掌握个人财务系统的定义、功能和分类。

–了解个人财务规划的基本原则和方法。

–学习个人资产负债表、收入支出表的编制方法。

–掌握储蓄、投资、消费决策的制定原则。

2.技能目标:–能够运用个人财务规划方法,为他人提供财务咨询。

–能够独立完成个人资产负债表、收入支出表的编制。

–学会分析个人财务状况,提出改进措施。

–能够根据自身情况,制定合理的储蓄、投资、消费决策。

3.情感态度价值观目标:–培养学生正确的理财观念,认识到个人财务规划的重要性。

–培养学生关注社会经济发展,关注个人财务问题。

–培养学生独立思考、解决问题的能力。

二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.个人财务系统概述:介绍个人财务系统的定义、功能和分类,使学生了解个人财务系统的基本概念。

2.个人财务规划:讲解个人财务规划的基本原则和方法,让学生学会如何为他人提供财务咨询。

3.个人财务报表:详细介绍资产负债表、收入支出表的编制方法,帮助学生掌握财务报表的基本知识。

4.储蓄、投资与消费决策:分析储蓄、投资、消费决策的制定原则,让学生能够根据自身情况,制定合理的财务决策。

三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:通过讲解基本概念、原理和方法,使学生掌握个人财务系统设计的相关知识。

2.案例分析法:分析实际案例,让学生学会如何运用所学知识解决实际问题。

3.讨论法:学生进行分组讨论,培养学生的独立思考和团队协作能力。

4.实验法:安排实验课程,让学生动手操作,提高实践能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《个人财务系统设计》教材,为学生提供理论知识的学习材料。

2.参考书:提供相关领域的参考书籍,拓展学生的知识视野。

c语言个人财务管理系统[1]

c语言个人财务管理系统[1]

个人财政支出管理付欣05计算机四班指导老师:梁新元一、问题描述及分析 (1)二、实验程序设计思想及功能描述 (1)3、主要函数模块的设计思想和具体实现 (2)三、实验程序测试 (4)1、程序开始执行时系统的所显示的页面: (4)2、选择退出系统: (5)3、选择登陆,并且输入的帐号和密码都正确: (5)4、用户输入的帐号不正确: (5)5、用户输入的帐号正确,密码不正确: (6)四、实验程序自我评价 (7)五、课程设计创新 (7)六、课程设计总结 (7)七、参考书目: (7)八、实验程序源代码 (8)一、问题描述及分析编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。

那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。

同时也要求系统能够对不同的用户的身份进行查找和验证。

在验证通过之后,在对其进行用户所要求的操作。

作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。

但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。

除此之外,还必须有足够大的空间来存储新的记录。

所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。

二、实验程序设计思想及功能描述根据前面对于编写一个个人财政支出管理系统的程序的问题描述和分析,确定了此程序的基本思想和相关功能。

1、基本思想首先定义一个结构体数组,这个数组的功能便是用来所有用户的所有信息。

它的成员为每个用户的帐号(account)、密码(code)、姓名(name)、记录(record rec[max]),以及记录的条数(rec_len)。

个人财务管理系统

个人财务管理系统

八、参考文献
【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");

C语言程序设计个人财务管理系统

C语言程序设计个人财务管理系统

程序设计工程训练报告C语言程序设计个人财务管理系统课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制目录1.需求分析 (1)2系统总框图和功能模块说明 (1)2.1系统总框图 (1)2.2功能模块说明 (1)3系统设计 (3)3.1主要结构体 (3)3.2主要功能函数 (3)4系统调试 (3)4.1、程序开始执行时系统的所显示的页面: (3)4.2、选择退出系统: (3)4.3、选择登陆,并且输入的帐号和密码都正确: (4)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( ): 此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。

C语言财务管理系统(源代码)

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]之间的数字!按任意键重试..。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.4、用户输入的帐号不正确:4.5、用户输入的帐号正确,密码不正确:4.6、用户进行具体操作: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)量化评分表请学生将下面成绩评定表复制到报告的最后一页(单独一页)。

相关文档
最新文档