家庭收支信息管理设计

abcdefghijkln_ 2019-03-11 12:34:00
家庭收支信息包括:收支类别(收入或支出)、金额、收入来源、消费种类(教育、日常生活、旅游、看病等)、经手人、备注等。试设计一家庭收支信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作,可以循环显示菜单,直至选择退出系统,才结束整个程序的运行 2、家庭收支信息录入功能 3、家庭收支信息浏览功能 4、家庭收支信息查询功能 实现两种查询方式: 按收支类别查询 按消费种类查询 5、家庭收支信息的删除与修改
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcdefghijkln_ 2019-03-11
  • 打赏
  • 举报
回复
break; case 2: qsort(s,i,sizeof(s[0]),cmp6); break; default: printf("输入错误,按照默认排序输出\n"); } int balance = 0;///余额 for(j=0; j<i; j++) { Print(s[j]); if(s[j].kind) balance -= s[j].amount; ///计算余额 else balance += s[j].amount; } printf("余额为:%5d\n",balance); int juge; ///下一步操作 next1: printf("返回主菜单请输入0\n"); printf("返回上一菜单请输入1\n"); scanf("%d",&juge); if(juge==1) //判断是不是输入错误 goto next; else if (juge != 0) { printf("输入错误,请重新输入\n"); goto next1; } return; } void Add() { Home s; int flag;///判断要写入的数据种类 FILE *f; while(1) { system("cls"); printf("请输入要输入的数据种类:\n0.收入 1.支出 2.停止输入\n"); scanf("%d",&flag); if(flag == 1) { f = fopen("expenditure.txt","ab+"); s.kind = 1; } else if(flag == 0) { f = fopen("income.txt","ab+"); s.kind = 0; } else { if(flag!=2) printf("输入错误请重新输入\n"),Sleep(1000); else break; continue; } fseek(f, 0, SEEK_END); ///将文件指针移到文件末尾,方便追加输入 if(f == NULL) printf("打开失败\n"); else { printf("请按照家庭收支编号(请注意保证编号唯一) 经办人 原因 金额 备注的格式写入"); printf("\n中间用空格隔开,如果没有备注请在备注栏写无,其他栏同理\n"); scanf("%d%s%s%d%s",&s.id,s.person,s.result,&s.amount,s.tips); if(fwrite(&s,sizeof(Home),1,f)!=1)///将一个结构体以二进制写入文件 printf("保存失败"); else printf("录入成功"); Sleep(1000); } fclose(f); } } void Input() { revert: system("cls"); ///清屏函数 printf("*************家庭收支管理系统*************\n"); printf("请按快捷键进行以下操作:\n"); printf("1 添加家庭收支信息\n"); printf("2 浏览所有家庭收支信息\n"); printf("3 按照不同字段查询家庭收支信息\n"); printf("4 修改家庭收支信息\n"); printf("5 退出系统\n"); printf("6 重置系统\n"); int input; scanf("%d",&input); switch(input) { case 1: Add(); break; case 2: Watch(); break; case 3: Find(); break; case 4: Change(); break; case 5: return; case 6: Init(); break; default: printf("输入错误,请重新输入\n"); Sleep(1000); ///消息框延迟1000ms显示 } goto revert; } int cmp1(const void *a,const void *b) { Home *c = (Home*)a; Home *d = (Home*)b; return c->id-d->id; } int cmp2(const void *a,const void *b) { Home *c = (Home*)a; Home *d = (Home*)b; return c->kind-d->kind; } int cmp3(const void *a,const void *b) { Home *c = (Home*)a; Home *d = (Home*)b; return strcmp(c->person,d->person); } int cmp4(const void *a,const void *b) { Home *c = (Home*)a; Home *d = (Home*)b; return c->result-d->result; } int cmp5(const void *a,const void *b) { Home *c = (Home*)a; Home *d = (Home*)b; return c->amount-d->amount; } int cmp6(const void *a,const void *b) { Home *c = (Home*)a; Home *d = (Home*)b; return strcmp(c->tips,d->tips); } void Find() { FILE *fin = fopen("income.txt","rb"); FILE *fout = fopen("expenditure.txt","rb");///收入和支出的文件指针 Class s[maxn]; int i,j; for(i=0; fread(&s[i],sizeof(Home),1,fin); i++) s[i].kind = 0; for(j=0; fread(&s[i],sizeof(Home),1,fout); j++) s[i].
abcdefghijkln_ 2019-03-11
  • 打赏
  • 举报
