1、个人帐簿管理系统*实践教学*兰州理工大学计算机与通信学院2012年春季学期算法与数据结构课程设计 题 目:个人账簿管理系统 专业班级: 软件工程基地班 姓 名: 学 号: 10240541 指导教师: 王旭阳 成 绩: _ 目 录摘 要.1正文.21. 采用类c语言定义相关的数据类型22. 各模块的伪码算法.23. 函数的调用关系图 34. 调试分析 45. 测试结果 56. 源程序(带注释) 10总 结 30参考文献 31致 谢 31附件 任务一源程序代码 32摘 要 现如今,随着计算机的普及,人们了解到了计算机强大的功能,以及带给我们诸多方面的便利,个人账簿管理系统正是如此它是建立在计算机
2、硬件上的一个小软件。随着信息技术,计算机技术的发展,在社会各领域都已经离不开信息系统的支持。个人账簿管理系统针对个人用户设计,是一个单用户系统,它提供各全方位的财务数据统计、数据查询、数据打印,方便个人理财,做出正确的财务决策。为了更加适应现代越来越快的生活节奏和越来越多的个人收支情况,以科学的管理、使用的简便为出发点,建立了一个具有实用性、高效性及功能划分细致的个人财务管理系统,Visual C作为前台开发工具,运用面向对象的设计方法,完成了该管理系统的模块和功能设计。结果表明:系统具有较高的可靠性和灵活性,且便于扩充和维护。关键词: 个人账簿管理;存储结构;逻辑结构。正文1. 采用类c语言
3、定义相关的数据类型 typedef struct char month10; char spxf5; char fzfy5; char znjy5; char sdfy5; char ylfy5; char cxfy5; char srfy5; MYBILL;12. 各模块的伪码算法 void showpaixu(MYBILL bill,int length)menu1: system(cls); int choice; printf(nnnn *个人账簿信息管理系统*nn); printf( 1. 显示全部个人账簿信息nn); printf( 2. 按月份顺序排序nn); printf( 3
4、. 按每月收入排序nn); printf( 0. 返回上一级菜单nn); printf( *n); printf( 请选择(03)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); save(bill,length); printf( 请按任意键返回.n); getch(); break;case 3: l
5、ength=load(bill); srfysort(bill,length); save(bill,length); printf( 请按任意键返回.n); getch(); break; case 0: return; goto menu1;3 函数的调用关系图 4 调试分析a.调试中遇到的问题及对问题的解决方法 1、 输出的运行界面不整齐,例如“*”在编写程序的时候输入不整齐,运行出来的界面就不好看。2、 在使用解释符号时应该注意“/”,不适合于TC的环境,要用“/* */”。3、 函数的调用不正确。解决方法:当在一个函数中要调用另一个函数时,必须在调用函数的函数z之前对被调用函数进行类
6、型的声明 b、算法的时间复杂度和空间复杂度 算法的时间复杂度为T(n)=O(f(n)=O(n) 算法的空间复杂度为S(n)=O(f(n) 5 测试结果 6 源程序(带注释)#include stdio.h #include stdlib.h#include string.h#include conio.h#define M 50typedef struct char month10; char spxf5; char fzfy5; char znjy5; char sdfy5; char ylfy5; char cxfy5; char srfy5; MYBILL;void mprint(MYB
7、ILL temp) /int i printf(n*n); printf(n 月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 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); printf(*end*n);int enter(MYBILL t) system(cls); int i,n; printf(*n); printf(请确定您要输入几个
8、月的账单: ); 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%s,&ti.month,&ti.spxf,&ti.fzfy,&ti.znjy,&ti.sdfy,&ti.ylfy,&ti.cxfy,&ti.srfy); printf(-n); printf(信息录入成功!); return n; if(n=0) printf(对不起,您输入的月数不正确n); e
9、xit(0);void list(MYBILL t,int n) system(cls); int i; printf(n*个人账簿信息*n); printf( 总共有 %d 个月的账单 n,n); printf( 月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 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) pri
10、ntf(请输入任意键继续.n); getchar(); printf(*结束*n);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
11、(%d,&ch); if(ch=1) printf(请输入新的记录n); printf(*n); printf( 月份 食品消费 房租费用 工作子女教育费用 水电费用 医疗费用 储蓄费用 收入费用n); printf(-n); scanf(%s%s%s%s%s%s%s%s,&ti.month,&ti.spxf,&ti.fzfy,&ti.znjy,&ti.sdfy,&ti.ylfy,&ti.cxfy,&ti.srfy); printf(-n); printf(记录修改成功!n); int add(MYBILL t,int n) MYBILL temp; int i,j; char s20; pr
12、intf(请输入您要插入的记录n); printf(*n); printf( 月份 食品消费 房租费用 工作子女教育费用 水电费用 医疗费用 储蓄费用 收入费用n); printf(-n); scanf(%s%s%s%s%s%s%s%s,&temp.month,&temp.spxf,&temp.fzfy,&temp.znjy,&temp.sdfy,&temp.ylfy,&temp.cxfy,&temp.srfy); printf(-n); printf(请输入您要插入的位置 n); scanf(%s,&s); i=monthfind(t,n,s); for(j=n-1;j=i;j-) strc
13、py(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); str
14、cpy(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);
15、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
16、%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; strcpy(temp.month,tj.month); strcpy(temp.spxf,tj.spxf); strcpy(temp.fzfy,tj.fzfy); strcpy(te
17、mp.znjy,tj.znjy); strcpy(temp.sdfy,tj.sdfy); strcpy(temp.ylfy,tj.ylfy); strcpy(temp.cxfy,tj.cxfy); strcpy(temp.srfy,tj.srfy); strcpy(tj.month,tj+1.month); strcpy(tj.spxf,tj+1.spxf); strcpy(tj.fzfy,tj+1.fzfy); strcpy(tj.znjy,tj+1.znjy); strcpy(tj.sdfy,tj+1.sdfy); strcpy(tj.ylfy,tj+1.ylfy); strcpy(tj.
18、cxfy,tj+1.cxfy); strcpy(tj.srfy,tj+1.srfy); strcpy(tj+1.month,temp.month); strcpy(tj+1.spxf,temp.spxf); strcpy(tj+1.fzfy,temp.fzfy); strcpy(tj+1.znjy,temp.znjy); strcpy(tj+1.sdfy,temp.sdfy); strcpy(tj+1.ylfy,temp.ylfy); strcpy(tj+1.cxfy,temp.cxfy); strcpy(tj+1.srfy,temp.srfy); if(flag=0) break; prin
19、tf(按月份排序成功!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; strcpy(temp.month,tj.month); strcpy(temp.spxf,tj.spxf); strcpy(temp.fzfy,tj.fzfy); strcpy(temp.znjy,tj.znjy); strcpy(temp.sdfy,tj.sdfy); strcpy(temp.ylfy,tj.ylfy); strcpy(temp.cxfy,tj.cx
20、fy); strcpy(temp.srfy,tj.srfy); strcpy(tj.month,tj+1.month); strcpy(tj.spxf,tj+1.spxf); strcpy(tj.fzfy,tj+1.fzfy); strcpy(tj.znjy,tj+1.znjy); strcpy(tj.sdfy,tj+1.sdfy); strcpy(tj.ylfy,tj+1.ylfy); strcpy(tj.cxfy,tj+1.cxfy); strcpy(tj.srfy,tj+1.srfy); strcpy(tj+1.month,temp.month); strcpy(tj+1.spxf,temp.spxf); strcpy(tj+1.fzfy,temp.fzfy); strcpy(tj+1.znjy,temp.znjy); strcpy(tj+1.sdfy,temp.sdfy); strcpy(tj+1.ylfy,temp.ylfy); strcpy(tj+1.cxfy,temp.cxfy); strcpy(tj+1.srfy,temp.srfy); if(flag=0) break; printf(按每月收入排序成功!n);void copy() char outfile20; int i,n; MYBILL t; FILE *sfp,*tfp;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1