版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程设计题目: 家庭财务管理系统 学生姓名 :专 业 : 信息工程班级 :指导教师 :2018 年 1 月8 日1.需求分析 根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出 进行记录和管理。该系统要求:家庭月收入管理家庭月支出管理统计家庭总收入/总支出系统提供收入 /支出的添加、删除和修改功能。2. 总体设计根据以上分析,本家庭账务管理系统主要包括: 从键盘键入家庭月收入、月支出数据; 查询月收入、月支出明细; 删除收入、支出数据; 修改收入、支出数据; 统计总收入 /总支出; 退出系统。除 main() 函数之外,系统还定义了以下函数来实现各部分
2、内容: add_income():添加收入数据函数。 add_payout ():添加支出数据函数。 search_data ():查找数据函数。 ini tialize():初始化函数,读取文本数据。 show_info ():显示数据函数。 count_total ():统计函数,统计总收入、总支出。 update_data ():修改信息函数。 delete_data ():删除数据函数。 quit():退出函数。 程序结构功能图如下:3. 详细设计3.1 收入管理3.2 支出管理4. 测试结果4.1 程序运行主菜单4.2 添加收入测试4.3 查询收入明细测试4.4 删除收入测试4.5
3、修改收入测试4.6 添加支出测试4.7 查询支出明细测试4.8 删除支出测试4.9 修改支出测试4.10 统计总收入 / 支出测试4.11 退出系统测试5. 软件操作使用说明书 本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示),然后按照主 界面菜单指引操作即可。6. 总结编写程序之前要有一个整体的思路, 不能写到哪里算哪里。 这样很容易遗漏, 连续性也不好。 通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。希 望在以后的课程设计中对于知识的运用能够更加的熟练。代码:#include #include #include #include #defin
4、e 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 struct _fi_datafi_info info;
5、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();/void search_data(fi_type type); vo
6、id 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);printf(n); printf(tt printf(tt printf(ttt printf(tt printf(ttn);n);家
7、庭财务管理系统 n);n);n);void menu()printf(tt*n);printf(tt printf(1. printf( 2. printf(ttt 3. printf( 4.收入管理 :); 添加收入 );查询收入明细 n); 删除收入 );修改收入 n);printf(tt*n);printf(tt printf(5. printf( 6. printf(ttt 7. printf( 8.支出管理 :); 添加支出 );查询支出明细 n); 删除支出 );修改支出 n);printf(tt printf(9.统 计 :); 统计总收入 / 总支出 n);*printf(tt
8、*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:add_income();save_to_fi
9、le();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_file();break;case 9:count_t
10、otal();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-info);p-info.type=payout;if(he
11、ad=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);scanf(%s,info-detail);/ 查找数据函数v
12、oid 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.type=type) show_info(p); system(PAU
13、SE); 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(data.txt,w); fclose(fp);retur
14、n; 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-nex
15、t=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-info.money,p-info.detail
16、);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| 结余 t|n);printf(tt%12.2f|%12.2f
17、|%12.2f|n,total_income,total_payout,total_income-total_payo ut);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);p=p-next;fclose(fp);/ 修改信息函数vo
18、id 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)&(p-info.month=month)&(p-info.type=type)
19、 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;fi_data *p=NULL;fi_data *pre=NULL;int
20、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);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 零售业财务经理招聘面试全解析
- 快递行业调度员岗位面试解析
- 2026 主流网红推广平台评测榜单
- 护理服务中的技术创新与应用
- 护理交接班报告案例分析集
- 护理课件评估的量化与质性方法
- 危重患者血糖监测与管理
- 医护护理伦理与实践
- 护理人员职业发展规划
- 税务稽查2026年鉴定合同协议
- 2025年湖南中烟考试笔试及答案
- 主题一 学生实验 化学实验基本操作(课件)-【中职专用】高中化学同步课堂(高教版2023·农林牧渔类)
- 2026年度交通运输部所属事业单位第三批统一公开招聘参考考试试题及答案解析
- 雨课堂学堂在线学堂云商务英语翻译(Business English Translation Interpretation)西北工业大学单元测试考核答案
- 2025年人工智能数据中心建设项目可行性研究报告
- 分众化健康传播:不同人群的科普策略
- 高值耗材销售管理制度(3篇)
- 2025医疗器械验证和确认管理制度
- 《交易心理分析》中文
- 2025年驻马店职业技术学院单招(计算机)测试模拟题库及答案解析(夺冠)
- 2025年专升本产品设计专业产品设计真题试卷(含答案)
评论
0/150
提交评论