C语言课程设计——家庭财务管理系统_第1页
C语言课程设计——家庭财务管理系统_第2页
C语言课程设计——家庭财务管理系统_第3页
C语言课程设计——家庭财务管理系统_第4页
C语言课程设计——家庭财务管理系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告课程设计题目:家庭财务管理系统学生姓名 :专业:信息工程班级:指导教师 :2018年1月8日可编辑范本1.需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出进行记录和管理。 该系统要求: 家庭月收入管理家庭月支出管理统计家庭总收入 / 总支出系统提供收入/ 支出的添加、删除和修改功能。2. 总体设计根据以上分析,本家庭账务管理系统主要包括:从键盘键入家庭月收入、月支出数据;查询月收入、月支出明细;删除收入、支出数据;修改收入、支出数据;统计总收入 / 总支出;退出系统。除 main()函数之外,系统还定义了以下函数来实现各部分内容:add_in

2、come():添加收入数据函数。add_payout():添加支出数据函数。search_data():查找数据函数。 initialize():初始化函数,读取文本数据。show_info():显示数据函数。count_total():统计函数,统计总收入、总支出。update_data():修改信息函数。delete_data():删除数据函数。可编辑范本 quit():退出函数。程序结构功能图如下:3.详细设计3.1 收入管理可编辑范本3.2 支出管理可编辑范本4.测试结果4.1 程序运行主菜单可编辑范本4.2 添加收入测试4.3 查询收入明细测试可编辑范本4.4 删除收入测试可编辑范本

3、4.5 修改收入测试4.6 添加支出测试可编辑范本4.7 查询支出明细测试4.8 删除支出测试可编辑范本4.9 修改支出测试可编辑范本4.10 统计总收入 / 支出测试可编辑范本4.11 退出系统测试可编辑范本5.软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示),然后按照主界面菜单指引操作即可。6.总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。 这样很容易遗漏, 连续性也不好。 通过本次的课程设计让我对于数组、文件的存放、 循环结构等知识有了更加透彻的理解。希望在以后的课程设计中对于知识的运用能够更加的熟练。代码:#include #include

4、#include 可编辑范本#include #define MAXNAME 11/ 家庭成员姓名的最大长度#define MAXDETAIL 21/ 注最大长度/ 自定义枚举类型 fi_type,用来表示收入与支出 typedef enum _fi_typeincome=1,/ 收入 payout =-1 / 支出 fi_type;/ 家庭财务信息结构体typedef struct _fi_infoint year;int month;fi_type type;char name9;float money;char detail11;fi_info;/ 存储财务数据结构的结构体typedef

5、 struct _fi_data可编辑范本fi_info info;struct _fi_data* next; fi_data;fi_data *head;/ 财务数据的头结点void menu();/ 菜单函数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();

6、/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);void menu()printf(n);printf(ttn)

7、;printf(ttn);printf(ttt家庭财务管理系统n);printf(ttn);printf(ttn);printf(tt*n);printf(tt收入管理 :);printf(1. 添加收入 );printf(2.查询收入明细 n);printf(ttt 3.删除收入 );printf(4.修改收入 n);printf(tt*n);printf(tt支出管理 :);可编辑范本printf(5. 添加支出 );printf(6.查询支出明细 n);printf(ttt 7.删除支出 );printf(8.修改支出 n);printf(tt*n);printf(tt统计:);prin

8、tf(9. 统计总收入 / 总支出 n);printf(tt*n);printf(tt退出 :0.退出系统 n);printf(tt*nnn);void main()int selected=0;initialize();while(selected=0&selected请选择要进行的操作(0-9):);if(scanf(%d,&selected)!=1|selected9)可编辑范本printf(tt输入有误!请选择(0-9)之间的数字!按任意键重试);getchar();elseswitch(selected)case 0:exit(0);clear_data();break;case 1

9、:add_income();save_to_file();break;case 2:search_income();break;case 3:delete_income();save_to_file();break;case 4:update_income();save_to_file();break;case 5:add_payout();save_to_file();break;case 6:search_payout();break;case 7:delete_payout();save_to_file();break;case 8:update_payout();save_to_fil

