个人帐簿管理系统设计-数据结构_第1页
个人帐簿管理系统设计-数据结构_第2页
个人帐簿管理系统设计-数据结构_第3页
个人帐簿管理系统设计-数据结构_第4页
个人帐簿管理系统设计-数据结构_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、- -计算机学院信管专业数据结构课程设计题 目: 个人帐簿管理系统设计 班 级: 姓 名: 学 号: 同组人: 起 迄 日 期 课程设计地点: 指导教师: 评阅意见:成绩评定:评阅人: 日期:完成日期:2021年12月目录第一章 前言2第二章 系统功能分析21. 功能22. 要求23. 系统功能需求2第三章 总体设计31. 系统设计32. 分块设计3第四章 调试结果和测试分析91. 主界面102.录入数据103.查看数据114.修改数据115.查询数据116.排序数据127.删除数据12第五章 总结心得体会12第六章 参考文献13第七章 致谢14第八章 附录14第一章 前言:程序设计过程有如解

2、决一个实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的根本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程算法。可得最后结果这次我们组要解决的实际问题是个人账簿管理系统的设计,我们将严格按照程序设计的过程来完成这一个课题的设计第二章 系统功能分析1. 功能:个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月

3、的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。2. 要求:1界面友好,函数功能要划分好2总体设计应画一流程图3程序要加必要的注释4要提供程序测试方案5) 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。3. 系统功能需求分析1.文件操作功能:自动加载和保存数据文件。2.数据输入功能:可以按提示录入各项数据。3.数据修改功能:可以按提示修改各项数据。4.查询功能:可按月份、食品消费进行特定查询,及显示全部数据。5.排序功能:完成对每月开支的排序。6.删除功能:可以按提示删除一些数据。7.转码功能:我们对文件用的是dat的形式