回复
#include <stdio.h> #include <stdlib.h> #include <windows.h> ///消息窗口处理的头文件,此源码只使用了其中的Sleep函数和清屏函数 #include <string.h> ///字符串处理的头文件 #define maxn 500 typedef struct Home { int id; //id int kind; //收入\支出 char person[maxn]; //经手人 char result[maxn]; //收入来源 int amount; //数额 char tips[maxn]; //备注 } Class; void Print(Class s) { ///对内容进行输出 printf("%5d%20d%20s%20s%20d%20s\n",s.id,s.kind,s.person,s.result,s.amount,s.tips); }; void Init(); void Watch(); ///浏览 void Add(); ///添加 void Find(); ///查找 void Change(); ///修改 void Find1(int,Home*,int); //查找id void Find2(int,Home*,int); //查找收入\输出,下面函数同理 void Find3(int,Home*,char*); void Find4(int,Home*,char*); void Find5(int,Home*,int); void Input(); ///输入 int cmp1(const void*,const void*); int cmp2(const void*,const void*); int cmp3(const void*,const void*); int cmp4(const void*,const void*); int cmp5(const void*,const void*); int cmp6(const void*,const void*); int main() { Input(); return 0; } void Init(){ printf("请注意,该操作将会清空收支信息!\n"); Sleep(1000); printf("1.执行\n2.返回主菜单\n"); int flag; scanf("%d",&flag); if(flag==1){ FILE *fin = fopen("income.txt","wb"); ///用wb方式打开又关闭文件可生成此文件/// FILE *fout = fopen("expenditure.txt","wb"); fclose(fin); fclose(fout); printf("重置成功!\n"); Sleep(1000); return; } else if(flag==2) return; else printf("输入有误,默认返回主菜单\n"); Sleep(1000); return; } void Change() { FILE *fin = fopen("income.txt","rb"); FILE *fout = fopen("expenditure.txt","rb"); FILE *f; Class s[maxn]; int i,j; for(i=0; fread(&s[i],sizeof(Home),1,fin); i++); for(j=0; fread(&s[i],sizeof(Home),1,fout); j++); fclose(fin); fclose(fout); i += j; int id; int flag = 0; printf("请输入ID:\n"); scanf("%d",&id); for(j=0; j<i; j++) if(s[j].id == id) { flag = 1; break; } printf(flag?"请按照经办人 收入(0)/支出(1) 原因 金额 备注的格式写入信息,写入后此ID所对应的信息为此时输入的内容\n":"该ID不存在\n"); Sleep(1000); if(!flag) return; scanf("%s %d %s %d %s",s[j].person,&s[j].kind,s[j].result,&s[j].amount,s[j].tips); fin = fopen("income.txt","wb"); fout = fopen("expenditure.txt","wb"); fclose(fin); fclose(fout); for(j=0; j<i; j++) { if(s[j].kind == 1) { f = fopen("expenditure.txt","ab+"); } else f = fopen("income.txt","ab+"); fwrite(&s[j],sizeof(Home),1,f); fclose(f); } printf("修改成功,1S后返回上一菜单\n"); Sleep(1000); } void Watch() { system("cls"); FILE *fin = fopen("income.txt","rb"); FILE *fout = fopen("expenditure.txt","rb");///收入和支出的文件指针 Class s[maxn]; int i,j; for(i=0; fread(&s[i],sizeof(Home),1,fin); i++)///无限读取,直到文件读完为止,fread当文件已经读完或者读到EOF的时候返回0,这个式子才不成立,循环跳出 s[i].kind = 0; for(j=0; fread(&s[i],sizeof(Home),1,fout); j++) s[i].kind = 1; fclose(fin); fclose(fout); i += j; ///此时i为收入和支出的总次数 next: system("cls"); printf("请输入浏览方式:\n"); printf("1.按收支类别排序\n"); printf("2.按消费种类排序\n"); int n; ///输入排序方式 scanf("%d",&n); switch(n) { case 1: qsort(s,i,sizeof(s[0]),cmp4); break; case 2: qsort(s,i,sizeof(s[0]),cmp6); break; default: printf("输入错误,按照默认排序输出
【资源说明】 基于java+SSM家庭财务收支管理系统的设计与实现 毕业设计源码+数据库+使用文档+全部资料(高分优秀项目).zip基于java+SSM家庭财务收支管理系统的设计与实现 毕业设计源码+数据库+使用文档+全部资料(高分优秀项目).zip基于java+SSM家庭财务收支管理系统的设计与实现 毕业设计源码+数据库+使用文档+全部资料(高分优秀项目).zip基于java+SSM家庭财务收支管理系统的设计与实现 毕业设计源码+数据库+使用文档+全部资料(高分优秀项目).zip 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