个人账簿管理系统_第1页
个人账簿管理系统_第2页
个人账簿管理系统_第3页
个人账簿管理系统_第4页
个人账簿管理系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计(论文)学 号: 课 程 设 计题 目个人账簿管理系统教 学 院计算机专 业信息管理班 级姓 名指导教师2011年12月30日课程设计任务书20112012学年 第 一 学期学生姓名: 专业班级: 10信息管理 指导教师: 工作部门: 计算机学院 一、课程设计题目:个人账簿管理系统二、课程设计内容个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。该系统采用了Windows XP操作系统结合Visual C+ 6.0,TC 2.0等软件开发,可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。三、进度安排1. 系统设计,确定函数功能及其实现过程;2. 根据前面的结果,编写程序清单,进行调试;3. 经过反复的编译,调试,测试,程序运行成功;4. 撰写课程设计报告,完成整个论文报告的工作,并打印;课题答辩。四、基本要求1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:建立一个文件,包括某人5个月的收支情况,能对文件中的信息进行扩充(追加),修改和删除;3. 进一步要求:完成对每月的开支排序,以及完成系统查询功能;4. 应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。 目录 一 概述3二 总体方案设计3 1整体设计思路3 2. 输入系统3 3排序系统44查询系统45删除系统46.其他部分函数功能5三 命令行界面代码6四 程序的调试与运行结果说明17五 课程设计总结20参考文献20数据结构 课程设计成绩评定表21 一 概述 该课程设计主要设计个人账簿管理系统已记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女交用费用,水电费,医疗费,储蓄等。在课程设计中,用到了C语言以及数据结构中的相关知识,当然也有少数参考了其他人对某些问题的处理经验。对于进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况,可以对某月的开支进行删除操作。 二 总体方案设计1整体设计思路系统共分五个子系统:信息输入,信息浏览及排序,信息查询,信息更改,文件操作。在相应的系统内可完成相应的功能。各模块相对独立,每个模块用一个大型的函数来处理数据。主程序:1、信息输入 2、信息浏览及排序 3、信息查询 4、信息更改 5、文件操作 0、退出管理系统2. 输入系统功能:输入数据,然后将数据写入文件。算法:int enter(MYBILL t) for(i=0;in;i+) scanf(%s%s%s%s%s%s%s,ti.month,ti.spxf,ti.fzfy,ti.znjy, ti.sdfy,ti.ylfy,ti.cxfy); f=atof(ti.spxf)+atof(ti.fzfy)+atof(ti.znjy)+atof(ti.sdfy)+atof(ti.ylfy)+atof(ti.cxfy); sprintf(ti.srfy,%.2f,f);void save(MYBILL t,int n)for(i=0;in;i+) fprintf(fp,%-8s%4s%13s%8s%7s%12s%8s%12s,ti.month,ti.spxf,ti.fzfy,ti.znjy, ti.sdfy,ti.ylfy,ti.srfy,ti.cxfy); fprintf(fp,rn);3排序系统功能:1、按月份排序 2、按输入排序算法:void monthsort(MYBILL t,int n) for(i=0;in;i+) flag=0; for(j=0;j0) flag=1;temp=tj;tj=tj+1; tj+1=temp; if(flag=0)break; void srfysort(MYBILL t,int n) for(i=0;in;i+) flag=0; for(j=0;j0) flag=1; temp=tj; tj=tj+1;tj+1=temp; if(flag=0)break; 4查询系统功能:按月份循序查找,调用输出函数输出算法:void monthsearch(MYBILL t,int n) for(i=0;in;+i) if(strcmp(s,ti.month)=0)mprint(ti); break;void mprint(MYBILL temp)printf(%8s%6s%10s%10s%10s%10s%10s%10sn,temp.month,temp.spxf,temp.fzfy,temp.znjy,temp.sdfy,temp.ylfy,temp.cxfy,temp.srfy);5删除系统功能:先是查找要删除的月份账单,然后对其删除,删除某月账单后,其他的月份依次 向前移动算法:int delet(MYBILL t,int n)/删除信息 for(j=i+1;jn;j+) strcpy(tj-1.month,tj.month); .6.其他部分函数功能void list(MYBILL t,int n)/输出void rewrite(MYBILL t,int n)/根据查找月份,修改信息int add(MYBILL t,int n)/添加信息int load(MYBILL t)/读取文件void copy()/另生成新文件 7.程序流程图 开始 列出一个操作目录,选择要操作的编号 01 5432 退出系统信息浏览及排序文件操作信息更改信息查询信息输入 结束列出操作目录选择要操作编号三 命令行界面代码 #include stdio.h #include stdlib.h#include #include conio.htypedef struct char month10; char spxf5; char sdfy5; char ylfy5; char cxfy5; char fzfy5; char znjy5; char srfy20; MYBILL;void mprint(MYBILL temp) printf( 月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n); printf(-n); printf(%8s%6s%10s%10s%10s%10s%10s%10sn,temp.month,temp.spxf,temp.fzfy,temp.znjy, temp.sdfy,temp.ylfy,temp.cxfy,temp.srfy);/输入信息int enter(MYBILL t) int i,n; double f; system(cls); printf(请确定您要输入几个月的账单: ); scanf(%d,&n); if(n0) printf(请输入您的个人账单信息:n); printf(n 月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 n); printf(-n); for(i=0;in;i+) scanf(%s%s%s%s%s%s%s,ti.month,ti.spxf,ti.fzfy,ti.znjy, ti.sdfy,ti.ylfy,ti.cxfy); f=atof(ti.spxf)+atof(ti.fzfy)+atof(ti.znjy)+atof(ti.sdfy)+atof(ti.ylfy)+atof(ti.cxfy); sprintf(ti.srfy,%.2f,f); printf(-n); printf(信息录入成功!); return n; if(n=0) printf(对不起,您输入的月数不正确!n); exit(0);/输出void list(MYBILL t,int n) int i; system(cls); printf(*个人账簿信息*n); printf( 总共有 %d 个月的账单 n,n); printf( 月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n); for(i=0;in;i+) printf(%8s%6s%10s%10s%10s%10s%10s%10sn,ti.month,ti.spxf,ti.fzfy,ti.znjy, ti.sdfy,ti.ylfy,ti.cxfy,ti.srfy); if(i+1)%10=0) printf(请输入任意键继续.n); getchar(); /根据月份查找,参数有结构体变量,长度,字符指针int monthfind(MYBILL t,int n,char *s) int i; for(i=0;in-1) printf(对不起,没有找到要删除的月份的账单!n); else mprint(ti); printf(您确认要删除该月的账单么?(1.是/0.否)n); scanf(%d,&ch); if(ch=1) for(j=i+1;jn-1) printf(对不起,没有找到要修改的记录!n); else mprint(ti); printf(您确定要修改这条记录么?(1.是/0.否)n); scanf(%d,&ch); if(ch=1) printf(请输入新的记录n); printf(月份 食品消费 房租费用 子女教育费用 水电费用 医疗费用 储蓄费用 n); printf(-n); scanf(%s%s%s%s%s%s%s,ti.month,ti.spxf,ti.fzfy,ti.znjy, ti.sdfy,ti.ylfy,ti.cxfy); f=atof(ti.spxf)+atof(ti.fzfy)+atof(ti.znjy)+atof(ti.sdfy)+atof(ti.ylfy)+atof(ti.cxfy); sprintf(ti.srfy,%.2f,f); printf(-n); printf(记录修改成功!n); /添加信息int add(MYBILL t,int n) MYBILL temp; int i,j; double f; char s20; printf(请输入您要插入的记录:n); printf(月份 食品消费 房租费用 子女教育费用 水电费用 医疗费用 储蓄费用 n); printf(-n); scanf(%s%s%s%s%s%s%s,temp.month,temp.spxf,temp.fzfy,temp.znjy, temp.sdfy,temp.ylfy,temp.cxfy); f=atof(temp.spxf)+atof(temp.fzfy)+atof(temp.znjy)+atof(temp.sdfy)+atof(temp.ylfy)+atof(temp.cxfy); sprintf(temp.srfy,%.2f,f); printf(-n); printf(请输入您要插入的位置 :n); scanf(%s,s); i=monthfind(t,n,s); /根据查找月份,找到要添加的位置 for(j=n-1;j=i;j-) strcpy(tj+1.month,tj.month); strcpy(tj+1.spxf,tj.spxf); strcpy(tj+1.fzfy,tj.fzfy); strcpy(tj+1.znjy,tj.znjy); strcpy(tj+1.sdfy,tj.sdfy); strcpy(tj+1.ylfy,tj.ylfy); strcpy(tj+1.cxfy,tj.cxfy); strcpy(tj+1.srfy,tj.srfy); strcpy(ti.month,temp.month);/在最后添加 strcpy(ti.spxf,temp.spxf); strcpy(ti.fzfy,temp.fzfy); strcpy(ti.znjy,temp.znjy); strcpy(ti.sdfy,temp.sdfy); strcpy(ti.ylfy,temp.ylfy); strcpy(ti.cxfy,temp.cxfy); strcpy(ti.srfy,temp.srfy); n+; printf(记录插入成功!n); return n;/写入文件void save(MYBILL t,int n) int i; FILE *fp; if(fp=fopen(mybill.txt,wb)=NULL) printf(文件不能打开!n); exit(1); fprintf(fp,%d,n); fprintf(fp,rn); for(i=0;in;i+) fprintf(fp,%-8s%4s%13s%8s%7s%12s%12s%8s,ti.month,ti.spxf,ti.fzfy,ti.znjy, ti.sdfy,ti.ylfy,ti.cxfy,ti.srfy); fprintf(fp,rn); fclose(fp);/读取文件int load(MYBILL t) int i,n; FILE *fp; if(fp=fopen(mybill.txt,rb)=NULL)/只读取文件 printf(对不起,不能打开文件!n); exit(1); fscanf(fp,%d,&n); for(i=0;in;i+) fscanf(fp,%s%s%s%s%s%s%s%s,ti.month,ti.spxf,ti.fzfy,ti.znjy, ti.sdfy,ti.ylfy,ti.cxfy,ti.srfy); fclose(fp); return n;/按月份排序void monthsort(MYBILL t,int n) int i,j,flag; MYBILL temp; for(i=0;in;i+) flag=0; for(j=0;j0)/前后两个字符串相互比较 flag=1; temp=tj; tj=tj+1; tj+1=temp; if(flag=0)break; printf(按月份排序成功!n);/按收入排序void srfysort(MYBILL t,int n) int i,j,flag; MYBILL temp; for(i=0;in;i+) flag=0; for(j=0;j0) flag=1; temp=tj; tj=tj+1; tj+1=temp; if(flag=0)break; printf(按每月收入排序成功!n);/另生成新文件void copy() char outfile20; int i,n; MYBILL t; FILE *sfp,*tfp; if(sfp=fopen(mybill.txt,rb)=NULL) printf(对不起,不能打开您所需要的文件!n); exit(1); printf(请输入目标文件名,例如:c:f1mybill.txtn); scanf(%s,outfile); if(tfp=fopen(outfile,wb)=NULL) printf(对不起,不能打开您所需要的文件!n); exit(1); fscanf(sfp,%d,&n);/从sfp中读取文件 fprintf(tfp,%d,n);/写入tfp中 fprintf(tfp,rn); for(i=0;in;i+) fscanf(sfp,%s%s%s%s%s%s%s%s,t.month,t.spxf,t.fzfy,t.znjy, t.sdfy,t.ylfy,t.cxfy,t.srfy); fprintf(tfp,%-8s%4s%13s%8s%7s%12s%12s%8s,t.month,t.spxf,t.fzfy,t.znjy, t.sdfy,t.ylfy,t.cxfy,t.srfy); fprintf(tfp,rn); fclose(sfp); fclose(tfp);/根据月份查找,参数结构体,长度void monthsearch(MYBILL t,int n) char s20; int i; printf(请输入您要查找的月份: ); scanf(%s,s); for(i=0;in;+i) if(strcmp(s,ti.month)=0) mprint(ti); /输出该月信息 break; if (i=n) printf(对不起,查找不到您所需要的信息!); void showpaixu(MYBILL bill,int length) int choice; menu1: system(cls); printf( *个人账簿信息管理系统*nn); printf( 1. 显示全部信息nn); printf( 2. 按月份顺序排序nn); printf( 3. 按每月收入排序nn); printf( 0. 返回上一级菜单nn); printf( 请选择(0-3)n ); scanf(%d,&choice); switch(choice) case 1: length=load(bill); list(bill,length); printf( 请按任意键返回.n); getch(); break; case 2: length=load(bill); monthsort(bill,length); list(bill,length); save(bill,length); printf( 请按任意键返回.n); getch(); break; case 3: length=load(bill); srfysort(bill,length); list(bill,length); save(bill,length); printf( 请按任意键返回.n); getch(); break; case 0: return; goto menu1;void chazhao(MYBILL bill,int length) int choice; menu2: system(cls); printf( *个人账簿信息管理系统*nn); printf( 1. 通过月份查询nn); printf( 0. 返回上一级菜单nn); printf( 请选择(0-1):n ); scanf(%d,&choice); switch(choice) case 1: length=load(bill); monthsearch(bill,length); printf( 请按任意键返回.n); getch(); break; case 0: return; goto menu2;void biangeng(MYBILL bill,int length) int choice; menu3: system(cls); printf( *个人账簿管理系统*nn); printf( 1. 删除记录nn); printf( 2. 修改记录nn); printf( 3. 添加记录nn); printf( 0. 返回上一级菜单nn); printf( 请选择(0-3):n ); scanf(%d,&choice); switch(choice) case 1: length=load(bill); length=delet(bill,length); save(bill,length); printf( 请按任意键返回.n); getch(); break; case 2: length=load(bill); rewrite(bill,length); save(bill,length); printf( 请按任意键返回.n); getch(); break; case 3: length=load(bill); length=add(bill,length); save(bill,length); printf( 请按任意键返回.n); getch(); break; case 0: return; goto menu3;void wenjian(MYBILL bill,int length) int choice; menu4: system(cls); printf( *个人账簿管理系统*nn); printf( 1. 保存文件nn); printf( 2. 另存新文件nn); printf( 0. 返回上一级菜单nn); printf( 请选择(0-2):n ); scanf(%d,&choice); switch(choice) case 1: length=load(bill); printf(您已经成功的将文件保存!n); printf( 请按任意键返回.n); getch();break; case 2: copy(); printf(新文件生成!n); printf( 请按任意键返回.n); getch();break; case 0: return; goto menu4;void main() int choice; int length; MYBILL bill20; menu: system(cls); printf( *个人账簿管理系统*nn); printf( 请选择以下账簿管理功能:nn); printf( 1. 信息输入nn); printf( 2. 信息浏览及排序nn); printf( 3. 信息查询nn); printf( 4. 信息更改nn); printf( 5. 文件操作nn); printf( 0. 退出管理系统nn); printf( 请选择(0-5):n ); scanf(%d,&choice); switch(choice) case 1: length=enter(bill); save(bill,length); printf(n 请按任意键返回.n); getch();break; case 2: showpaixu(bill,length);break; case 3: chazhao(bill,length);break; case 4: biangeng(bill,length);break; case 5: wenjian(bill,length);break; ca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论