个人账簿管理系统课程设计Word
程序设计个人帐本管理系统
程序设计报告( 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("初始化时未发现文件,已建立。
个人记账本课程设计
个人记账本课程设计一、课程目标知识目标:1. 让学生掌握个人记账的基本概念,了解记账的重要性;2. 使学生掌握个人账务的分类方法,能对日常收支进行合理分类;3. 帮助学生掌握个人账务的记录方法,能准确记录各项收支数据。
技能目标:1. 培养学生运用个人记账软件或工具进行日常收支记录的能力;2. 培养学生分析个人财务状况,提出合理消费建议的能力;3. 提高学生解决实际生活中财务问题的能力。
情感态度价值观目标:1. 培养学生养成良好的消费观念,树立理性消费的意识;2. 培养学生学会珍惜时间和金钱,养成良好的财务管理习惯;3. 增强学生的责任感和自控力,提高个人素质。
课程性质:本课程为实用性课程,结合生活实际,使学生掌握个人记账的方法和技巧,提高学生的财务素养。
学生特点:考虑到学生所在年级的特点,课程设计将从简单易懂、实用有趣的角度出发,激发学生的学习兴趣。
教学要求:课程要求教师运用生动形象的语言、实际案例和互动讨论等方式,使学生能够积极参与、主动思考,将所学知识应用于实际生活中。
通过本课程的学习,学生能够达到以上课程目标,为未来的个人财务管理奠定基础。
二、教学内容1. 个人记账基本概念:讲解记账的定义、目的和意义,引导学生认识到记账对个人财务管理的重要性。
相关教材章节:第一章第一节2. 个人账务分类方法:介绍常见的收支分类方法,如消费性支出、投资性支出、固定支出等,并举例说明。
相关教材章节:第一章第二节3. 记账方法与技巧:讲解日常收支的记录方法,包括现金流水账、银行流水账等,以及如何使用个人记账软件。
相关教材章节:第二章4. 财务分析及建议:教授如何分析个人财务状况,从数据中找出消费误区,并提出合理消费建议。
相关教材章节:第三章5. 实践操作:安排学生进行实际操作,使用记账软件或工具记录一段时间内的个人收支,以便巩固所学知识。
相关教材章节:第四章6. 案例分析:通过分析实际生活中的财务案例,让学生学会如何应对各种财务问题,提高解决问题的能力。
课程设计----个人账簿管理系统设计
《数据结构》课程设计报告专业计算机科学与技术班级(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(" 本程序为个人账簿管理系统。
个人账簿管理系统
课 程 设 计课程设计任务书2011~2012学年 第一 学期学生姓名:专业班级:10信息管理 指导教师: 工作部门:计算机学院 一、课程设计题目:个人账簿管理系统二、课程设计内容个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。
该系统采用了W ind ows XP 操作系统结合Visual C ++ 6。
0,TC 2.0等软件开发,可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。
三、进度安排1. 系统设计,确定函数功能及其实现过程;2. 根据前面的结果,编写程序清单,进行调试;3. 经过反复的编译,调试,测试,程序运行成功;4. 撰写课程设计报告,完成整个论文报告的工作,并打印;课题答辩。
四、基本要求1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:建立一个文件,包括某人5个月的收支情况,能对文件中的信息进行扩充(追加),修改和删除;3. 进一步要求:完成对每月的开支排序,以及完成系统查询功能;题 目 个人账簿管理系统教 学 院计算机专业信息管理 班 级姓 名指导教师2011 年 12 月 30 日4.应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。
目录一概述ﻩ错误!未定义书签。
二总体方案设计............................................................ 错误!未定义书签。
1。
整体设计思路.................................................. 错误!未定义书签。
2. 输入系统............................................................. 错误!未定义书签。
个人财目管理系统(DOC)
收入心得
字符型
100
4.1页面设计
4.1.1登录界面
图
用户在使用本系统时均需要登录后,才能使用,登录时会提示你输入的用户名,以及用户密码。用户可以更改自己的密码。用户开始登录时,用户输入的自己的邮箱和密码就可以进入到用户界面,在用户界面里,首先显示的是消费统计。他显示的是你已输入的历史消费记录。并且可以按照你的意愿查询相关月,以及相关类型的消费统计。
}
protected void ImgBtn_Click(object sender, ImageClickEventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=ReportServer;database=zhangmu;Integrated Security=True";//"Integrated Security=true;Data Source=WWW-3A034B5863C;database=zhangmu";//Data Source=.\SQLEXPRESS;Initial Catalog=ReportServer;database=zhangmu;Integrated Security=True
(2).实现查询、修改、删除、添加数据方便,数据的稳定性和可靠性好。
(3).能够实现按日期查询以及对库存数据进行按月统计和以文本形式输出。
(4).拥有良好的人机交互界面。
3
3.1
图
3.2
图
图
图
3.3数据库的设计
个人帐簿管理系统设计
数据结构课程设计报告个人帐簿管理系统设计2010 年01 月21 日目录1. 引言 ---------------------------------- (1)2 需求分析------------------------------- (2)3 概要设计------------------------------- (4)4 详细设计------------------------------- (5)5 测试结果------------------------------- (6)6 设计体会------------------------------- (12)7 结束语-------------------------------- (13)8 参考文献------------------------------- (11)摘要该课程设计主要设计个人账簿管理系统以记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。
在课程设计中,用到了C语言以及数据结构中的相关知识,当然也有少数参考了其他人对某些问题的处理经验。
对于进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。
在程序设计中,添加了使用说明和帮助事项,并且采用了面向对象这种解决问题的方法。
程序通过调试运行,初步是想了设计目标,并且经过适当完善后,将可以应用在个人理财解决实际问题。
一引言本课程设计主要解决在个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。
进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。
现在是一个科技文化飞速发展的时代,家家户户都可以见到计算机的影子, 我们平时的生活,工作以及学习和娱乐都与电脑有着密切的联系。
个人记账管理课程设计
个人记账管理课程设计一、课程目标知识目标:1. 学生能够理解个人记账的重要性,掌握记账的基本概念和原则。
2. 学生能够掌握个人收支的分类方法,了解不同收支项目的记账规则。
3. 学生能够运用基本的数学运算,准确计算个人月度、季度和年度的收支总额及余额。
技能目标:1. 学生能够运用记账软件或手工方式,独立完成个人日常收支的记录和整理。
2. 学生能够通过分析个人账目数据,制定合理的消费预算和储蓄计划。
3. 学生能够运用图表、报表等形式,清晰地展示个人财务状况,并进行简单的数据分析。
情感态度价值观目标:1. 学生培养良好的消费观念,养成节约用钱、合理消费的习惯。
2. 学生认识到个人记账管理对于个人和家庭的重要性,增强自我管理意识。
3. 学生通过个人记账管理,学会为自己的财务负责,培养责任感和独立性。
课程性质:本课程以实用性和生活化为特点,结合数学和财经知识,培养学生个人财务管理的能力。
学生特点:针对初中年级学生,已有一定的数学基础和认知能力,对个人财务管理有初步的认识。
教学要求:教师应注重理论与实践相结合,运用案例分析和实际操作,激发学生的学习兴趣,提高他们的实际操作能力。
同时,关注学生的情感态度价值观的培养,引导他们形成正确的消费观念。
通过分解课程目标为具体的学习成果,为后续的教学设计和评估提供依据。
二、教学内容1. 个人记账基本概念与原则- 记账的定义与作用- 记账的基本原则(如真实性、完整性、连续性)- 收入与支出的分类及记账方法2. 个人记账实务操作- 记账工具的选择(记账软件、手工记账)- 日常收支记录的步骤与方法- 定期汇总与月度、季度、年度报表的制作3. 个人财务分析与管理- 收支平衡分析- 消费预算与储蓄计划的制定- 个人资产负债表的编制与分析4. 案例分析与讨论- 结合实际案例,分析个人记账中的常见问题与解决方法- 讨论如何通过记账改善个人财务状况,培养良好消费习惯5. 教学内容的安排与进度- 第一章节:个人记账基本概念与原则(1课时)- 第二章节:个人记账实务操作(2课时)- 第三章节:个人财务分析与管理(2课时)- 第四章节:案例分析与实践操作(2课时)教学内容参考教材相关章节,结合课程目标进行组织,确保科学性和系统性。
个人财务管理系统设计说明(doc 13页)
个人财务管理系统设计说明(doc 13页)课程设计报告课程设计题目:个人财务管理系统设计学生学号:09325209学生姓名:黄玉涛专业:电子信息工程指导教师:黄笑鹃、刘自强2011年1月6 日目录一、概要设计说明----------------------------------------------2二、总体设计分析----------------------------------------------2三、各模块实现方法--------------------------------------------3四、查找模块的程序设计分析---------------------------------3五、查找模块的程序源代码----------------------------------5六、程序运行结果及系统使用说明--------------------------------6七、结束语、心得体会------------------------------------------8概要设计说明(1)录入基本收支信息,包含:编号、日期、收/支项目名称、金额(精确到小数点后两位数)(2)信息查询:按日期查询、按收入或支出查询、显示某段时间内所有信息(如一月、一年)、显示所有收支信息;(3)信息的修改、删除;(4)统计排序,计算每月的总收入或总支出,按金额由大到小排序。
总体设计分析1.层次结构图把整个系统分为添加模块、查询模块、浏览排序模块三个模块,添加模块即让用户输入某年某月某日的收支情况。
查询模块包括总体查询和按年月查询。
浏览排序模块分为信息浏览、按年月排序,信息浏览可以浏览全部的收支记录,按年月日的排序则是按照年月日来排布收支情况。
层次从结构图如下所示:2.功能设计本系统功能如下:(1) 添加个人的某年某月某日的收支情况。
(2) 查找个人的某年某月某日的收支情况。
(3) 浏览排序个人的某年某日的收支情况。
个人记账管理系统课程设计
个人记账管理系统课程设计一、课程目标知识目标:1. 让学生了解个人记账管理系统的基本概念、功能及重要性;2. 掌握个人记账管理系统的操作流程和使用方法;3. 学会运用个人记账管理系统进行日常收支记录、查询、统计和分析。
技能目标:1. 培养学生运用个人记账管理系统进行有效财务管理的能力;2. 提高学生在实际生活中运用个人记账管理系统解决问题的能力;3. 培养学生自主学习和合作学习的能力。
情感态度价值观目标:1. 培养学生对个人财务管理的重要性和责任意识;2. 增强学生节约用钱、合理消费的观念;3. 培养学生诚实守信、认真负责的品质。
课程性质:本课程为实用型课程,旨在帮助学生掌握个人记账管理系统的相关知识,提高他们在实际生活中运用该系统进行财务管理的技能。
学生特点:针对初中年级学生,他们在生活中已具备一定的消费观念,但对个人记账管理系统了解不足,需要通过本课程的学习,提高财务管理意识和技能。
教学要求:1. 结合课本内容,注重实践操作,提高学生的动手能力;2. 采用案例教学,激发学生学习兴趣,培养其解决问题的能力;3. 强化师生互动,关注学生个体差异,确保每个学生都能掌握课程内容。
二、教学内容1. 个人记账管理系统概述- 个人记账的基本概念- 个人记账管理系统的功能与作用- 个人记账管理系统的分类及适用场景2. 个人记账管理系统的操作流程与方法- 系统安装与登录- 收入与支出的记录方法- 数据的分类、查询、统计与分析- 常用个人记账管理系统软件介绍3. 日常个人财务管理的实践应用- 制定个人预算- 账户管理- 财务分析- 报表生成与打印4. 课程实践与案例分析- 结合实际案例,分析个人记账管理系统的应用- 学生分组进行实际操作,互相交流心得- 教师点评与指导,总结操作技巧和注意事项教学内容安排与进度:第一课时:个人记账管理系统概述第二课时:个人记账管理系统的操作流程与方法第三课时:日常个人财务管理的实践应用第四课时:课程实践与案例分析教材章节:第一章:个人财务管理概述第二章:个人记账管理系统的使用方法第三章:个人财务管理的实践应用教学内容确保与课本内容紧密关联,结合实际案例,使学生在掌握理论知识的同时,能够提高实际操作能力。
个人财务管理系统设计方案报告1通用.doc
个人财务管理系统设计方案报告1个人财务管理系统一、课程设计内容独立完成一个小型地个人财务管理系统,各方面地功能要有一个初步地完善.1.了解课题,进行分析,设计内容,编写代码,完成编译修改和程序测试.2.该管理系统有一个登陆界面,界面有几个小版块,包括信息地输入输出,修改删除等功能,它们分别由一个主菜单控制,用户可进行选择.当然用户需要正确地密码才能进入系统.整个程序需要编程者运用所学知识自行独立完成.个人收集整理勿做商业用途序号阶段名称具体内容要求1 数据录入录入系统所需地数据用链表或结构体数组组织数据2 数据存储数据读写将录入地数据存储,对数据进行读写操作用文件地形式将录入地数据存储,并进行读写操作3 数据修改对数据进行更新操作可以进行新数据地插入,旧数据地修改操作4 数据删除对数据进行删除操作根据具体题目将对应记录删除5 数据查询按要求对数据进行查询含简单查询及组合查询6 数据统计按要求对数据进行统计含简单统计及综合统计7 数据排序按要求对数据进行排序含升序排序及降序排序8 数据报表按要求对数据打印报表依规定地报表格式对数据打印报表9 界面设计总体菜单界面简单菜单、下拉式或弹出式三、需求分析程序实现地功能:系统有一个登陆界面:用户1输入正确地密码,方可进入系统.2完成个人财务基本信息地录入和显示.3可按编号对财务信息进行查询.4 用户可以看到所有财务信息5用户可添加、删除财务信息.6用户可对财务信息进行排序和统计.7利用文件指针对信息进行保存和读取.程序地目地:可供用户及时全面地了解自己地财务状况并合理理财.四、概要设计1.系统结构图(功能模块图)2.功能模块说明个人收集整理勿做商业用途(1)用户进入登录界面,输入密码,确认用户身份(没有注册地用户需进行注册).(2)主函数模块:包括登陆界面,主菜单界面.(3)输出模块:通过一些简单地操作显示个人财务信息(编号、名称、单位、电话、价格等).(4)添加模块:通过界面中地添加按钮添加新地财务信息.(5)查找模块:按编号以及任务地账号和时间进行查找财务信息.(6)修改模块:查找到要修改地财务信息,并对信息有选择地进行修改. (7)删除模块:按编号删除已存在地财务信息.(8)排序模块:按库存量对已存在地财务信息进行排序. (9)统计模块:统计已存在地财务信息地总库存量并输出. (10)保存信息模块:以文本文件地形式保存财务信息. (11)读取信息模块:从保存地文本文件中读取财务信息. 五、详细设计及运行结果各模块流程图主函数模块:登陆界面添加信息显示信息查询信息修改信息删除信息信息排序统计信息保存信息退出系统菜单界面判断密码cnt录入信息判断选择添加信息显示信息查找息修改信息删除信息信息排序统计信保存信息退出系统开始输入密码是输入选择1 2 3 4 5 6 7 8 0 输入模块结束个人收集整理勿做商业用途添加按钮输入添加信息地个数输入要添加地信息编号是否存在输入要添加地信息输出添加成功结束是否添加模块开始查询模块输入帅选地条件是否是否有此信息输出该信息结束删除模块个人财务管理系统设计方案报告1第2页修改模板: 开始查找要删除地信息是否存在删除该信息否是结束删除模块开始查找要修改地信息是否存在修改基本信息否是结束修改模块版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。
数据结构课程设计个人账簿管理系统
个人账簿管理系统学院:数学与计算机科学学院班级:信息与计算科学13级学号:1060413014048姓名:张童目录1 系统功能分析 (1)1.1 个人账簿管理 (1)1.2 解决个人账簿管理 (2)1.2.1 概要分析 (2)1.2.2 流程图 (3)2 系统总体设计 (4)2.1 系统总体设计思路 (4)2.2 各个功能模块简介 (4)2.2. 1结构体数组 (4)3 界面设计 (5)3.1 主界面: (5)3.2 显示输入数据界面 (5)3.3 显示所有输入数据界面 (6)3.4 添加数据界面 (6)3.5 删除六月份的数据信息界面 (7)3.6 按收入排序界面 (7)4 小结 (8)参考文献 (9)附录:程序源代码 (10)1 系统功能分析本程序可以实现个人账簿的按月份插入、输出、修改、查询、删除、按收入排序、按月份大小排序、将数据保存到文件和加载文件数据等功能,其中每一个功能,都分别使用了一个函数,其中程序的主界面简洁明了。
可以按主界面的提示完成每一块功能。
1)问题描述个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。
进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。
2) 基本要求(1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;(2)完成最低要求:建立一个文件,包括某人5个月的收支情况,能对文件中的信息进行扩充(追加),修改和删除;(3)进一步要求:完成对每月的开支排序,以及完成系统查询功能。
有兴趣的同学可以自己扩充系统功能。
1.1 个人账簿管理在程序中定义了一个结构体主要包括(月份,全部的收入,食品开支,房租,水电费,医疗费,储蓄,子女教育费和总体的支出费用)其次定义了10个函数,分别是输入信息,查看指定月份信息,查看全部月份信息,插入信息,修改信息,删除指定月份信息,按月份大小排序,按总收入排序,保存数据到文件和加载文件数据。
软件工程课程设计 (个人账本管理系统)
软件工程课程设计报告---个人帐本管理一、需求分析1、系统开发背景当今社会是一个信息与科技并行的时代,在社会中消费时每个人都有的社会行为,消费与人的日常生活是息息相关的,一个人如果有一个很好的消费观的话能给自己带来很到好处。
鉴于此目的,编写了一个小型的个人账本管理系统。
此系统是一个简单的系统,可以管理个人的日常消费,可以为一般人所使用。
对于业务较多的用户来说此系统就不是一个很好的选择。
2、软件主要组成及功能●收入模块功能:录入收入任何时间录入你所得到的收入(共有以下几种选择:1、工资;2、奖金;3、其他收入;);输入你所的到的金额;录入金额的原因(可选);●支出模块功能:支出的记录什么时候什么类型的支出(1、生活费;2、日常用品;3、休闲娱乐;4、社交应酬;5、交通费;6、通讯费;7、医疗保健;8、其他支出)输入支出的金额什么原因的支出●查询模块功能:查询以选择查询的类型(1、支出;2、收入;3、全部)时间(1、今天;2、昨天;3、本周;4、上周;5、本月;6、上月;7、本年;8、去年;9、全部;)以及什么类别消费的金额在什么范围之类的记录将时间,类别,金额,备注显示出来●统计模块功能:统计选择统计的类型(1、支出;2、收入;)时间(1、今天;2、昨天;3、本周;4、上周;5、本月;6、上月;7、本年;8、去年;9、全部;)什么类别统计的方式(1、总和;2、平均值;3、最大值;4、最小值;)将时间,类别,方式,数值显示出来●管理模块功能:完成系统相应的管理可以对数据库进行备份数据库的还原查看日志操作。
●修改模块功能:对已有数据进行修改更新操作对记录进行修改对记录删除。
●退出模块退出此系统3、用户特点及一般约束4、功能需求(DFD图)收入顶层图:收入录入填写相应的信息录入成功事务确认成功一层图:收入录入填写相应的信息录入成功事务确认成功返回确认信息D:添加收入信息支出顶层图:支出录入填写相应的信息录入成功事务确认成功一层图:支出录入填写相应的信息录入成功事务确认成功返回确认信息D:添加支出信息查询顶层图:查询命令输入填写相应的信息查询成功事务确认成功一层图:查询命令输入填写相应的信息显示查询结果事务确认成功返回确认信息D:查询信息统计顶层图:统计命令输入填写相应的信息显示统计结果事务确认成功一层图:统计命令输入填写相应的信息显示统计结果事务确认成功返回确认信息D:查询信息管理顶层图:管理命令输入填写相应的信息管理成功事务确认成功一层图:管理命令输入填写相应的信息处理成功事务确认成功返回确认信息D:记录查询修改顶层图:修改命令输入填写相应的信息修改成功事务确认成功一层图:修改命令输入填写相应的信息修改成功事务确认成功返回确认信息D:查询数据库5、外部接口需求在用户界面方面要求对每一个操作都以主界面为前提弹出相应的对话框,硬软件接口方面没有特别的需求,一般用户都可以直接使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称:数据结构湖南涉外经济学院本科学生课程设计(论文)题目个人账簿管理毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:摘要个人账簿管理是根据现实生活中的应用而编写的,主要是用C语言编写,其中运用到了文件的基本操作,结构体数组,宏定义,还有几个主要循环的应用,其功能包括按月份插入、输出、修改、查询、删除及按开支排序,包括了账簿管理的大部分功能,适合于大部分家庭用户。
关键词: C语言,算法,数据结构,个人账簿管理目录第一章前言 (1)第二章系统功能分析 (2)2.1个人账簿管理 (2)2.2解决个人账簿管理 (2)2.2.1 概要分析 (2)2.2.2 流程图 (3)第三章总体设计 (4)3.1概括 (4)3.2基本思路 (4)第四章详细设计 (5)4.1程序代码实现 (5)4.1.1程序主界面 (5)4.1.2创建结构体 (7)4.1.3数据的插入 (7)4.1.4数据的删除 (8)4.1.5数据的排序 (10)第五章系统实现 (12)第六章解决的关键问题 (14)第七章结论 (15)结束语 (16)8.1编程感想 (16)参考文献 (17)程序分工 (18)第一章前言本系统使用Microsoft Visual 2005开发工具创建Web应用程序。
采Visual 开发语言,使用文件的操作达到个人账簿管理的各种功能。
文章详细讨论了该系统的开发、设计环境、实现算法及其具体的实现。
数据结构是一门专业技术基础课。
它的教学要求是:学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构,存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。
另一方面,本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚和正确意读,符合软件工程的规范。
如果说高级语言程序设计的训练过程,要进行了结构化的程序设计的初步训练的话,那么数据结构就要培养我们的数据抽象能力个人账簿管理系统是结合了文件、结构体、函数等操作,运用了数据结构中最基本的一些算法,使程序简单明了,使用了一些最优的算法,从而达到了不浪费内存的目的,同时也加快了程序的运行速度。
第二章系统功能分析本程序可以实现个人账簿的按月份插入、输出、修改、查询、删除及按开支排序,其中每一个功能,都分别使用了一个函数,其中程序的主界面简洁明了。
可以按主界面的提示完成每一块功能。
2.1个人账簿管理在程序中定义了一个结构体主要包括(月份,全部的收入,食品开支,房租,水电费,医疗费,储蓄,子女教育费和总体的支出费用)其次定义了6个函数,分别是插入信息,收支情况,修改信息,查询月份信息,删除某月信息,其中每一个程序都能实现相应部分的功能,并且在每一个程序中都使用了相应的文件操作,和结构体数组的操作,通过对数组,结构体,文件的删除、查找、修改及排序使程序都完成了相应的功能。
2.2解决个人账簿管理2.2.1 概要分析个人账簿管理通过:void Insert() // 插入信息void Outlin( ) //收支情况void Modify(int xg) //修改信息void Search(int yf) // 查询月份信息void Del(int yf) // 删除某月信息void ps() //按收支排序这六个函数分别完成每一部分功能,其中都是从主函数调用相应的函数,完成相应的功能。
2.2.2流程图第三章总体设计3.1概括个人账簿管理主要是通过文件的输入、输出、查询、修改、删除、排序来完成程序的主要功能,其中每一个功能都为对应的一个函数,增加程序的可读性,以实现程序的整体功能。
3.2基本思路1.首先建立一个结构体,用户输入某个月的数据通过相应的文件操作就把他追加到文件data.dat中。
2.输入整体的收支情况就是直接从文件中读出所有的数据然后输出到屏幕中。
3.修改信息是建立一个临时的temp.dat的文件,通过fp1,fp2两个文件指针和一个结构体变量b ,fp1指向data.dat,fp2指向temp.dat。
然后把fp1中的数据读到b 中,就通过对比,假如b->month==xg就把x[xg]的地址写入到fp2中,否则就直接把b中的数据写到fp2中,通过循环到!feof(fp1)为止,这个就把所有的修改的数据写入到了fp2,关闭两个文件,最后删除原来的data.dat文件,然后把temp.dat文件换名成为data.dat文件,这样就达到了修改的目的。
4.查询月份信息是在主函数中输入一个数,然后在查询函数中判断是否月份相同,假如月份相同就输出来。
5.删除某月信息是和修改某月信息一样的,只是把其中的一句改成b->month!=xg就直接写入到fp2中,经过换名就达到了效果。
6.按收支排序是首先建立一个结构体数组,把所有的数据读到数组中,然后按收支情况排序,排好序之后就又把他写入到temp.dat的文件中,删除源文件,替换文件名就实现了排序的功能。
第四章详细设计4.1程序代码实现4.1.1程序主界面void main(){int k,xg,yf;do{printf("\n------------------------------------------------\n");printf("\n ----------欢迎进入个人帐簿管理系统------------- \n\n ");printf("\n -----------个人帐簿管理系统主菜单-------------- \n ");printf("\n 1.插入某月信息\n");printf("\n 2.输出整体收支情况\n");printf("\n 3.修改某月信息\n");printf("\n 4.查询某月信息\n");printf("\n 5.删除某月信息\n");printf("\n 6.按开支排序输出结果\n");printf("\n 0.退出个人帐簿管理系统\n");printf("\n------------------------------------------------\n"); /*输出开始界面*/scanf("%d",&k);switch(k){case 1:{/*插入某月信息*/Insert();}break;case 2:{/*输出所有月份的收支情况*/Outlin();}break;case 3:{/*修改某月信息*/printf("请输入需要修改的月份:\n"); scanf("%d",&xg);Modify(xg);}break;case 4:{/*查询某月信息*/printf("请输入需要查询的月份:\n"); scanf("%d",&yf);Search(yf);}break;case 5:{/*删除某月信息*/printf("请输入需要删除的月份:\n");scanf("%d",&yf);Del(yf);} break;case 6:{/*排序*/ps();}break;case 0:exit(0);/*退出个人帐簿管理系统*/default : printf("输入错误,请重新输入"); }}while(k<=6);}4.1.2创建结构体struct ElemType{int month;/*月份*/int income;/*全部月收入*/int food; /*食品开支*/int rent;/*房租*/int utilities; /*水电费*/int medical;/*医疗费*/int savings;/*储蓄*/int education;/*子女教育费*/int payment ;/*总支出*/}x[12]; /*一个月开支信息*/4.1.3数据的插入void Insert() // 插入信息{int j,i=1;FILE *fp;printf("请依次输入\n月份当月收入食品开支房租水电费医疗费子女教育 \n ");scanf("%d%d%d%d%d%d%d",&x[i].month,&x[i].income,&x[i].food,&x[i].r ent,&x[i].utilities,&x[i].medical,&x[i].education);x[i].payment=x[i].food+x[i].rent+x[i].utilities+x[i].medical+x[i].edu cation;x[i].savings=x[i].income-x[i].payment;if((fp=fopen("data.dat","ab"))==NULL){printf("can not open file\n");exit(0);}for(j=1;j<=i;j++)fwrite(&x[j],sizeof(struct ElemType),1,fp);fclose(fp);}4.1.4数据的删除void Del(int yf) // 删除某月信息{FILE *fp1,*fp2;ElemType *b;if((fp1=fopen("data.dat","rb"))==NULL){printf("can not open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("can not open file\n");exit(0);}b=(ElemType *)malloc(sizeof(struct ElemType)); rewind(fp1);fread(b,sizeof(struct ElemType),1,fp1);while(!feof(fp1)){if(b->month!=yf)fwrite(b,sizeof(ElemType),1,fp2);fread(b,sizeof(ElemType),1,fp1);}fclose(fp1);fclose(fp2);remove(File); //删除源文件rename("temp.dat",File); //把临时文件改成源文件名 Outlin();//调用输出函数,输出整体的开支}4.1.5数据的排序void ps() //按收支排序{FILE *fp1,*fp2;ElemType a[12],h;int i,j,c=0;if((fp1=fopen("data.dat","rb"))==NULL){printf("can not open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("can not open file\n");exit(0);}for(j=1;!feof(fp1);j++,c++)fread(&a[j],sizeof(struct ElemType),1,fp1);for(i=1;i<c;i++)for(j=1;j<c;j++){if(a[i].payment<a[j].payment){h=a[i];a[i]=a[j];a[j]=h;}}for(i=1;i<c;i++)fwrite(&a[i],sizeof(struct ElemType),1,fp2); fclose(fp1);fclose(fp2);remove(File); //删除源文件rename("temp.dat",File); //把临时文件改成源文件名 Outlin();//调用输出函数,输出整体的开支}第五章系统实现其中程序结果如下:图5. 1 程序的主界面图5.2 程序插入月份界面图5.3 程序输出整体收支情况图5.4 修改某月信息(修改3月份的数据)图5.5 查询2月份的数据图5.5 删除3月份的信息图5.6 按收支排序第六章解决的关键问题本程序主要解决的关键问题如下:1.文件的读写操作及读写所用的方式2.文件的修改及删除3.文件的排序4.结构体的操作5.函数的参数传递问题第七章结论通过这次课程设计使我了解到了:1.写一个程序首先要有算法,而算法有很多种,使用最优的算法,能节约很多时间和加快系统的速度。