个人账簿管理系统源代码
- 格式:doc
- 大小:24.50 KB
- 文档页数:4
程序设计报告( 2013 /2014 学年第 1 学期)题目:个人账本管理系统个人账本管理系统一、课题内容和要求本案例是一个简单的个人账本管理系统该系统要求实现一个简单、实用的个人帐本管理程序,主要功能包括帐务收支明细数据的录入、查找、修改、删除、统计、排序等。
所有帐务数据都要利用文件系统保存,以备系统下次运行时使用。
通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。
二、需求分析个人账本管理系统的功能框架图如图1所示(图1 功能框架图)(1)新增帐务明细数据。
(2)查找帐务数据(可按序号、日期(年、月、日)、名称、金额等查找)。
(3)修改帐务明细条目(先查找,再修改。
若查找出多个条目,则进一步提示用户选择条目的序号,再修改)。
(4)删除帐务明细条目(请参考上面修改的处理)。
(5)对帐务数据排序(可按日期、名称、金额等排序。
要求排序后,记录的序号也要重新编排)。
(6)显示当前所有帐务数据列表。
(7)帐务统计(根据日期范围,可分别按年、月或日统计收、支、结余总金额,并显示)(8)保存帐务数据到文件中、从文件中读入帐务数据。
三、概要设计1、主要结构体struct SJLX{int num;int year;int month;int day;char type[25];char fname[25];float amount;}pro[200];2、主要函数流程图(1)装载函数:从文本中载入信息,函数流程图如图2所示(2)输入信息函数:输入信息,可以保存到文本,如图3(图3 输入信息函数)(3)数据查询函数:查询用户数据,如图4(图4 数据查询函数)(4)修改信息函数:修改已存档文本数据,并保存到文本,如图5(图5 信息修改函数)(5)删除信息函数:查询已存档数据,删除并存档,如图6(图6 删除信息函数)(6)数据统计函数:对数据进行汇总统计,如图7(图7 数据统计函数)(7)排序函数:对数据进行分类汇总,按照一定顺序进行排列,如图88 排序函数)四、源程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#include<ctype.h>#include<cstdlib>int changshujv;FILE *fp;//打开文件struct SJLX//定义数据类型{int num;int year;int month;int day;char type[25];char fname[25];float amount;}pro[200];typedef struct yuedutongji//月度统计函数{int paixvy;int paixvm;double count;struct yuedutongji *next;}YDTJ,*YDTJP;YDTJ ydtj[200];YDTJP head;void zhucaidan();//主菜单函数,功能:数据处理、数据查询、数据统计、退出void shujvchaxun();//数据查询函数,功能:查询所有数据、按年月日查询、按名称查询、返回void shujvtongji();//数据统计,功能:课按年、月、日分别统计收入、支出、结余金额void yeartongji();//按年统计函数void monthtongji();//按月统计函数void daytongji();//按日统计函数void suoyouxinxi();//查询所有信息void annianchaxun();//按年查询函数void anyuechaxun();//按月查询函数void anrichaxun();//按日查询函数void annamechaxun();//名称查询void anshouzhichaxun();//按收支查询函数void paixv();//排序函数,功能:可按日期、名称、金额排序void xvhaopaixv();//序号排序void datepaixv();//日期排序void namepaixv();//名称排序void amountpaixv();//金额排序void shuruxinxi();//输入信息函数void xiugaixinxi();//修改信息函数void shanchuxinxi();//删除信息函数int readfile();//读取帐务信息void writefile(int x);//记录帐务信息char shuru();//判断输入是否为数字void zhucaidan()//主菜单函数,功能:数据处理、数据查询、数据统计、退出{char input;printf("\t********************个人财务系统******************\n");printf("\t\t*\t1.数据录入\t\t*\n");printf("\t\t*\t2.数据查询\t\t*\n");printf("\t\t*\t3.数据修改\t\t*\n");printf("\t\t*\t4.数据删除\t\t*\n");printf("\t\t*\t5.数据统计\t\t*\n");printf("\t\t*\t6.数据排序\t\t*\n");printf("\t\t*\t0.退出\t\t\t*\n");printf("\t***************************************************\n");printf("请输入选择:");input = shuru();switch(input){case '1': shuruxinxi();break;case '2': shujvchaxun();break;case '3': xiugaixinxi();break;case '4': shanchuxinxi();break;case '5': shujvtongji();break;case '6': paixv();break;case '0': exit(0);break;}}void shujvtongji()//数据统计{char input;system("cls");printf("\t\t*********数据统计*********\n\n");printf("\t\t1.按年统计\n");printf("\t\t2.按月统计\n");printf("\t\t3.按日统计\n");printf("\t\t0.返回\n");printf("#请选择#\n");input = shuru();switch(input){case '1': yeartongji();zhucaidan();break;case '2': monthtongji();zhucaidan();break;case '3': daytongji();zhucaidan();break;case '0': zhucaidan();break;}}void yeartongji()//按年统计函数{char input;int y;int i;double sum=0;system("cls");printf("\t\t********年度统计*********\n\n");printf("\t\t1.收入统计\n");printf("\t\t2.支出统计\n");printf("\t\t3.结余金额\n");printf("\t\t0.返回\n");printf("请选择统计类型:");input = shuru();printf("请输入年份");scanf("%d",&y);switch(input){case '1':{for(i=0;i < changshujv;i++){if(pro[i].year==y&&!(strcmp(pro[i].type,"收入")))sum+=pro[i].amount;}printf("本年度总收入金额:%f\n",sum);};break;case '2': {for(i = 0;i < changshujv;i++){if(pro[i].year==y&&!(strcmp(pro[i].type,"支出"))){sum+=pro[i].amount;}}printf("本年度总支出金额:%f\n",sum);};break;case'3':{for(i = 0;i < changshujv;i++){if(pro[i].year==y)sum+=pro[i].amount;}printf("本年度总结余金额:%f\n",sum);};break;case '0': zhucaidan();break;}}void monthtongji()//按月统计函数{char input;int y,m;int i;double sum=0;system("cls");printf("\t\t*********月度统计********\n\n");printf("\t\t1.收入统计\n");printf("\t\t2.支出统计\n");printf("\t\t3.结余金额\n");printf("\t\t0.返回\n");printf("请选择统计类型:");input = shuru();printf("请输入年份");scanf("%d",&y);printf("请输入月份");scanf("%d",&m);switch(input){case '1':{for(i = 0;i < changshujv;i++){if(pro[i].year==y&&pro[i].month==m&&!(strcmp(pro[i].type,"收入"))){sum+=pro[i].amount;}}printf("本月度总收入金额:%f\n",sum);};break;case '2': {for(i = 0;i < changshujv;i++){if(pro[i].year==y&&pro[i].month==m&&!(strcmp(pro[i].type,"支出"))){sum+=pro[i].amount;}}printf("本月度总支出金额:%f\n",sum);};break;case'3':{for(i = 0;i < changshujv;i++){if(pro[i].year==y&&pro[i].month==m)sum+=pro[i].amount;}printf("本月度总结余金额:%f\n",sum);};break;case '0': zhucaidan();break;}}void daytongji()//按日统计函数{char input;int y,m,n;int i;double sum=0;system("cls");printf("\t\t*********每日统计*********\n\n");printf("\t1.收入统计\n");printf("\t2.支出统计\n");printf("\t3.结余金额\n");printf("\t0.返回\n");printf("请选择统计类型:");printf("请输入年份");scanf("%d",&y);printf("请输入月份");scanf("%d",&m);printf("请输入日");scanf("%d",&n);input = shuru();switch(input){case '1':{for(i = 0;i < changshujv;i++){if(pro[i].year==y&&pro[i].month==m&&pro[i].day==n&&!(strcmp(pro[i].type,"收入"))){sum+=pro[i].amount;}}printf("该日总收入金额:%f\n",sum);};break;case '2': {for(i = 0;i < changshujv;i++){if(pro[i].year==y&&pro[i].month==m&&pro[i].day==n&&!(strcmp(pro[i].type,"支出"))){sum+=pro[i].amount;}}printf("该日总支出金额:%f\n",sum);};break;case'3':{for(i = 0;i < changshujv;i++){if(pro[i].year==y&&pro[i].month==m&&pro[i].day==n)sum+=pro[i].amount;}printf("本日总结余金额:%f\n",sum);};break;case '0': zhucaidan();break;}}void shujvchaxun()//数据查询函数,功能:查询所有数据、按年月日查询、按收入和支出查询、返回{char input;system("cls");printf("\t\t********数据查询*********\n\n");printf("\t1.所有数据\n");printf("\t2.按年查询\n");printf("\t3.按月查询\n");printf("\t4.按日查询\n");printf("\t5.按收支查询\n");printf("\t6.按名称查询\n");printf("\t0.返回\n");printf("请输入选择:");input = shuru();switch(input){case '1': suoyouxinxi();zhucaidan();break;case '2': annianchaxun();zhucaidan();break;case '3': anyuechaxun();zhucaidan();break;case '4': anrichaxun();zhucaidan();break;case '5': anshouzhichaxun();zhucaidan();break;case '6': annamechaxun();zhucaidan();break;case '0': zhucaidan();break;}}void suoyouxinxi()//查询所有信息{int i;printf("编号\t 年\t月\t日\t 收支类型\t收支项名称\t金额\n");for(i = 0;i < changshujv;i++){printf("%-10d%-9d%-5d%-5d%-15s%-15s%-.2f\n",pro[i].num,pro[i].year,pro[i].month,pro[i] .day,pro[i].type,pro[i].fname,pro[i].amount);}}void annianchaxun()//按年查询函数{int y=0,m=0,i=0;printf("请输入年份");scanf("%d",&y);printf("编号\t 年\t月\t日\t 收支类型\t收支项名称\t金额\n");for(i = 0;i < changshujv;i++){if(pro[i].year == y){printf("%-10d%-9d%-5d%-5d%-15s%-15s%-.2f\n",pro[i].num,pro[i].year,pro[i].month,pro[i] .day,pro[i].type,pro[i].fname,pro[i].amount);}}}void anyuechaxun()//按月查询函数{int y,m,i;printf("请输入年份");scanf("%d",&y);printf("请输入月份");scanf("%d",&m);printf("编号\t 年\t月\t日\t 收支类型\t收支项名称\t金额\n");for(i = 0;i < changshujv;i++){if(pro[i].year == y && pro[i].month == m){printf("%-10d%-9d%-5d%-5d%-15s%-15s%-.2f\n",pro[i].num,pro[i].year,pro[i].month,pro[i] .day,pro[i].type,pro[i].fname,pro[i].amount);}}}void anrichaxun()//按日查询函数{int y,m,n,i;printf("请输入年份");scanf("%d",&y);printf("请输入月份");scanf("%d",&m);printf("请输入日");scanf("%d",&n);printf("编号\t 年\t月\t日\t 收支类型\t收支项名称\t金额\n");for(i=0;i<changshujv;i++){if(pro[i].year == y && pro[i].month == m&&pro[i].day==n){printf("%-10d%-9d%-5d%-5d%-15s%-15s%-.2f\n",pro[i].num,pro[i].year,pro[i].month,pro[i] .day,pro[i].type,pro[i].fname,pro[i].amount);}}}void anshouzhichaxun()//按收支查询函数{char ch;int i;printf("\t\t\t1.收入\n\t\t\t2.支出\n请选择:");ch = shuru();switch(ch){case '1':{printf("编号\t 年\t月\t日\t收支类型\t金额\n");for(i = 0;i < changshujv;i++){if(!(strcmp(pro[i].type,"收入"))){printf("%-10d%-9d%-5d%-5d%-15s%-.2f\n",pro[i].num,pro[i].year,pro[i].month,pro[i].day,p ro[i].fname,pro[i].amount);}}};break;case '2':{printf("编号\t 年\t月\t日\t收支类型\t金额\n");for(i = 0;i < changshujv;i++){if(!(strcmp(pro[i].type,"支出"))){printf("%-10d%-9d%-5d%-5d%-15s%-15s%-.2f\n",pro[i].num,pro[i].year,pro[i].month,pro[i] .day,pro[i].type,pro[i].fname,pro[i].amount);}}};break;}}void annamechaxun()//名称查询函数{ int i;char k[50];printf("请输入待查询的收支项目名称\n");scanf("%s",&k);for(i = 0;i < changshujv;i++){if(!(strcmp(pro[i].fname,k)))printf("%-10d%-9d%-5d%-5d%-15s%-15s%-.2f\n",pro[i].num,pro[i].year,pro[i].month,pro[i].day, pro[i].type,pro[i].fname,pro[i].amount);}}void shuruxinxi()//输入信息函数{int i,word=1,x,k=0;for(;changshujv<200 && word==1;changshujv++){printf("请输入编号:\n");scanf("%d",&pro[changshujv].num);printf("请输入年:\n");scanf("%d",&pro[changshujv].year);printf("请输入月:\n");scanf("%d",&pro[changshujv].month);printf("请输入日:\n");scanf("%d",&pro[changshujv].day);printf("请输入收支类型:\n");scanf("%s",pro[changshujv].type);printf("请输入收支项目名称:\n");scanf("%s",pro[changshujv].fname);printf("请输入收支金额:\n");scanf("%f",&pro[changshujv].amount);printf("要继续吗?\n1.是 2.退出\n");scanf("%d",&word);}for(i = 0;i < changshujv;i++){printf("%-5d%-5d%-5d%-5d%-10s%-10s%-.2f\n",pro[i].num,pro[i].year,pro[i].month,pro[i]. day,pro[i].type,pro[i].fname,pro[i].amount);}printf("\n新建的账目需要存档吗?\t1.是 2.否\n");scanf("%d",&x);writefile(x);}void xiugaixinxi()//修改信息函数{int ch,i;char input;system("cls");printf("******请查询要修改信息*****\n");printf("\t1.所有数据\n");printf("\t2.按年查询\n");printf("\t3.按月查询\n");printf("\t4.按日查询\n");printf("\t5.按收支查询\n");printf("\t6.按名称查询\n");printf("请输入选择:");input = shuru();switch(input){case '1': suoyouxinxi();break;case '2': annianchaxun();break;case '3': anyuechaxun();break;case '4': anrichaxun();break;case '5': anshouzhichaxun();break;case '6': annamechaxun();break;default:exit(0);}printf("请输入要修改的收支编号:\n");scanf("%d",&ch);for(i = 0;i < changshujv;i ++){if(pro[i].num == ch){printf("请输入修改信息:\n");printf("请输入编号:\n");scanf("%d",&pro[i].num);printf("请输入年:\n");scanf("%d",&pro[i].year);printf("请输入月:\n");scanf("%d",&pro[i].month);printf("请输入日:\n");scanf("%d",&pro[i].day);printf("请输入收支类型:\n");scanf("%s",pro[changshujv].type);printf("请输入收支项目名称:\n");scanf("%s",pro[i].fname);printf("请输入收支金额:\n");scanf("%f",&pro[i].amount);writefile(1);}}}void shanchuxinxi()//删除信息函数{int ch,i;char input;system("cls");printf("*****请查询要删除信息*****\n");printf("\t1.所有数据\n");printf("\t2.按年查询\n");printf("\t3.按月查询\n");printf("\t4.按日查询\n");printf("\t5.按收支查询\n");printf("\t6.按名称查询\n");printf("请输入选择:");input = shuru();switch(input){case '1': suoyouxinxi();break;case '2': annianchaxun();break;case '3': anyuechaxun();break;case '4': anrichaxun();break;case '5': anshouzhichaxun();break;case '6': annamechaxun();break;default:exit(0);}printf("请输入要删除的收支编号:\n");scanf("%d",&ch);for(i = 0;i < changshujv + 1;i ++){if(pro[i].num == ch){pro[i].num = pro[i+1].num;pro[i].year = pro[i+1].year;pro[i].month = pro[i+1].month;pro[i].day = pro[i+1].day;strcpy(pro[i].fname,pro[i+1].fname);pro[i].amount = pro[i+1].amount;changshujv = changshujv - 1;writefile(1);}}}void paixv()//排序函数{char input;system("cls");printf("\t\t********数据排序********\n\n");printf("\t1.按名称\n");printf("\t2.按金额\n");printf("\t3.按日期\n");printf("\t0.返回\n");printf("请输入选择:");input = shuru();switch(input){case '1': namepaixv();zhucaidan();break;case '2': amountpaixv();zhucaidan();break;case '3': datepaixv();zhucaidan();break;case '0': zhucaidan();break;}}void xvhaopaixv()//序号排序函数{int i,j,temp,noswap,n=0;for(i = 0;i < changshujv;i++){if(pro[i].num!=NULL)n++;}for(i=0;i<n-1;i++){noswap=1;for(j=n-1;j>i;j--)if(pro[j].num <pro[j-1].num ){temp=pro[j-1].num;pro[j-1].num =pro[j].num ;pro[j].num =temp;noswap=0;}if(noswap==1)return;}}void datepaixv()//日期排序{int i,j,n=0;SJLX temp;for(i = 0;i < changshujv;i++){if(pro[i].day!=NULL)n++;}for(i=0;i<n;i++){for(j=0;j<i;j++)if(pro[i].year<pro[j].year ){temp=pro[i];pro[i] =pro[j];pro[j]=temp;}}for(i=0;i<n;i++){for(j=0;j<i;j++)if(pro[i].year<=pro[j].year&&pro[i].month<pro[j].month ){temp=pro[i];pro[i] =pro[j];pro[j]=temp;}}for(i=0;i<n;i++){for(j=0;j<i;j++)if(pro[i].year<=pro[j].year&&pro[i].month<=pro[j].month&&pro[i].day<pro[j].day){temp=pro[i];pro[i] =pro[j];pro[j]=temp;}}xvhaopaixv();printf("编号\t 年\t月\t日\t 收支类型\t收支项名称\t金额\n");for(i = 0;i < changshujv;i++)printf("%-10d%-9d%-5d%-5d%-15s%-15s%-5lf\n",pro[i].num,pro[i].year,pro[i].month,pro[i].day, pro[i].type,pro[i].fname,pro[i].amount);}void namepaixv()//名称排序{int i,j,n=0;SJLX temp;for(i = 0;i < changshujv;i++){if(pro[i].fname!=NULL)n++;}for(i=0;i<n;i++){for(j=0;j<i;j++)if((strcmp(pro[i].fname,pro[j].fname))<0){temp=pro[i];pro[i] =pro[j];pro[j]=temp;}}xvhaopaixv();printf("编号\t 年\t月\t日\t 收支类型\t收支项名称\t金额\n");for(i = 0;i < changshujv;i++)printf("%-10d%-9d%-5d%-5d%-15s%-15s%-5lf\n",pro[i].num,pro[i].year,pro[i].month,pro[i].day, pro[i].type,pro[i].fname,pro[i].amount);}void amountpaixv()//金额排序{int i,j,n=0;SJLX temp;for(i = 0;i < changshujv;i++){if(pro[i].fname!=NULL)n++;}for(i=0;i<n;i++){for(j=0;j<i;j++)if((pro[i].amount<pro[j].amount)){temp=pro[i];pro[i] =pro[j];pro[j]=temp;};}printf("编号\t 年\t月\t日\t 收支类型\t收支项名称\t金额\n");for(i = 0;i < changshujv;i++)printf("%-10d%-9d%-5d%-5d%-15s%-15s%-5lf\n",pro[i].num,pro[i].year,pro[i].month,pro[i].day, pro[i].type,pro[i].fname,pro[i].amount);}int readfile()//读取帐务信息{int k = 0;if((fp=fopen("data.txt","r"))==NULL){printf("初始化时未发现文件,已建立。
#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、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");}六、程序运行效果图七、总结通过做个人财务管理程序这课程设计,我意识到逻辑分析能力理清问题的思路以及函数间的相互调用关系很重要。
《数据结构》课程设计报告专业计算机科学与技术班级(1)姓名学号指导教师起止时间2011.10~2011.12课程设计:个人账簿管理一、任务描述个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。
进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。
要求:根据以上任务说明,设计程序完成功能。
二、问题分析1、功能分析分析设计课题的要求,要求编程实现以下功能:(1)记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等(2)输入和修改某月的收支情况(3);对每月的开支从小到大进行排序(4)根据输入的月份查询每月的收支情况。
2、数据对象分析食品消费,房租,子女教育费用,水电费,医疗费,储蓄三、数据结构设计#include "linklist.h"#include"calculate.h"void menu(){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(" 6-支出排序\n");printf(" 7-遍历表中内容\n");printf(" 0-保存文件并退出\n");printf("\n");printf("----------------------------------------\n");printf("请选择...");}void title(int a){printf("==========个人帐簿管理系统==============\n");printf("----------------------------------------\n");switch(a){case 1:printf(" 程序说明\n");break;case 2:printf(" 建立个人账簿管理表\n");break;case 3:printf(" 插入记录\n");break;case 4:printf(" 查询记录\n");break;case 5:printf(" 修改记录\n");break;case 6:printf(" 按照支出升序排序\n");break;case 7:printf(" 当前表中内容\n");break;case 0:printf(" 保存表并退出\n");break;}printf("\n");}void tail(){printf("----------\n");printf("按Enter键继续...\n");getchar();}void instruction()//程序说明函数{printf(" 本程序为个人账簿管理系统。
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++ 个⼈收⽀系统内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
界面:package个人收支管理系统;import java.util.Scanner;public class Test {public static void main(String[] args) {Manager b = new Manager();boolean bRun = true;while (bRun) {System.out.println("***********************************");System.out.println("***********个人收支管理*************");System.out.println(" ");System.out.println("************1.注册*****************");System.out.println("************2.登录******************");System.out.println("************3.收入*****************");System.out.println("************4.支出*****************");System.out.println("************5.查询与统计************");System.out.println("************6.写读取文件*************");System.out.println("************7.注销用户*******************");System.out.println("************8.退出******************");Scanner s = new Scanner(System.in);int userPrint = s.nextInt();switch (userPrint) {case 1:b.register();break;case 2:b.login();break;case 3:b.save();break;case 4:b.get();break;case 5:b.find();break;case 6:b.f();break;/*case 7:b.读出();break;*/case 7:b.exit();break;case 8:bRun = false;break;default:}}}}主方法:package个人收支管理系统;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.ArrayList;import java.util.Date;import java.util.LinkedList;import java.util.Scanner;import java.util.Vector;public class Manager {LinkedList<String> list = new LinkedList<String>();ArrayList<Vector<Object>> allUser = null;Vector<Object> currentUser = null;Date date= new Date();/***声明Vector<Object>*第1个元素存储卡号,下标为[0]*第2个元素存储密码,下标为[1]*第3个元素存储用户的余额,下标为[2]**/public Manager() {allUser = new ArrayList<Vector<Object>>();}public void register() {System.out.println("请输入注册信息,格式为卡号-密码-开卡额");Scanner s = new Scanner(System.in);String information = s.next();String[] infos = information.split("-");//实例化一个Vector表示新的用户Vector<Object> v = new Vector<Object>();v.add(infos[0]);v.add(infos[1]);v.add(infos[2]);allUser.add(v);}public void login() {System.out.println("请输入您要登录的帐号:");Scanner s = new Scanner(System.in);int userPrintCode = s.nextInt();for (int i = 0; i < allUser.size(); i++) {Vector<Object> findUser = allUser.get(i);Object findCodeObj = findUser.get(0);String findCodeStr = findCodeObj.toString();int findCodeInt = Integer.parseInt(findCodeStr);if (findCodeInt == userPrintCode) {boolean bLogin = validatePassword(findUser.get(1));if (bLogin) {System.out.println("登录成功");//如果登录成功,将成员变量currentUser赋值为findUser(卡号和密码都校验成功的用户)currentUser = findUser;} else {System.out.println("登录失败");}}}}/***该方法用于校验*[已经查到的卡号]的密码是否正确*参数password已经查到的用户存储的密码**/public boolean validatePassword(Object password) {//用户输入密码System.out.println("请输入密码");Scanner s = new Scanner(System.in);int userPrintPw = s.nextInt();String passwordStr = password.toString();int passwordInt = Integer.parseInt(passwordStr);//如果用户输入的密码,和刚才传入的对应卡号的密码一致if (userPrintPw == passwordInt) {return true;} else {return false;}}public void save() {if (currentUser == null) {System.out.println("请先登录");} else {//卡中余额(在执行收入之前的卡中的钱)Object beforeMoney = currentUser.get(2);//请输入您要收入的额度Scanner s = new Scanner(System.in);System.out.println(date.toLocaleString());System.out.println("请输入顺序号:");String a=s.next();list.add(a);System.out.println("请输入日期");String data=s.next();list.add(data);System.out.println("请输入摘要内容:");String zaiyao=s.next();list.add(zaiyao);System.out.println("请输入收入额度:");int userPrintMoney = s.nextInt();int before = Integer.parseInt(beforeMoney.toString());//总额= 之前的余额+ 用户这次的收入额度int sum = before + userPrintMoney;//把总额再存储到当前的用户信息中(位置是第3个,下标为2)currentUser.set(2, sum);System.out.println("当前额度:"+currentUser.set(2, sum));}}public void get() {if (currentUser == null) {System.out.println("请先登录");} else {System.out.println("请输入您要支出的额度");Scanner s = new Scanner(System.in);int userPrintMoney = s.nextInt();Object beforeMoney = currentUser.get(2);int before = Integer.parseInt(beforeMoney.toString());if (before < userPrintMoney) {System.out.println("余额不足");} else {System.out.println(date.toLocaleString());System.out.println("请输入顺序号:");String a1=s.next();list.add(a1);System.out.println("请输入日期");String data1=s.next();list.add(data1);System.out.println("请输入摘要内容:");String zaiyao1=s.next();list.add(zaiyao1);//支出后的余额= 原卡中金额- 这次支出金额int sub = before - userPrintMoney;System.out.println("序号为:"+list.get(0));System.out.println("日期为:"+list.get(1));System.out.println("摘要内容"+list.get(2));/*System.out.println(list.get(3));*/currentUser.set(2, sub);System.out.println("支出成功!您的当前余额为:" + sub);list.add(date.toLocaleString());}}}public void find() {if (currentUser == null) {System.out.println("请先登录");} else {System.out.println("-----收入时的详细记录----");System.out.println(date.toLocaleString());System.out.println("序号为:"+list.get(0));System.out.println("日期为:"+list.get(1));System.out.println("摘要内容:"+list.get(2));System.out.println("您当前额度为:");System.out.println("-----支出时的详细记录----");System.out.println(list.get(6));System.out.println("序号为:"+list.get(3));System.out.println("日期为:"+list.get(4));System.out.println("摘要内容:"+list.get(5));System.out.println("您当前的余额为:" + currentUser.get(2));}}public void f(){S ystem.out.println("友情提示您想记录文件请copy查询结果paste到a文件中");F ile f1=new File("G:\\ab\\a.txt");F ile f2=new File("G:\\ab\\b.txt");try {R eader input=new FileReader(f1);B ufferedReader br=new BufferedReader(input);W riter wt = new FileWriter(f2);B ufferedWriter bw=new BufferedWriter(wt);S tring s= "";while((s=br.readLine())!=null){bw.write(s);bw.newLine();System.out.println(s);}br.close();bw.close();} catch (IOException e) {e.printStackTrace();}}public void exit() {currentUser = null;}}运行结果:主界面1.注册与登入功能:2.收入功能:支出功能:查询与统计:写入与读出功能:退出功能如有侵权请联系告知删除,感谢你们的配合!。
个人帐簿管理系统设计五、程序运行结果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//定义财务记录结构体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;}}```通过以上代码,我们实现了一个简单的个人财务管理系统。
个人账簿管理系统源程序(带简要注释)自定义头文件abms.h中内容://AccountBooksManagementSystem.h#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>#include <windows.h>//常量定义#define TRUE 1#define ERROR 0#define NOtFound -1#define MAXNAME 20 //用户名的最大长度//文件保存路径#define FilePath1 "userinfo.dat" //所有用户整体信息的二进制文件#define FilePath2 "userinfo.txt" //所有用户整体信息的文本文件#define FilePath3 "person.dat" //单个用户信息的二进制文件#define FilePath4 "person.txt" //单个用户信息的文本文件#define FilePath5 "month.dat" //单月用户信息的二进制文件#define FilePath6 "month.txt" //单月用户信息的文本文件#define FilePath7 "help.txt" //说明文件//函数返回值类型定义typedef int Status;//账单信息结构体typedef struct AccountBook{int food; //食品费用int rent; //房租费用int education; //子女教育费用int water; //水电费用int medicine; //医疗费用int TotalExpenses; //当月总消费int saving; //当月储蓄int income; //当月收入int month; //月份char username[MAXNAME+1]; //用户名}Bill;//查询信息结构体typedef struct{int no;int data;}Sort;void Menu(void); //主菜单Status SearchMenu(Bill *q); //查找子菜单,并返回其状态void input(Bill *q); //接收键盘数据输入void WriteFile(Bill *q); //将信息读入文件void FileOutput(void); //转换为文本文件输出Status search(Bill *q); //查找数据,并返回其结果和状态void SearchUser(Bill *q); //按用户查找并将数据保存到文件中并显示void SearchMonth(Bill *q); //按月份查找并将数据保存到文件中并显示void change(Bill *q,int mon,char *user); //修改数据后,更新文件中的相应记录并输出void remove(int mon); //按月删除数据void sort(Bill *q); //数据排序void quit(void); //退出系统void help(void); //说明文件,说明系统功能文件mainmenu.cpp中内容://包含头文件#include "abms.h"//主函数int main(){char account[20]; //登陆用户名char password[20]; //登陆密码int i;printf("\t\t********欢迎进入个人账簿管理系统********\n\n");printf("\n\t\t\t请输入用户名和密码进入系统: \n");printf("\t\t\t请输入用户名: ");fflush(stdin);gets(account);printf("\t\t\t请输入密码: ");fflush(stdin);gets(password);if((!strcmp(account,"yss") && !strcmp(password,"110")) ||!strcmp(account,"guest") && !strcmp(password,"123")){printf("\n\n\t\t\t您已成功登陆,请稍侯!\n\n\t\t\t");// 延迟for(i = 0; i < 20; i++){printf(".");Sleep(80);}//进入页面时清除登陆界面system("cls");while(1){Menu();}}else{printf("\t\t\t\a警告:您尚未注册,无权使用该系统!\n");printf("\t\t\t正在强行退出!\n\t\t\t");for(i = 0; i < 20; i++){printf("!");Sleep(80);}printf("\n\n");printf("\t\t\t欢迎您下次使用!\a\a\a\a\a\a\n\n");}getchar();getchar();return 0;}文件abms.cpp中内容:#include "abms.h"#include "abms.h"//初始化主菜单void Menu(){int choice; //功能选择int mon; //按月查询char user[MAXNAME+1] = " "; //按用户查询int flag = 1;Bill *p;p = (Bill *)malloc(sizeof(Bill));do{printf("\t\t\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n\n");printf("\t\t********欢迎进入个人账簿管理系统********\n\n");printf("\t\t 1.录入数据。
个人账簿管理系统源程序(带简要注释)自定义头文件中内容:#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>#include <windows.h>//常量定义#define TRUE 1#define ERROR 0#define NOtFound -1#define MAXNAME 20 //用户名的最大长度//文件保存路径#define FilePath1 "userinfo.dat" //所有用户整体信息的二进制文件#define FilePath2 "userinfo.txt" //所有用户整体信息的文本文件#define FilePath3 "person.dat" //单个用户信息的二进制文件#define FilePath4 "person.txt" //单个用户信息的文本文件#define FilePath5 "month.dat" //单月用户信息的二进制文件#define FilePath6 "month.txt" //单月用户信息的文本文件#define FilePath7 "help.txt" //说明文件//函数返回值类型定义typedef int Status;//账单信息结构体typedef struct AccountBook{int food; //食品费用int rent; //房租费用int education; //子女教育费用int water; //水电费用int medicine; //医疗费用int TotalExpenses; //当月总消费int saving; //当月储蓄int income; //当月收入int month; //月份char username[MAXNAME+1]; //用户名}Bill;//查询信息结构体typedef struct{int no;int data;}Sort;void Menu(void); //主菜单Status SearchMenu(Bill *q); //查找子菜单,并返回其状态void input(Bill *q); //接收键盘数据输入void WriteFile(Bill *q); //将信息读入文件void FileOutput(void); //转换为文本文件输出Status search(Bill *q); //查找数据,并返回其结果和状态void SearchUser(Bill *q); //按用户查找并将数据保存到文件中并显示void SearchMonth(Bill *q); //按月份查找并将数据保存到文件中并显示void change(Bill *q,int mon,char *user); //修改数据后,更新文件中的相应记录并输出void remove(int mon); //按月删除数据void sort(Bill *q); //数据排序void quit(void); //退出系统void help(void); //说明文件,说明系统功能文件中内容://包含头文件#include "abms.h"//主函数int main(){char account[20]; //登陆用户名char password[20]; //登陆密码int i;printf("\t\t********欢迎进入个人账簿管理系统********\n\n");printf("\n\t\t\t请输入用户名和密码进入系统: \n");printf("\t\t\t请输入用户名: ");fflush(stdin);gets(account);printf("\t\t\t请输入密码: ");fflush(stdin);gets(password);if((!strcmp(account,"yss") && !strcmp(password,"110")) ||!strcmp(account,"guest") && !strcmp(password,"123")){printf("\n\n\t\t\t您已成功登陆,请稍侯!\n\n\t\t\t");// 延迟for(i = 0; i < 20; i++){printf(".");Sleep(80);}//进入页面时清除登陆界面system("cls");while(1){Menu();}}else{printf("\t\t\t\a警告:您尚未注册,无权使用该系统!\n");printf("\t\t\t正在强行退出!\n\t\t\t");for(i = 0; i < 20; i++){printf("!");Sleep(80);}printf("\n\n");printf("\t\t\t欢迎您下次使用!\a\a\a\a\a\a\n\n");}getchar();getchar();return 0;}文件中内容:#include "abms.h"#include "abms.h"//初始化主菜单void Menu(){int choice; //功能选择int mon; //按月查询char user[MAXNAME+1] = " "; //按用户查询int flag = 1;Bill *p;p = (Bill *)malloc(sizeof(Bill));do{printf("\t\t\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n\n");printf("\t\t********欢迎进入个人账簿管理系统********\n\n");printf("\t\t 1.录入数据。
#include <iostream.h>#include <fstream.h>#include <iomanip.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#define N 500 //允许录入的最多帐务次数class account{public:char a; //备注选项struct date{int year;int month;int day;}time;long double all_time; //时间总数char name[20]; //收支项名称int type; //收支类型long double money; //收支金额char remarks[100]; //备注};void menu(); //菜单函数void add(account cd[],int no, int n); // 输入帐务明细void input(account cd[],int n); //输入n次帐务明细void sort_suma(account cd[],int n); //n次帐务按总收入排序void sort_sumb(account cd[], int n); //n次帐务按日期排序void sort_sumc(account cd[], int n); //n次帐务按名称排序void seek_a(account cd[],int i, int n); //按序号查找帐务信息int seek_b(account cd[],int x,int y,int z, int n); //按日期查找帐务信息int seek_c(account cd[],char na[], int n); //按名称查找帐务信息int seek_d(account cd[],long double no,int a, int n); //按金额查找帐务信息int dela(account cd[],int no, int n); //按序号删除序号为no的帐务信息int delb(account cd[],int x,int y,int z, int n); //按日期删除序号为no的帐务信息int delc(account cd[],char na[], int n); //按名称删除序号为no的帐务信息int ins(account cd[],int no, int n); //新增帐务void mod1(account cd[],int no, int n); //按序号修改帐务信息void print(account cd[],int n); //打印所有帐务信息void printall(account cd[],int X,int Y,int Z,int x,int y,int z,int n); //按日期打印帐务统计信息int getin(account cd[], int n); //把帐务信息存入文件中int ReadBiFile(char *filename, account cd[]); //从文件中读取帐务信息void main(){ofstream fout;account stu[N];int choice,i,a,b,c,A,B,C;char name1[20];long double mon;int n; //帐务数cout<<" ********************************************"<<endl;cout<<" ********************************************"<<endl;cout<<" ******** 欢迎进入个人帐务管理系统 ******"<<endl;cout<<" ********************************************"<<endl;cout<<" ********************************************"<<endl;menu(); //调用输出菜单的函数while(1){cout<<("请选择:");cin>>choice;switch (choice){case 1:cout<<"输入你想录入帐务的数目:"<<endl;cin>>n;input(stu,n); //录入n个帐务信息menu();break;case 2:cout<<"根据什么排序:"<<endl;cout<<"1. 金额"<<endl<<"2. 日期"<<endl<<"3. 名称"<<endl;cin>>i;if(i==1){ sort_suma(stu,n); //按金额排序}else if(i==2){ //按日期排序sort_sumb(stu,n);}else if(i==3){ //按名称排序sort_sumc(stu,n);}menu();break;case 3:cout<<"请选择查找方式:"<<endl;cout<<"1.按序号"<<endl;cout<<"2.按日期"<<endl;cout<<"3.按名称"<<endl;cout<<"4.按金额"<<endl;cin>>i;switch (i){case 1:cout<<"请输入你要查找的序号:"<<endl;cin>>i;seek_a(stu,i,n); //按序号查找帐务信息menu();break;case 2:cout<<"请输入年月日:"<<endl;cin>>a>>b>>c;seek_b(stu,a,b,c,n); //按日期查找帐务信息menu();break;case 3:cout<<"请输入你要查找的名称:"<<endl;cin>>name1;seek_c(stu,name1,n); //按名称查找帐务信息menu();break;case 4:cout<<"请选择收支类型:"<<endl<<"1. 收入"<<endl<<"2. 支出"<<endl; cin>>i;cout<<"请输入你要查找的金额:"<<endl;cin>>mon;seek_d(stu,mon,i,n); //按金额查找帐务信息menu();break;default:cout<<"error input! 请重输! "<<endl;break;}break;case 4:cout<<"根据什么查找删除信息:"<<endl;cout<<"1. 序号"<<endl<<"2. 日期"<<endl<<"3. 名称"<<endl; cin>>i;if(i==1){cout<<"请输入你要删除的序号:"<<endl;cin>>i;n=dela(stu,i,n);//按序号删除帐务信息}else if(i==2){cout<<"请输入年月日:"<<endl;cin>>a>>b>>c;n=delb(stu,a,b,c,n); //按日期删除帐务信息}else if(i==3){cout<<"请输入名称:"<<endl;cin>>name1;n=delc(stu,name1,n); //按名称删除帐务信息}menu();break;case 5:cout<<"请输入你要新增帐务的序号:"<<endl;cin>>i;n=ins(stu,i,n); //按序号新增帐务信息menu();break;case 6:cout<<"根据什么查找修改信息:"<<endl;cout<<"1. 序号"<<endl<<"2. 日期"<<endl<<"3. 名称"<<endl; cin>>i;if(i==1){cout<<"请输入你要修改的序号:"<<endl;cin>>i;mod1(stu,i,n); //按序号修改帐务信息}else if(i==2){cout<<"请输入年月日:"<<endl;cin>>a>>b>>c;i=seek_b(stu,a,b,c,n); //按日期修改帐务信息mod1(stu,i,n);}else if(i==3){cout<<"请输入名称:"<<endl;cin>>name1;i=seek_c(stu,name1,n); //按名称修改帐务信息mod1(stu,i,n);}menu();break;case 7: print(stu,n); //输出帐务信息menu();break;case 8:cout<<"请输入时间段:"<<endl<<"从"<<endl; // 按日期打印帐务统计信息cin>>A>>B>>C;cout<<endl<<"到"<<endl;cin>>a>>b>>c;sort_sumb(stu,n);printall(stu,A,B,C,a,b,c,n);menu();break;case 9:getin(stu,n);menu();break;case 10:cout<<"请输入文件名:"<<endl;cin>>name1;n=ReadBiFile(name1, stu);menu();break;case 11:exit(0);break;default:cout<<"error input! 请重输! "<<endl;break;}}}void menu(){cout<<" 1. 请录入你想要录入的帐务信息 \n";cout<<" 2. 对您的帐本排序 \n";cout<<" 3. 查找你想要查找帐务信息 \n";cout<<" 4. 删除你已有帐务信息\n";cout<<" 5. 新增您的帐务信息\n";cout<<" 6. 修改您的帐务信息\n";cout<<" 7. 输出您的帐务信息\n";cout<<" 8. 对您的帐务进行统计\n";cout<<" 9. 保存你已输入帐务数据\n";cout<<" 10. 读取您已有帐务数据\n";cout<<" 11. 退出\n";}//输入帐务明细void add(account cd[],int no, int n){do{cout<<"请按 <年月日>的方式输入日期:"<<endl;cin>>cd[no].time.year>>cd[no].time.month>>cd[no].time.day;}while(cd[no].time.year<0 || cd[no].time.year>2008 || cd[no].time.month>12 ||cd[no].time.month<0||cd[no].time.day<0 || cd[no].time.day>31);cd[no].all_time=cd[no].time.year*10000 + cd[no].time.month*100 + cd[no].time.day; cout<<"请输入收支项名称:"<<endl;cin>>cd[no].name;do{cout<<"请选择收支类型:"<<endl<<"1. 收入"<<endl<<"2. 支出"<<endl;cin>>cd[no].type;}while(cd[no].type!=1 && cd[no].type!=2);if(cd[no].type==1){cout<<"请输入收入金额:"<<endl;cin>>cd[no].money;}else{cout<<"请输入支出金额:"<<endl;cin>>cd[no].money;}cout<<"是否输入备注(y/n)"<<endl;cin>>cd[no].a;if (cd[no].a=='y'){cout<<"请输入:"<<endl;cin>>cd[no].remarks;}}//输入n个帐务信息void input(account cd[],int n){ int i;for(i=0;i<n;i++){add(cd,i,n);}}//n个帐务按总收入排序void sort_suma(account cd[],int n) {int i,j;account temp;for(i=0;i<n;i++){if(cd[i].type==2)cd[i].money=-cd[i].money;}for(i=0;i<n;i++){for(j=i;j<n;j++){if(cd[i].money<cd[j].money){ temp=cd[i];cd[i]=cd[j];cd[j]=temp;}}}}//n次帐务按日期排序void sort_sumb(account cd[], int n) {int i,j;account temp;for(i=0;i<n;i++){for(j=i;j<n;j++){if(cd[i].all_time<cd[j].all_time) { temp=cd[i];cd[i]=cd[j];cd[j]=temp;}}}}//n次帐务按名称排序void sort_sumc(account cd[], int n) {int i,j,p=0;account temp;for(i=0;i<n;i++){for(j=i;j<n;j++){if(strcmp(cd[i].name,cd[j].name)<0){ temp=cd[i];cd[i]=cd[j];cd[j]=temp;}}}}//按序号查找帐务信息void seek_a(account cd[],int i, int n){int sign=0;cout<<"序号"<<setw(5)<<"年"<<setw(10)<<"月"<<setw(8)<<"日"<<setw(8)<<"名称"<<setw(24)<<"收入(正)/支出(负)"<<setw(6)<<"备注"<<endl;if(i>=0 && i<n){ if(cd[i].type==1){ if(cd[i].a=='y'){cout<<i<<setw(10)<<cd[i].time.year<<setw(8)<<cd[i].time.month<<setw(8)<<cd[i].ti me.day<<setw(8)<<cd[i].name<<setw(8)<<fabs(cd[i].money)<<setw(22)<<cd[i].remarks <<endl;}else{cout<<i<<setw(10)<<cd[i].time.year<<setw(8)<<cd[i].time.month<<setw(8)<<cd[i].ti me.day<<setw(8)<<cd[i].name<<setw(8)<<fabs(cd[i].money)<<endl;}}else{if(cd[i].a=='y'){cout<<i<<setw(10)<<cd[i].time.year<<setw(8)<<cd[i].time.month<<setw(8)<<cd[i].ti me.day<<setw(8)<<cd[i].name<<"-"<<fabs(cd[i].money)<<setw(22)<<cd[i].remarks<<endl;}else{cout<<i<<setw(10)<<cd[i].time.year<<setw(8)<<cd[i].time.month<<setw(8)<<cd[i].ti me.day<<setw(8)<<cd[i].name<<" -"<<fabs(cd[i].money)<<endl;}sign++;}if(sign==0){cout<<"无此序号"<<endl;}}//按日期查找帐务信息int seek_b(account cd[],int x,int y,int z, int n){int array[100]={0};int i,j=0;int sign=0;cout<<"序号"<<setw(5)<<"年"<<setw(10)<<"月"<<setw(8)<<"日"<<setw(8)<<"名称"<<setw(24)<<"收入(正)/支出(负)"<<setw(6)<<"备注"<<endl;for(i=0;i<n;i++){if(cd[i].time.year==x && cd[i].time.month==y && cd[i].time.day==z){if(cd[i].type==1){ if(cd[i].a=='y'){cout<<i<<setw(10)<<cd[i].time.year<<setw(8)<<cd[i].time.month<<setw(8)<<cd[i].ti me.day<<setw(8)<<cd[i].name<<setw(8)<<fabs(cd[i].money)<<setw(22)<<cd[i].remarks <<endl;}else{cout<<i<<setw(10)<<cd[i].time.year<<setw(8)<<cd[i].time.month<<setw(8)<<cd[i].ti me.day<<setw(8)<<cd[i].name<<setw(8)<<fabs(cd[i].money)<<endl;}}else{if(cd[i].a=='y'){cout<<i<<setw(10)<<cd[i].time.year<<setw(8)<<cd[i].time.month<<setw(8)<<cd[i].ti me.day<<setw(8)<<cd[i].name<<"-"<<fabs(cd[i].money)<<setw(22)<<cd[i].remarks<<endl;}elsecout<<i<<setw(10)<<cd[i].time.year<<setw(8)<<cd[i].time.month<<setw(8)<<cd[i].ti me.day<<setw(8)<<cd[i].name<<" -"<<fabs(cd[i].money)<<endl;}}sign++;array[j]=i;j++;}}if(sign==0){cout<<"此日无收支。
Android个⼈信息管理系统源代码,个⼈信息管理系统源代码(⾃⼰写的).doc这是⼀个个⼈信息管理系统的web应⽤程序,为本⼈学习完JSP后花了⼀天时间写的,虽然很粗糙,但因为所学知识不多,编程经验很少,能做到这样,觉得暂时还不错。
数据库为sqlserver2005开发环境为eclipse以下是源代码。
包括数据库的创建,B.java(JavaBeans放翁数据库),index.jsp(主页)和Jsp0.jsp,Jsp1.jsp, Jsp2.jsp, Jsp3.jsp, Jsp4.jsp, Jsp5.jsp,Jsp6.jsp,创建数据库create database quanon primary(name='quan_db',filename='d:\quan.mdf',size=5mb,maxsize=50mb,filegrowth=10%)create table m(mid char(30) not null primary key,mname char(10) not null,sex char(8),age int,height int,jianshu char(50),aihao char(50))//bean访问数据库//bean访问数据库package b;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement; import java.sql.ResultSet;import java.sql.SQLException; public class B {private String name;private String mid;private String sex;private int age;private int height;private String jianshu;private String aihao;public void B(){name="";mid="";sex="";age=0;height=0;jianshu="";aihao="";}public void setName(String name){ =name;}public String getName(){return name;}public void setMid(String mid){ this.mid=mid;}public String getMid(){return mid;}public void setSex(String sex){this.sex=sex;}public String getSex(){return sex;}public void setAge(int age){this.age=age;}public int getAge(){return age;}public void setHeight(int height){this.height=height;}public float getHeight(){return height;}public void setJianshu(String jianshu){this.jianshu=jianshu;}public String getJianshu(){return jianshu;}public void setAihao(String aihao){this.aihao=aihao;}public String getAihao(){return aihao;}static {try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}Connection getCon(String user,String pwd){Connection con=null;try {con=DriverManager.getConnection("jdbc:odbc:qdb",user,pwd); } catch (SQLE。
个人账簿管理系统
源程序(带简要注释)
自定义头文件中内容:
;
Sleep(80);
}
入数据。
\n");
printf("\t\t 2.查看数据。
\n");
printf("\t\t 3.修改数据。
\n");
printf("\t\t 4.查找数据。
\n");
printf("\t\t 5.排序数据。
\n");
printf("\t\t 6.删除数据。
\n");
printf("\t\t 7.说明文件。
\n");
printf("\t\t 0.退出系统。
\n");
printf("\t\t*****************************************\n");
printf("请选择要进行的操作:");
scanf("%d",&choice);
}while((choice < 0) || (choice > 7));
确查找。
\n");
printf("\t\t 2.按用户查找。
\n");
printf("\t\t 3.按月份查找。
\n");
printf("\t\t 0.返回主菜单。
\n");
printf("\t\t*****************************************\n");
printf("请选择要进行的操作:");
scanf("%d",&choice);
}while((choice < 0) || (choice > 3));
switch(choice)
{
case 0:
flag = 0;
system("cls");
break;
case 1:
choice = search(q);
if(choice != TRUE)
{
printf("没有符合条件的记录!\n");
}
else
{
printf("\n用户名月份食品费房租子女教育费水电费医疗费当月储
蓄当月收入月总消费\n");
printf("--------------------------------------------------------------------------------\n");
printf("%s %-5d%-9d%-8d%-10d%-8d%-7d%-7d%-8d%-8d\n",\
q->username,q->month,q->food,q->rent,q->education,q->water,q->medicine,q->saving, q->income,q->TotalExpenses);
}
flag = 1;
break;
case 2:
SearchUser(q);
flag = 1;
break;
case 3:
SearchMonth(q);
flag = 1;
break;
}
return flag;
}
at中读数据写入显示文件.txt
while(!feof(fp1))
{
printf("%s %-5d%-9d%-8d%-10d%-8d%-7d%-9d%-8d%-8d\n",\
q->username,q->month,q->food,q->rent,q->education,q->water,q->medicine,q->saving, q->income,q->TotalExpenses);
fprintf(fp2,"%s %-5d%-9d%-8d%-10d%-8d%-7d%-9d%-8d%-8d\n",\
q->username,q->month,q->food,q->rent,q->education,q->water,q->medicine,q->saving, q->income,q->TotalExpenses);
fread(q,sizeof(Bill),1,fp1);
}
fputs("---------------------------------------------------------------------------------\n",fp2);
fputs("关闭该界面继续主程序!\n",fp2);
fclose(fp1);
fclose(fp2);
system(FilePath2); o = i;
}
r[1].data = q->month;
r[2].data = q->food;
r[3].data = q->rent;
r[4].data = q->education;
r[5].data = q->water;
r[6].data = q->medicine;
r[7].data = q->saving;
r[8].data = q->income;
r[9].data = q->TotalExpenses;
ata > r[j+1].data)
{
t = r[j].data;
r[j].data = r[j+1].data;
r[j+1].data = t;
t = r[j].no;
r[j].no = r[j+1].no;
r[j+1].no = t;
}
else
{
flag = 0;
}
j--;
}
}
o]);
}
printf("\n");
printf("-----------------------------------------------------------------------------\n");
printf("%s ",q->username);
for(i = 1; i < 10; i++)
{
printf("%-8d",r[i].data);
}
printf("\n");
return;
}
...................个人帐簿管理系统说明书.....................\n\n",fp);
fputs(" 一.录入数据:供用户添加并保存相关数据。
\n",fp);
fputs(" 二.查看数据:供用户查看该系统存储的所有用户的所有信息。
\n",fp);
fputs(" 三.修改数据:供用户修改相关数据,需输入用户名及月份。
\n",fp);
fputs(" 四.查找数据:给用户提供了三种查找方式:\n",fp);
fputs(" 1.精确查找:供用户精确查看特定用户在某月内收支情况。
\n",fp);
fputs(" 2.按用户查找:供用户查看并提取特定用户的全部数据。
\n",fp);
fputs(" 3.按月份查找:供用户查看并提取所有用户在某月内的数据。
\n",fp);
fputs(" 五.排序数据:供用户查看某月收支升序排列后的结果。
\n",fp);
fputs(" 六.删除数据:供用户删除无用的数据。
\n",fp);
fputs(" 零.退出系统:供用户退出该系统。
\n\n",fp);
fputs(" 制作者:杨帅帅。
\n\n",fp);
fputs(" 辅导老师:张永。
\n\n",fp);
fputs(" 制作时间:2011年6-7月。
\n\n",fp);
fputs(" 制作地点:兰州理工大学。
\n\n",fp);
fputs(".................................................................\n\n",fp);
fputs("关闭该界面返回到主界面!\n\n",fp);
fclose(fp);
system(FilePath7);
return;
}。