4、,设计转码功能,将它转为txt形式。第三章 总体设计1. 系统分析按系统分析的功能要求将系统划分为以下几个主要功能模块: 结构图 主菜单录入数据修改数据查询数据删除数据排序退出2. 分块设计 1主界面设计void menu(void) int item; int mon; Infor *a; a=(Infor *)malloc(sizeof(Infor); do printf("个人帐簿管理系统设计n"); printf("1.录 入 数 据n"); printf("2.查 看 数 据n"); printf("3.修 改 数

5、 据n"); printf("4.查 询 数 据n"); printf("5.排 序 数 据n"); printf("6.删 除 数 据n"); printf("7.退 出 系 统n"); printf("请输入要进行的操作: " ); scanf("%d",&item); while(item>6 | item<-1);2录入功能设计void input(Infor *newI) printf("n依次输入数据:n(本月月份 食品消费

6、 房租费用 子女费用 水电费用 医疗费用 储蓄费用 收入费用)n"); scanf("%d%d%d%d%d%d%d%d",&newI->month,&newI->spxf,&newI->fzfy,&newI->znjy,&newI->sdfy,&newI->ylfy,&newI->cxfy,&newI->srfy); fflush(stdin); 3修改功能设计void modify(Infor *a,int mon) FILE *fp1,*fp2; I

7、nfor *b; b=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,"rt"); fp2=fopen("temp.dat","wt+"); rewind(fp1); fread(b,sizeof(Infor),1,fp1); while (!feof(fp1) if(b->month=mon) fwrite(a,sizeof(Infor),1,fp2); else fwrite(b,sizeof(Infor),1,fp2); fread(b,sizeof(Infor),1,

8、fp1); fclose(fp1); fclose(fp2); remove(FilePath1);/删除源文件 rename("temp.dat",FilePath1);/重命名中间文件 printf("修改数据成功!n" ); changeFormat(); 4查询功能设计Status search(Infor *a) FILE *fp1; int mon; int isfound=0; printf("请正确输入要查询的月份:"); scanf("%d",&mon); fflush(stdin); f

9、p1=fopen(FilePath1,"rb+"); if(fp1=NULL) printf("无法找到文件:%sn",FilePath1); return Error; /返回主函数 rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(fp1) if(a->month=mon) isfound=1; break; else isfound=0; fread(a,sizeof(Infor),1,fp1); fclose(fp1); if(isfound) return OK; else re

10、turn NotFound; 5删除功能设计void delRecord(int mon) FILE *fp1,*fp2; Infor *b; b=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,"rt"); fp2=fopen("temp.dat","wt+"); rewind(fp1); fread(b,sizeof(Infor),1,fp1); while (!feof(fp1) if(b->month!=mon) fwrite(b,sizeof(Infor),1,fp

11、2); fread(b,sizeof(Infor),1,fp1); fclose(fp1); fclose(fp2); remove(FilePath1);/删除源文件 rename("temp.dat",FilePath1);/重命名中间文件 printf("删除数据成功!n" ); changeFormat(); 6排序功能设计void paixu(Infor *a) int i=0,j=0,flag=0,t; pType px8=0,0; char str810="记录月份","食品消费","房租费

12、用","子女费用","水电费用","医疗费用","储蓄费用","本月收入" for(;i<8;i+) pxi.no=i; px0.data=a->month; px1.data=a->spxf; px2.data=a->fzfy; px3.data=a->znjy; px4.data=a->sdfy; px5.data=a->ylfy; px6.data=a->cxfy; px7.data=a->srfy; for(i=1;i<

13、;8;i+) flag=0; for(j=0;j<8-i;j+) if(pxj.data>pxj+1.data) t=pxj.data; pxj.data=pxj+1.data; pxj+1.data=t; t=pxj.no; pxj.no=pxj+1.no; pxj+1.no=t; flag=1; if(flag=0) break; printf("n"); for(i=0;i<8;i+) printf(" %s",strpxi.no); printf("n- n"); for(i=0;i<8;i+) pri

14、ntf("%8d ",pxi.data); printf("n"); 第四章 调试结果与测试分析1. 主界面2. 录入数据3. 查看数据4. 修改数据5. 查询数据6. 排序数据7. 删除数据第五章 总结心得体会在这次的课程设计,我发现了自己还有很多的缺乏,在数据结构操作方面还有很多的不会。还需要更加深入的学习。通过此次的课程设计,在大一语言学习的根底上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等根本方法和技能。第六章 参考文献1. 严蔚敏 吴伟民?数据结构?C语

15、言版清华大学出版社 2007 2.催俊凯。计算机软件根底。机械工业出版社。2007.73.唐发根。数据结构教程第二版。北京航空航天大学出版社。2005.54.谭浩强。C程序设计第三版。清华大学出版社。20055.王宏生,宋继红。数据结构。北京:国防工业出版社,2006.16.李建学,李光元,吴春芳。数据结构课程设计案例精编用C/C+描述。北京:清华大学出版社。2007.213参考资料第七章 致谢感谢队友的帮助,在我一些不懂的地方给予了我及时的帮助感谢席老师的辅导,在有些方面自己和同组人还有好多的不会,不过经过老师的辅导还是成功编写了出来第八章 附录源程序:#include <stdio.

16、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 2 typedef struct int month;/月份 int spxf;/食品消费 int f

17、zfy;/房租费用 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(Inf

18、or *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"); printf("1.录 入 数 据n"); pr

19、intf("2.查 看 数 据n"); printf("3.修 改 数 据n"); printf("4.查 询 数 据n"); printf("5.排 序 数 据n"); printf("6.删 除 数 据n"); printf("7.退 出 系 统n"); printf("请输入要进行的操作: " ); scanf("%d",&item); while(item>6 | item<-1); switch(item)

20、 /退出程序 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"); p

21、rintf("- 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记录月

22、份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 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");

23、 else paixu(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

24、->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->z

25、njy,&newI->sdfy,&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); fclose(fp); printf("数据录入成功!

26、n"); void changeFormat(void) /暂时只能操作一行文件有待改良 FILE *fp1,*fp2; Infor *a; a=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,"rb+"); if(fp1=NULL) printf("无法找到文件:%sn",FilePath1); return ; /返回主函数 fp2=fopen(FilePath2,"wt+"); if(fp2=NULL) printf("无法创立文件:%sn",F

27、ilePath2); return ; /返回主函数 fputs(" n个人帐簿管理系统n",fp2); fputs("记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入n",fp2); fputs("- n",fp2); printf("n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n"); printf("- n"); rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(

28、fp1) printf("%7d %8d %8d %8d %8d %8d %8d %8dn",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); fprintf(fp2,"%7d %8d %8d %8d %8d %8d %8d %8dn",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); frea

29、d(a,sizeof(Infor),1,fp1); fputs("- n",fp2); fputs("关闭本程序继续原程序!n",fp2); fclose(fp1); fclose(fp2); system(FilePath2); /调用翻开转换的文本文件 remove(FilePath2);/删除文本文件文件 Status search(Infor *a) FILE *fp1; int mon; int isfound=0; printf("请正确输入要查询的月份:"); scanf("%d",&mon)

30、; fflush(stdin); fp1=fopen(FilePath1,"rb+"); if(fp1=NULL) printf("无法找到文件:%sn",FilePath1); return Error; /返回主函数 rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(fp1) if(a->month=mon) isfound=1; break; else isfound=0; fread(a,sizeof(Infor),1,fp1); fclose(fp1); if(isfound)

31、return OK; else return NotFound; void paixu(Infor *a) int i=0,j=0,flag=0,t; pType px8=0,0; char str810="记录月份","食品消费","房租费用","子女费用","水电费用","医疗费用","储蓄费用","本月收入" for(;i<8;i+) pxi.no=i; px0.data=a->month; px1.data=a-&g

32、t;spxf; px2.data=a->fzfy; px3.data=a->znjy; px4.data=a->sdfy; px5.data=a->ylfy; px6.data=a->cxfy; px7.data=a->srfy; for(i=1;i<8;i+) flag=0; for(j=0;j<8-i;j+) if(pxj.data>pxj+1.data) t=pxj.data; pxj.data=pxj+1.data; pxj+1.data=t; t=pxj.no; pxj.no=pxj+1.no; pxj+1.no=t; flag=1; if(flag=0) break; printf("n"); for(i=0;i<8;i+) printf(" %s"

温馨提示

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

评论

0/150

提交评论