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

合集下载

个人财务管理系统源代码

个人财务管理系统源代码

for(i=0;i<DEAL;i++)
{
if((per+i)->dt.da_year != year)continue;
sum1 += (per+i)->earning;
sum2 += (per+i)->payout;
}
printf("%d 年信息如下 : ",year);
{
printf("%d/%d/%d ",(per+i)->dt.da_year,
(per+i)->dt.da_mon,(per+i)->dt.da_day);
printf("%d:%d:%d :",(per+i)->ti.ti_hour,
(per+i)->ti.ti_min,(per+i)->ti.ti_sec);
per->ti.ti_sec = sys.wSecond;
printf("%d/%d/%d :",per->dt.da_year,per->dt.da_mon,
per->dt.da_day);
printf("%d:%d:%d :",per->ti.ti_hour,per->ti.ti_min,
switch(key)
{
case '1': InputOneDeal(person+i);
i++;
break;
case '2': PrintBalance(person);

个人记账管理数据库系统的实现代码

个人记账管理数据库系统的实现代码
(姓名 char(20),
项目编号 char(20),
金额 float(2),
次数 int,
时间 smalldatetime,
primary key(姓名,项目编号));
select *
from 人员
Байду номын сангаас
select *
from 项目
select *
from 支出
select *
where 姓名='费翔' --删除数据
create view Sub_N
as select 姓名,地位,职业
from 人员
where 姓名='施展'
create view N_Avg(姓名,Avg)
as select 姓名,Avg(金额)
from 收入
group by 姓名
create database 个人记账
create table 人员
(姓名 char(20) primary key,
地位 char(20),
年龄 smallint,
职业 char(20),
性别 char(2))
create table 项目
(项目编号 char(4) primary key,
项目名称 char(20) unique,
项目类型 char(10));
create table 支出
(姓名 char(20),
项目编号 char(20),
金额 float(2),
次数 int,
时间 smalldatetime,
primary key(姓名,项目编号));

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)!=1llselected<0llselected>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("|合计收入|合计支出| 结余printf("+|\n");---------------- + ------- + -------- +\n");printf("l%12.2fl%12.2fl%12.2fl\n", total_income, total_payout,total_income - total_payout); printf("+ ------- + -------- + ------- +\n");printfC、按任意键继续返回主菜单…) 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) {printfC、请输入要查询的年月(例如:2009/1)"); if(scanf("%d/%d”,&year,&month)!=2) { printf(">输入错误。

C++个人银行账户管理系统

C++个人银行账户管理系统

存平均年中的某个月 1 日前有多少天,为了便于 getMaxDay 函数的实现,该数组多出一项
}
Date::Date(int year,int month,int day):year(year),month(month),day(day) {
if(day<=0||day>getMaxDay()) {
using namespace std;
Jiemian M; Jiemian::MX x[1000]; Ka K;
char a[10],b[10],c[18],d[10],e[10],f[10],a3[10],aa1[10],bb1[10],bb2[10],bb3[10];
void Jiemian::mx1(char a[],char b[],double i,double j,double m) {
//该日期是从公元元年 1 月 1 日开始的第几天
public:
Date(int year,int month,int day); //用年月日构造日期
int getYear() const
{
return year;
}
int getMonth() const
{
return month;
}
int getDay() const
int Date::getMaxDay() const {
if(isLeapYear()&&month==2) return 29;
else return DAYS_BEFORE_MONTH[month]-DAYS_BEFORE_MONTH[month-1];
}
void Date::show() const {

C语言家庭财务管理系统

C语言家庭财务管理系统
do
{
n=scanf("%s %s %f",J[i].rq,J[i].zy,&J[i].xf);
if(J[i]Biblioteka xf==0)break;/*收入和支出为0则退出*/
if(n==3)i++;
}
while(n==3);
N=i; /*修改家庭财务信息记录数*/
}
void SaveJ(char file[])/*保存家庭财务信息关系*/
{
int n,i=0;
FILE *fp=fopen("JTCWGLXT.txt","r");
char s[80];fgets(s,80,fp);
do
{
n=fscanf(fp,"%s %s %f %f",J[i].rq,J[i].zy,&J[i].xf,&J[i].ye);
if(n==4)i++;/*若读到4个数据则i加1*/
}
while(n==4);
fclose(fp);
return i;
}
void DispJ()/*显示家庭财务信息*/
{
int i;
printf("%s %8s %8.2f%8.2f\n",J[0].rq,J[0].zy,J[0].xf,J[0].ye);
for(i=1;i<N;i++)
printf("%s %8s %8.2f%8.2f\n",J[i].rq,J[i].zy,J[i].xf,J[i-1].ye+J[i].xf);
fprintf( fp,"%s %8s %8.2f%8.2f\n",J[i].rq,J[i].zy,J[i].xf,J[i-1].ye+J[i].xf);

CC++实现个人收支系统的示例代码

CC++实现个人收支系统的示例代码

CC++实现个⼈收⽀系统的⽰例代码昨天朋友委托我做⼀个基于C++的课程⼩设计,题⽬如下:设计⼀个简单的个⼈收⽀管理系统,⾄少包括如下功能:1、逐笔输⼊个⼈收⼊或⽀出的明细,写⼊到⽂件保存,可不断进⾏输⼊和追加。

输⼊的明细数据包括:收⽀明细类别编码、发⽣⽇期、⾦额、备注。

1)为了简化⽤户的输⼊,类别编码由字母和数字构成:“a”表⽰收⼊、“b”表⽰⽀出,数字是⼤类下的编号。

类别编码及类别名称的对应由⾃⼰定义、组织在程序中并输出展⽰。

⽐如 a1 表⽰收⼊类的⽣活费,b1 表⽰⽀出类的学习,编号依次递增,类别的数量和名称根据⽇常需要⾃拟。

例如:收⼊类:a1‐⽣活费,a2‐奖学⾦,a3‐稿费⽀出类:b1‐学习⽤品,b2‐⽣活⽤品,b3‐游戏2)⽤户输⼊收⽀明细,具体的输⼊格式如下(各数据⽤⼀个或多个连续空格分隔,直接输⼊回车表⽰输⼊结束):请逐笔输⼊类别编码、发⽣⽇期、⾦额、备注:输⼊收⽀明细:a1 2020‐1‐26 2000.0 1 ⽉⽣活费输⼊收⽀明细:b1 2020‐3‐9 52.5 买书…输⼊收⽀明细:b2 2020‐5‐9 78.00 购买台灯3)将输⼊的明细数据写⼊到⼀个⽂件中进⾏保存,便于以后进⾏追加和处理。

2、根据⽇常对个⼈收⽀管理的需要,完成汇总,进⾏功能设计和编码实现。

需要统计并输出⽤户所输⼊⽉份各收⽀类别的汇总情况,输出后,再次询问⽤户是否输出该⽉的各笔明细,⽤户回答是,则按明细类别的升序输出;回答否,则不输出。

输⼊和输出结果如下:请输⼊对收⽀类别数据进⾏汇总的⽉份:2020‐32020 年 3 ⽉收⽀类别数据的汇总收⼊/⽀出明细类别⾦额收⼊⽣活费 2000…⽀出学习⽤品 200…2020 年 3 ⽉的总收⼊为:1500,总⽀出为:1200是否输出该⽉的各笔明细(y 为输出,其他为不输出):y2020 年 3 ⽉收⽀类别数据的明细类别收⼊/⽀出发⽣⽇期⾦额备注⽣活费收⼊ 2020‐03‐01 2000.0 3 ⽉⽣活费学习⽤品⽀出 2020‐03‐03 10.0 买钢笔…⾃⼰敲了⼀遍,具体实现如下:#include <iostream>#include <stdlib.h>#include <string.h>#define MAX_MARK 100using namespace std;struct Pay{char payment[2];int inout;int year;int month;int day;int money;char mark[MAX_MARK];}ioi;/*⽇期,收⼊/⽀出⾦额收⼊来源/⽀出⽬的*/void displayMenu(){cout <<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;cout <<"+ 个⼈收⽀管理系统 +"<<endl;cout <<"+ 1. 添加收⽀ +"<<endl;cout <<"+ 2. 查找收⽀ +"<<endl;cout <<"+ 3. 统计收⽀ +"<<endl;cout <<"+ 4. 输出⽂件 +"<<endl;cout <<"+ 5. 结束程序 +"<<endl;cout <<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;}int addPayment(Pay ioi[],int num){char tempPayment[3];cout <<"请逐笔输⼊类别编码、发⽣⽇期、⾦额、备注"<<endl;cout <<"输⼊收⽀明细:";scanf("%s %d-%d-%d %d %s",ioi[num].payment,&ioi[num].year,&ioi[num].month,&ioi[num].day,&ioi[num].money,ioi[num].mark); if(ioi[num].payment[0]=='a'){ioi[num].inout = 1;}else{ioi[num].inout = 0;}num++;return num;};void findPayment(Pay ioi[],int num){int kind;int i;int flag=0;int tempMonth=0,tempYear=0;cout <<"请输⼊想要查找的⽬标(1为年⽉,2为类别):"<<endl;cin >> kind;if(kind == 1){cout << "请输⼊查找的年⽉(XXXX-XX):";scanf("%d-%d",&tempYear,&tempMonth);for(i=0;i<num;i++){if(ioi[i].year==tempYear && ioi[i].month== tempMonth){cout << "找到了!";if(ioi[i].inout == 1){cout <<"收⼊ ";}if(ioi[i].inout == 0){cout <<"⽀出 ";}cout <<ioi[i].money;cout << '\t';cout <<ioi[i].mark<<endl;}}}char tempPayment[2];if(kind == 2){cout <<"请输⼊查找的类别:";cin >> tempPayment;for(i=0;i<num;i++){if(ioi[i].payment[0] == tempPayment[0] && ioi[i].payment[1] == tempPayment[1]){cout <<"找到了!";if(ioi[i].inout == 1){cout <<"收⼊ ";}if(ioi[i].inout == 0){cout <<"⽀出 ";}cout <<ioi[i].money;cout << '\t';cout <<ioi[i].mark<<endl;}}}};void sumPayment(Pay ioi[],int num){int i;int sumYear=0;int sumMonth=0;int judge=0;cout <<"请输⼊对收⽀类别数据进⾏汇总的⽉份:";scanf("%d-%d",&sumYear,&sumMonth);printf("%d年%d⽉收⽀类别数据的汇总:\n",sumYear,sumMonth);cout << "收⽀\t明细\t⾦额" <<endl;for(i=0;i<num;i++){if(ioi[i].year==sumYear && ioi[i].month==sumMonth){if(ioi[i].inout == 1){cout <<"收⼊ ";}if(ioi[i].inout == 0){cout <<"⽀出 ";}cout <<ioi[i].money;cout << '\t';cout <<ioi[i].mark<<endl;}}int sumIn=0,sumOut=0;for(i=0;i<num;i++){if(ioi[i].inout == 1){sumIn+= ioi[i].money;}if(ioi[i].inout == 0){sumOut+= ioi[i].money;}}printf("%d年%d⽉的总收⼊为:%d 总⽀出为:%d\n",sumYear,sumMonth,sumIn,sumOut); cout <<"是否输出各笔明细:(是1否0):";cin >>judge;if(judge==1){printf("%d年%d⽉收⽀类别数据的明细:\n",sumYear,sumMonth);cout <<"类别\t收⼊\t⽀出\t发⽣⽇期\t⾦额\t备注"<<endl;for(i=0;i<num;i++){if(ioi[i].payment[0] == 'a' &&ioi[i].payment[0] == '1')cout <<"⽣活费 ";if(ioi[i].payment[0] == 'a' &&ioi[i].payment[0] == '2')cout <<"奖学⾦ ";if(ioi[i].payment[0] == 'a' &&ioi[i].payment[0] == '3')cout <<"稿费 ";if(ioi[i].payment[0] == 'b' &&ioi[i].payment[0] == '1')cout <<"学习⽤品 ";if(ioi[i].payment[0] == 'b' &&ioi[i].payment[0] == '2')cout <<"⽣活⽤品 ";if(ioi[i].payment[0] == 'b' &&ioi[i].payment[0] == '3')cout <<"游戏 ";if(ioi[i].inout == 1){cout <<"收⼊\t";}if(ioi[i].inout == 0){cout <<"⽀出\t";}cout <<ioi[i].money;cout << '\t';cout <<ioi[i].mark<<endl;}}};void writeFile(Pay ioi[]){FILE *fp=NULL;int i=0;fp=fopen("payment.txt","wb");if(fp==NULL){cout <<"打开⽂件出错!"<<endl;exit(0);}fwrite(&ioi,sizeof(struct Pay),1,fp);cout <<"信息已保存到⽂payment.txt中"<<endl;fclose(fp);};void sortMoney(Pay ioi[],int length) //冒泡排序{int i=0,j=0,k=0;Pay temp;for(i=0;i<length;i++){k=i;for(j=i+1;j<length;j++)if(ioi[j].money>ioi[k].money)k=j;temp=ioi[k];ioi[k]=ioi[i];ioi[i]=temp;}}int main(){int allNum=0;int choice=0;struct Pay ioi[50];while(1){displayMenu();cout<<"请选择您的操作(1,2,3,4,5)"<<endl;cin>>choice;switch(choice){case 1:allNum = addPayment(ioi,allNum);break;case 2:findPayment(ioi,allNum);break;case 3:sortMoney(ioi,allNum);sumPayment(ioi,allNum);break;case 4:writeFile(ioi);break;case 5:exit(0);break;default:cout<<"输⼊不合法,重新输⼊"<<endl;break;}}}总结到此这篇关于C/C++实现个⼈收⽀系统的⽰例代码的⽂章就介绍到这了,更多相关c++ 个⼈收⽀系统内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

C语言家庭财务管理系统代码

C语言家庭财务管理系统代码

#include <stdio.h>#include <stdlib.h>#include <string.h>struct Data{char name[20];char riqi[8];float money;char beizhu[50];};struct list{struct Data info;struct list *next;};struct list *Inhead=NULL;struct list *Intail=NULL;struct list *zhichuhead=NULL;struct list *zhichutail=NULL;struct list *temp=NULL;void chaxun_income();void chaxun_zhichu();void xiugai_income();void xiugai_zhichu();void Save_income(){FILE *fp;fp=fopen("D:\家庭财务管理.txt","w");struct list *p = Inhead;while(p != NULL){fwrite(&p->info, sizeof(struct Data), 1, fp);p = p->next;}fclose(fp);}void Save_zhichu(){FILE *fp;fp=fopen("D:\家庭财务管理支出.txt","w");struct list *p = zhichuhead;while(p != NULL){fwrite(&p->info, sizeof(struct Data), 1, fp);p = p->next;}fclose(fp);}void Open(){FILE *fp;fp=fopen("D:\家庭财务管理.txt","r");if(fp!=NULL){struct Data linshi;while(fread(&linshi, sizeof(struct Data), 1, fp) == 1){temp=(struct list*)malloc(sizeof(struct list));temp->info=linshi;temp->next=NULL;if(Inhead == NULL){Inhead = temp;Intail = temp;}else{Intail->next = temp;Intail = temp;}}fclose(fp);}}void Menu(){ system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1:收入操作\n");printf(" 2:支出操作\n");printf(" 3:统计操作\n");printf(" 0:退出\n");}void Openzhichu(){FILE *fp;fp=fopen("D:\家庭财务管理支出.txt","r");if(fp!=NULL){struct Data linshi;while(fread(&linshi, sizeof(struct Data), 1, fp) == 1){temp=(struct list*)malloc(sizeof(struct list));temp->info=linshi;temp->next=NULL;if(zhichuhead == NULL){zhichuhead = temp;zhichutail = temp;}else{zhichutail->next = temp;zhichutail = temp;}}fclose(fp);}}void mingzi (){char chazhao[20];printf("请输入查询的名字");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void mingzi_zhichu (){char chazhao[20];printf("请输入查询的名字");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void mingzi_xiugai_income(){char xiugai[20];printf("请输入修改的名字");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void mingzi_xiugai_zhichu(){char xiugai[20];printf("请输入修改的名字");fflush(stdin);gets(xiugai);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void riqi(){char chazhao[20];printf("请输入查询的日期");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.riqi,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void riqi_zhichu(){char chazhao[20];printf("请输入查询的日期");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.riqi,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void riqi_xiugai_income(){char xiugai[20];printf("请输入修改的日期");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.riqi,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void riqi_xiugai_zhichu(){char xiugai[20];printf("请输入修改的日期");fflush(stdin);gets(xiugai);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.riqi,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void money (){float chazhao;printf("请输入查询的money");scanf("%f",&chazhao);fflush(stdin);struct list *p = Inhead;while(p != NULL){if(p->info.money==chazhao){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void money_zhichu (){float chazhao;printf("请输入查询的money");scanf("%f",&chazhao);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(p->info.money==chazhao){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void money_xiugai_income(){float xiugai;printf("请输入修改的money");scanf("%f",&xiugai);fflush(stdin);struct list *p = Inhead;while(p != NULL){if(p->info.money==xiugai){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void money_xiugai_zhichu(){float xiugai;printf("请输入修改的money");scanf("%f",&xiugai);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(p->info.money==xiugai){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void beizhu(){char chazhao[20];printf("请输入查询的备注");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.beizhu,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void beizhu_zhichu(){char chazhao[20];printf("请输入查询的备注");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.beizhu,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void beizhu_xiugai_income(){char xiugai[20];printf("请输入修改的备注");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.beizhu,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void beizhu_xiugai_zhichu(){char xiugai[20];printf("请输入修改的备注");fflush(stdin);gets(xiugai);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.beizhu,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void Income_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.添加收入\n");printf(" 2.删除收入\n");printf(" 3.查询收入\n");printf(" 4.显示收入\n");printf(" 5.修改收入\n");printf(" 0.返回上一级\n");}void zhichu_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.添加支出\n");printf(" 2.删除支出\n");printf(" 3.查询支出\n");printf(" 4.显示支出\n");printf(" 5.修改支出\n");printf(" 0.返回上一级\n");}void chaxun_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.按名字查询\n");printf(" 2.按日期查询\n");printf(" 3.按money询\n");printf(" 4.按备注查询\n");printf(" 0.返回上一级\n"); }void xiugai_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.按名字修改\n");printf(" 2.按日期修改\n");printf(" 3.按money修改\n");printf(" 4.按备注修改\n");printf(" 0.返回上一级\n");}void Add_income(){char panduan;do{temp=(struct list*)malloc(sizeof(struct list));printf("姓名");gets(temp->);fflush(stdin);printf("日期(XX年XX月XX日)");gets(temp->info.riqi);fflush(stdin);printf("收入");scanf("%f",&temp->info.money);fflush(stdin);printf("备注");gets(temp->info.beizhu);fflush(stdin);printf("\n");//------自己添加temp->next=NULL;if(Inhead == NULL){Inhead = temp;Intail = temp;}else{Intail->next = temp;Intail = temp;}Save_income();//后面可以添加“继续添加功能”printf("是否(Y/N)继续添加信息\n");panduan=getchar();fflush(stdin);}while(panduan=='Y'||panduan=='y');system("PAUSE");}void Add_zhichu(){char panduan;do{temp=(struct list*)malloc(sizeof(struct list));printf("姓名");gets(temp->);fflush(stdin);printf("日期(XX年XX月XX日)");gets(temp->info.riqi);fflush(stdin);printf("支出");scanf("%f",&temp->info.money);fflush(stdin);printf("备注");gets(temp->info.beizhu);fflush(stdin);printf("\n");//------自己添加temp->next=NULL;if(zhichuhead == NULL){zhichuhead = temp;zhichutail = temp;}else{zhichutail->next = temp;zhichutail = temp;}Save_zhichu();//后面可以添加“继续添加功能”printf("是否(Y/N)继续添加信息\n");panduan=getchar();fflush(stdin);}while(panduan=='Y'||panduan=='y');system("PAUSE");}void Del_income(){char shanchu[20];struct list *p=NULL;struct list *m =NULL;struct list *n =NULL;p=Inhead;printf("请输入删除姓名");gets(shanchu);if(strcmp(Inhead->,shanchu)==0){while(Inhead!=NULL && strcmp(Inhead->,shanchu)==0) {char ch;printf("找到一个数据名字为%s,确认删除Y/N?",shanchu);ch=getchar();fflush(stdin);if(ch=='y'||ch=='Y') Inhead=Inhead->next;else break;}}else{if(strcmp(Intail->,shanchu)==0){do{ m=p;p=p->next;}while(p!=Intail);m->next=NULL;}//删除尾巴else{do{m=p;p=p->next;n=p->next;}while(strcmp(p->,shanchu)!=0&&n->next!=NULL);if(strcmp(p->,shanchu)==0)m->next=n;}}//删除除头节点之外的节点,自己课后完成Save_income();if(Inhead!=NULL){char panduan;printf("是否继续删除(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){Del_income();}}}void Del_zhichu(){char shanchu[20];struct list *p=NULL;struct list *m =NULL;struct list *n =NULL;p=zhichuhead;printf("请输入删除姓名");gets(shanchu);if(strcmp(zhichuhead->,shanchu)==0){while(zhichuhead!=NULL && strcmp(zhichuhead->,shanchu)==0) {char ch;printf("找到一个数据名字为%s,确认删除Y/N?",shanchu);ch=getchar();fflush(stdin);if(ch=='y'||ch=='Y') zhichuhead=zhichuhead->next;else break;}}else{if(strcmp(zhichutail->,shanchu)==0){do{ m=p;p=p->next;}while(p!=zhichutail);m->next=NULL;}//删除尾巴else{do{m=p;p=p->next;n=p->next;}while(strcmp(p->,shanchu)!=0&&n->next!=NULL);if(strcmp(p->,shanchu)==0)m->next=n;}}Save_zhichu();//删除除头节点之外的节点,自己课后完成if(zhichuhead!=NULL){char panduan;printf("是否继续删除(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){Del_zhichu();}}}void xiugai_income(){xiugai_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_xiugai_income();break;case 2: riqi_xiugai_income();break;case 3: money_xiugai_income();break;case 4: beizhu_xiugai_income();break;default: printf("输入错误");break;}}void xiugai_zhichu(){xiugai_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_xiugai_zhichu();break;case 2: riqi_xiugai_zhichu();break;case 3: money_xiugai_zhichu();break;case 4: beizhu_xiugai_zhichu();break;default: printf("输入错误");break;}}void chaxun_income(){chaxun_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi();break;case 2: riqi();break;case 3: money();break;case 4: beizhu();break;default: printf("输入错误");break;}}void chaxun_zhichu(){chaxun_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_zhichu();break;case 2: riqi_zhichu();break;case 3: money_zhichu();break;case 4: beizhu_zhichu();break;default: printf("输入错误");break;}}void Sho_income(){struct list *p = Inhead;while(p != NULL){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);p = p->next;}system("PAUSE");}void Sho_zhichu(){struct list *p = zhichuhead;while(p != NULL){fflush(stdin);printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("支出:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);p = p->next;}system("PAUSE");}void Income(){int choice;while(1){Income_menu();printf("请输入选择");scanf("%d",&choice);fflush(stdin);if(choice==0){break;}elseswitch(choice){case 1: Add_income(); Save_income();break;case 2: Del_income(); Save_income();break;case 3: chaxun_income(); Save_income();break;case 4: Sho_income(); Save_income();break;case 5: xiugai_income(); Save_income();break;}}}void zhichu(){int choice;while(1){zhichu_menu();printf("请输入选择");scanf("%d",&choice);fflush(stdin);if(choice==0){break;}elseswitch(choice){case 1: Add_zhichu(); Save_zhichu();break;case 2: Del_zhichu(); Save_zhichu();break;case 3: chaxun_zhichu(); Save_zhichu();break;case 4: Sho_zhichu(); Save_zhichu();break;case 5: xiugai_zhichu(); Save_zhichu();break;}}}void tongji_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.总收入\n");printf(" 2.总支出\n");printf(" 3.总资金\n");printf(" 0.返回上一级\n");}void zongshouru(){float shouru=0;struct list *linshi;linshi=Inhead;if(linshi!=NULL){do{shouru=linshi->info.money+shouru;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",shouru);system("PAUSE");}}void zongzhichu(){float zhichu=0;struct list *linshi;linshi=zhichuhead;if(linshi!=NULL){do{zhichu=linshi->info.money+zhichu;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",zhichu);system("PAUSE");}}void zongzijin(){float zhichu=0;float zongzijin;struct list *linshi;linshi=zhichuhead;if(linshi!=NULL){do{zhichu=linshi->info.money+zhichu;linshi=linshi->next;}while(linshi!=NULL);}float shouru=0;linshi=Inhead;if(linshi!=NULL){do{shouru=linshi->info.money+shouru;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",shouru-zhichu);system("PAUSE");}}void Tongji(){while(1){tongji_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==0){break;}switch(choice){case 1: zongshouru();break;case 2: zongzhichu();break;case 3: zongzijin();break;default: printf("输入错误");break;}}}void Quit(){char panduan;printf("确认退出(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){exit(0);}}int main(){Open();Openzhichu();system("color 72");while(1){Menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: Income();break;case 2: zhichu();break;case 3: Tongji();break;case 0: Quit();break;default: printf("输入错误");break;}}return 0;}。

C语言个人收支系统

C语言个人收支系统

#include"stdio.h"#include "string.h"#define M 100struct stu{char user[10]; //用户名char cipher[10]; //密码struct Income;struct Expense;};struct Income{float gongzi;float jiangjin;float jintie;float zhongjiang;float total1;};struct Expense{float shuidian;float tongxun;float huoshi;float jiaoji;float lvyou;float fangzu;float total2;};char user[][10]={"liwenjian", "wangsiyao"," wuchao"},cipher[][6]={"123","456" ,"789"};int index=0;int enter(struct stu s[],struct Income I[],struct Expense E[]);void print(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); void search(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); int insert(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); int del(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); void save(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); int load(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); void modify(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); void sort(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); int menu();int main(){struct stu person[M];int length;for(;;)switch(menu()) //调用主菜单函数,返回值为整数,作开关语句的条件 {case 1: length=enter(person);break; //输入记录case 2: print(person,length); break; //显示全部记录case 3: search(person,length); break; //查找记录case 4: length=insert(person,length); break; //插入记录 case 5: length=del(person,length); break; //删除记录case 6: save(person,length); break; //保存文件case 7: length=load(person); break; //读文件case 8: sort(person,length); break; //排序case 9: modify(person,length); break; //修改记录信息case 10: return 0; //如果菜单返回值为10,则程序结束 }}int menu(){int choice;printf(" MENU\n");printf(" *********************************\n");printf(" 1. 输入有户名及密码\n"); //输入记录printf(" 2. 显示所有记录\n" ); // 显示所有记录 printf(" 3. 按用户名查找记录\n"); //按用户名查找记录printf(" 4. 插入记录\n"); //插入记录到数组中printf(" 5. 删除记录");printf(" 6. 保存文件\n"); //将数组中的记录保存到文件中 printf(" 7. 从文件中读文件\n"); //从文件中读入记录printf(" 8. 排序\n"); //排序printf(" 9. 修改记录信息\n"); //修改记录信息printf(" 10.退出\n"); //退出printf(" *********************************\n");do{printf("\n 输入选项(1-10):");scanf("%d",&choice); //以整型数的形式保存选择号}while(choice<1 || choice>10); //选择项不在1~10之间,重新选择return choice; //返回选择项,主程序根据该返回值调用相应的函数}int enter(struct stu s[]){ int i=0,n=0,j;//char user[][10]={"liwenjian", "wangsiyao"," wuchao"},cipher[][6]={"123","456" ,"789"};do{printf("请输入用户名及密码:\n");scanf("%s%s",s[index].user,s[index].cipher);for(j=0;j<3;j++)if(strcmp(s[index].user,user[j])==0 && strcmp(s[index].cipher,cipher[j])==0) break;if(j==3){printf("用户名及密码错误!\n");n++;}}while(n<3);if(n==3)return 0;//input other termprintf("收入信息");printf("工资");scanf("%f",struct Income I[i].gongzi);printf("奖金");scanf("%f",struct Income I[i].jiangjin);printf("津贴");scanf("%f",struct Income I[i].jintie);printf("中奖");scanf("%f",struct Income I[i].zhongjiang);printf("支出信息");printf("水电");scanf("%f",struct Expense E[i].shuidian);printf("通讯");scanf("%f",struct Expense E[i].tongxun);printf("伙食");scanf("%f",struct Expense E[i].huoshi);printf("交际");scanf("%f",struct Expense E[i].jiaoji);printf("旅游");scanf("%f",struct Expense E[i].lvyou);printf("房租");scanf("%f",struct Expense E[i].fangzu);struct I;[i]total1==struct Income I[i].gongzi+struct Income I[i].jiangjin+struct Income I[i].jintie+struct Income I[i].zhongjiang;struct E;[i]total2==struct Expense E[index].shuidian+struct Expense E[index].tongxun+struct Expense E[index].huoshi+struct Expense E[index].jiaoji+struct Expense E[index].lvyou+struct Expense E[index].fangzu;index++;return index;}//显示信息void print(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c);{int i;printf(" 用户信息");printf("\n******************************************************************************\n ");printf(" | 用户 |工资|奖金|津贴|中奖|收入总和|水电|通讯|伙食|交际|旅游|房租|支出总和|\n");printf("|-------|----|----|----|----|--------|----|----|----|----|----|----|--------|\n" );printf("|%-8s|%-8f|%-8f|%-4f|%-4f|%-8f|%-8f|%-8f|%-4f|%-4f|%-8f|%-4f|%-8f|",s[i].user,I[ i].jiangjin,I[i].jintie,I[i].zhongjiang,I[i].total1I[i].jiangjin,I[i].jintie,I[i].zhongjiang,I[i].total1E[i].shuidian,E[i].tongxun,E[i].huoshi,E[i].jiaoji,E[i].lvyou,E[i].fangzu,E[i].total2printf("******************************************************************************\n ");getchar();}/*按用户查找记录信息*/void search(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); {char user[]; //存放姓名的字符数组int i;printf("请输入用户名:");scanf("%s",urer); //输入待查找的姓名for(i=0;i<n;i++) //查找从第一条记录开始,直到最后一条记录为止 if(strcmp(user,s[i].user)==0) //待查找的姓名与数组中的记录姓名比较,相等则显示找到的记录信息{printf( "\n 找到的记录信息");printf( "\n ******************************************************************************\n ");printf(" | 用户 |工资|奖金|津贴|中奖|收入总和|水电|通讯|伙食|交际|旅游|房租|支出总和|\n");printf("|-------|----|----|----|----|--------|----|----|----|----|----|----|--------|\n" );printf("|%-8s|%-8f|%-8f|%-4f|%-4f|%-8f|%-8f|%-8f|%-4f|%-4f|%-8f|%-4f|%-8f|",s[i].user,I[ i].jiangjin,I[i].jintie,I[i].zhongjiang,I[i].total1I[i].jiangjin,I[i].jintie,I[i].zhongjiang,I[i].total1E[i].shuidian,E[i].tongxun,E[i].huoshi,E[i].jiaoji,E[i].lvyou,E[i].fangzu,E[i].total2printf (" *******************************end********************************************\n ");}elseprintf("没找到!"); //显示没有该用户}/*按用户删除记录信息*/int del(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); {char user[10]; //存放要删除记录的学号int i,j;printf("请输入要删除的用户:");scanf ("%s",user); //输入要删除记录的学号for(i=0;i<3;i++){if(strcmp(user,s[i].user)==0){for(j=i+1;j<n;j++) //从i+1位置记录开始到最后一个记录为止依次前移,删除i位置记录{strcpy(s[j-1].user,s[j].user);strcpy(I[j-1].gongzi,I[j].gongzi);strcpy(I[j-1].jiangjin,I[j].jiangjin);strcpy(I[j-1].jintie,I[j].jintie);strcpy(I[j-1].zhongjiang,I[j].zhongjiang) :strcpy(I[j-1].total1,I[j].tatol1);strcpy(E[j-1].shuidian,E[j].shuidian);strcpy(E[j-1].tongxun,E[j].tongxun);strcpy(E[j-1].huoshi,E[j].huoshi);strcpy(E[j-1].jiaoji,E[j].jiaoji);strcpy(E[j-1].lvyou,E[j].lvyou);strcpy(E[j-1].fangzu,E[j].fangzu)strcpy(E[j-1].total2,E[j]total2);}break;}}n--; //记录数减1return (n);}/*将记录信息保存到磁盘文件中*/void save(struct stu s[],int a,struct Income I[],int b,struct Expense E[], int c); {FILE *fp; //定义指向文件的指针int i;char outfile[20]; //保存输出文件名printf("Enter outfile name. for example c:\\cfile\\inf.tex\n");//提示输入文件名格式信息scanf("%s",outfile);if((fp=fopen(outfile, "wb"))==NULL) //为输出打开一个二进制文件,如果没有则建立 {printf("can not open file\n"); //如果不能打开,则结束程序return;}else{for(i=0;i<n;i++)fwrite(&s[i],sizeof(struct stu),1,fp); //写入一条记录 fclose(fp); //关闭文件printf("------ 保存成功! !------\n"); //显示保存成功}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

个人帐簿管理系统设计五、程序运行结果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条以上的记录问题。

这里就不写了。

fclose(fp);printf("数据录入成功!\n");}void changeFormat(void) //暂时只能操作一行文件有待改进{FILE *fp1,*fp2;Infor *a;a=(Infor *)malloc(sizeof(Infor));fp1=fopen(FilePath1,"rb+");if(fp1==NULL){printf("无法找到文件:%s\n",FilePath1);return ; //返回主函数}fp2=fopen(FilePath2,"wt+");if(fp2==NULL){printf("无法创建文件:%s\n",FilePath2);return ; //返回主函数}fputs(" \n***个人帐簿管理系统***\n\n",fp2);fputs("记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n",fp2);fputs("----------------------------------------------------------------------- \n",fp2);printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");printf("----------------------------------------------------------------------- \n");rewind(fp1);fread(a,sizeof(Infor),1,fp1);while(!feof(fp1)){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);fprintf(fp2,"%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);fread(a,sizeof(Infor),1,fp1);}fputs("----------------------------------------------------------------------- \n",fp2);fputs("关闭本程序继续原程序!\n",fp2);fclose(fp1);fclose(fp2);system(FilePath2); //调用打开转换的文本文件remove(FilePath2);//删除文本文件文件}Status search(Infor *a){FILE *fp1;int mon;int isfound=0;printf("请正确输入要查询的月份:");scanf("%d",&mon);fflush(stdin);fp1=fopen(FilePath1,"rb+");if(fp1==NULL){printf("无法找到文件:%s\n",FilePath1);return Error; //返回主函数}rewind(fp1);fread(a,sizeof(Infor),1,fp1);while(!feof(fp1)){if(a->month==mon){isfound=1;break;}{isfound=0;}fread(a,sizeof(Infor),1,fp1);}fclose(fp1);if(isfound)return OK;elsereturn NotFound;}void paixu(Infor *a){int i=0,j=0,flag=0,t;pType px[8]={{0,0}};char str[8][10]={"记录月份","食品消费","房租费用","子女费用","水电费用","医疗费用","储蓄费用","本月收入"};for(;i<8;i++)px[i].no=i;px[0].data=a->month;px[1].data=a->spxf;px[2].data=a->fzfy;px[3].data=a->znjy;px[4].data=a->sdfy;px[5].data=a->ylfy;px[6].data=a->cxfy;px[7].data=a->srfy;for(i=1;i<8;i++){flag=0;for(j=0;j<8-i;j++)if(px[j].data>px[j+1].data){t=px[j].data;px[j].data=px[j+1].data;px[j+1].data=t;t=px[j].no;px[j].no=px[j+1].no;px[j+1].no=t;flag=1;}if(flag==0) break;}printf("\n");for(i=0;i<8;i++){printf(" %s",str[px[i].no]);}printf("\n—————————————————————————————\n");for(i=0;i<8;i++){printf("%8d ",px[i].data);}printf("\n");}void modify(Infor *a,int mon){FILE *fp1,*fp2;Infor *b;b=(Infor *)malloc(sizeof(Infor));fp1=fopen(FilePath1,"rt");fp2=fopen("temp.dat","wt+");rewind(fp1);fread(b,sizeof(Infor),1,fp1);while (!feof(fp1)){if(b->month==mon){fwrite(a,sizeof(Infor),1,fp2);}else{fwrite(b,sizeof(Infor),1,fp2);}fread(b,sizeof(Infor),1,fp1);}fclose(fp1);fclose(fp2);remove(FilePath1);//删除源文件rename("temp.dat",FilePath1);//重命名中间文件printf("修改数据成功!\n" );changeFormat();}void delRecord(int mon){FILE *fp1,*fp2;Infor *b;b=(Infor *)malloc(sizeof(Infor));fp1=fopen(FilePath1,"rt");fp2=fopen("temp.dat","wt+");rewind(fp1);fread(b,sizeof(Infor),1,fp1);while (!feof(fp1)){if(b->month!=mon)fwrite(b,sizeof(Infor),1,fp2);fread(b,sizeof(Infor),1,fp1);}fclose(fp1);fclose(fp2);remove(FilePath1);//删除源文件rename("temp.dat",FilePath1);//重命名中间文件printf("删除数据成功!\n" );changeFormat();}2、本程序是在VC++环境下实现,下面将演示该软件的使用方法。

相关文档
最新文档