10、e();break;case 9:count_total();break;可编辑范本void add_income()/ 添加收入fi_data *p=(fi_data *)malloc(sizeof(fi_data);p-next=NULL;input_info(&(p-info);p-info.type=income;if(head=NULL)head=p;elseget_last()-next=p;void add_payout()/ 添加支出fi_data *p=(fi_data *)malloc(sizeof(fi_data);p-next=NULL;input_info(&(p-i

11、nfo);p-info.type=payout;if(head=NULL)head=p;elseget_last()-next=p;可编辑范本/ 输入函数void input_info(fi_info *info)printf(tt请输入年月 (YYYY/M);scanf(%d/%d,&(info-year),&(info-month);printf(tt请输入家庭成员姓名(最大长度为%d):,MAXNAME-1);scanf(%s,info-name);printf(tt输入金额 :);scanf(%f,&(info-money);printf(tt请输入备注 (最大长度为 %d):,20)

12、;scanf(%s,info-detail);/ 查找数据函数void search_data(fi_type type)int year=0;int month=0;fi_data *p=NULL;int count=0;char input= ;while(1)可编辑范本printf(tt请输入要查询的年月(YYYY/M);if(scanf(%d/%d,&year,&month)!=2)printf(tt输入有误 n);elsep=head;count=0;while(p!=NULL)if(p-info.year=year)&(p-info.month=month)&(p-info.typ

13、e=type)show_info(p);system(PAUSE);count+;p=p-next;if(count=0)printf(tt没有找到数据 n);可编辑范本printf(tt继续查找其他数据?(y or n);input=getchar();if(input=y|input=Y)continue;elsebreak;/ 初始化函数,读取文本数据void initialize()FILE * fp=NULL;fi_data *p=NULL;fi_data *last=NULL;int count=0;fp=fopen(data.txt,rb);if(fp=NULL)fp=fopen

14、(data.txt,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;elselast=get_last();last-next=p;count+;fseek(fp,count*sizeof(fi_info),SEEK_SET);p=(fi_data *)malloc(sizeof(fi_data);memset(p

15、,0,sizeof(fi_data);p-next=NULL;free(p);p=NULL;可编辑范本fclose(fp);/ 显示信息函数void show_info(fi_data *p)int i=0;printf(|tt|tt|tt|tt|tt|tt|n);printf(|NO.t |年/ 月 tt|类型 tt|姓名 tt|金额 tt|备注 tt|n);printf(|%5dt|%4d/%02dt|%4st|%10st|%10.2f|%20s|n,i+1,p-info.year,p-info.month,p-info.type=income? 收入 :支出 ,,p

16、-info.money,p-info.detail);printf(|tt|tt|tt|tt|tt|tt|n);/ 统计总收入、总支出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;elsetotal_payout+=p-info.money;p=p-next;printf(tt+tt+tt+n);printf(tt|合计收入 t| 合计支出 t|

17、结余 t|n);printf(tt%12.2f|%12.2f|%12.2f|n,total_income,total_payout,total_income-total_payout);printf(tt+tt+tt+n);printf(tt按任意键返回主菜单);getchar();getchar();/ 保存到文件void save_to_file()FILE *fp=fopen(data.txt,wb );可编辑范本fi_data *p=head;while(p!=NULL)fwrite(&(p-info),sizeof(fi_info),1,fp);fseek(fp,0,SEEK_END

18、);p=p-next;fclose(fp);/ 修改信息函数void update_data(fi_type type) int year=0; int month=0; fi_data *p=NULL;fi_data *pre=NULL; char input;int count=0;int i=0;while(1) printf(tt 请输入要查询的年月 (YYYY/M); if(scanf(%d/%d,&year,&month)!=2)可编辑范本printf(tt输入有误 n);elsep=head;count=0;while(p!=NULL)if(p-info.year=year)&(

19、p-info.month=month)&(p-info.type=type)count+;show_info(p);input_info(&(p-info);printf(tt修改成功 n);p=get_previous(p);p=p-next;if(count=0)printf(tt没有找到数据 n);printf(tt继续查找其他数据?(y or n);可编辑范本input=getchar();if(input=y|input=Y)continue;elsebreak;void delete_data(fi_type type)/ 删除数据函数int year=0;int month=0;

20、fi_data *p=NULL;fi_data *pre=NULL;int count=0;char input= ;int i=0;while(1) printf(tt 请输入要查询的年月 (YYYY/M);if(scanf(%d/%d,&year,&month)!=2)printf(tt输入有误 n);可编辑范本elsep=head;count=0;while(p!=NULL)if(p-info.year=year)&(p-info.month=month)&(p-info.type=type)count+;show_info(p);pre=get_previous(p);if(pre=NULL)head=head-next;elsepre-next=p-next;free(p);printf(tt删除成功 n);p=p-next;if(count=0)可编辑范本printf(tt没有找到数据 n);printf(tt继续查找其他数据?(y or n);input=getchar();if(input=y|input=Y)continue;elseb

温馨提示

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

评论

0/150

提交评论