个人账簿管理系统课程设计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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间: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.写一个程序首先要有算法,而算法有很多种,使用最优的算法,能节约很多时间和加快系统的速度。