




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、个人账簿管理系统设计书3.相关的数据类型typedef struct int month;/int spxf;int fzfy;/int znjy;/int sdfy;/int ylfy;/int cxfy;/int srfy;/ Infor;月份食品消费房租费用子女教育费用水电费用医疗费用储蓄费用收入费用typedef struct / 查询用自定义数据类型int no;int data;pType;4. 各问题处理的流程图4.1 录入模块4.2修改模块ri utifC A. n 五育依次哂人效d/d、d丁晟 m4.3查询模块jpiri n rf; 口十三录月份告晶浒结 .再程裁用.prin
2、tf f10名将合奉件 ”三三羊!“工printf(110名符合事件 判三三吊尸篇 /jpiri n*。1 .口七三录月份 曾晶川声.再租妻里-mpu cfa);m odifv(a ti)rinpu eCa);m oAifyC 工m a fi)ri em =w gzardi NO 二 m oa aJs-fii CkAth;i tem =tearciCi m on 3J3-n oiiEhr4.4排序模块4.5 删除模块开始fpl=NULLpnntf?无法独到文ReturtLfpgfptinifC3结束5.描述实现函数的调用关系图tffij置握添是据U显示全部月份勤 *显一番青数据 *受函数6.1
3、 调试中遇到的问题及对问题的解决方法创建结构体对该程序至关重要,通过查阅参考书籍,创建了合适的结构体。由于初期未考虑到排序功能,后期做排序的时候,对整个程序做了一些修改,主要是结构体方面。 本程序的排序系统的采用的是“快速排序”,代码主要来自数据结构(c语言版),由于书上代码为伪代码,所以调试时遇到一些问题,由于习惯使用C+中的引用传递,导致在 c文件中编译错误,经过查找资料才发现问题所在,于是将c文件改为cpp文件,解决了做排序功能时遇到的一些问题6.2 算法的时间复杂度和空间复杂度空间复杂度:O(f(n)时间复杂度:O (n)7.输出典型数据,获得测试结果;*1个人帐遒管展系诳设计ms戮数
4、飘慰薮蓼卡改询序录查螫排驶lM 34.G 6 也性输入要进行的巽作一青依太物入夔据晓明:中旬以空的州开:k本月月初着吊哨费房租费用子女方用水电替用医疗铸用糙番费用收入察用1E酮 1 B0 EFt3HWHi 1盘询序 苴售排驶 之? 4 4 5&L可G 据晶; 数食la功晴输入要进行的操作工,明独闻以空格符幅开Km房租费用子女博用水电替用医疗中用储蓄若用收入存用) 口e 7nn 3日加T八帐通管型系统设计居月居居Ir 薮薮数数数 人看改询序 毒脸排明 12 356晴输入要进彳逢/点3.嫉, 1 ,小林近理与魄&:十彳入营土钎除撵、:T水电费黑 医疗费阻滞*号用 收人导为?1 Eg 5加 IQt吴
5、删fi制iLisig的娓M聚月用曹品酒带冏相当用IjrRfl 用电号用EfFBfl施号用3月载入己量月此囱品洞F鼻二皆作 干之任用,电W用之L费孑坛* 三田黎月的,8.源程序(带注释)#include #include #include #include /文件保存路径#define FilePathl Myinfor.dat#define FilePath2 Myinfor.txt/查询用声明#define Status int# define OK 1# define Error 0# define NotFound 2typedef struct int month;/ 月份int sp
6、xf;食品消费int fzfy;/房租费用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); / 接收键盘输入将dat格式文件转换为txt文件void writeinfor(Infor *newI);/向文件写入容void changeFormat(void );/Status search(Infor *
7、a);/查询函数返回查询的结果及查询的状态void paixu(Infor *a);/对查询据结果排序void modify(Infor *a,int mon);/ 修改数据void delRecord(int mon);/ 删除数据int main()while(1)menu();void menu(void)int item;int mon;Infor *a;a=(Infor *)malloc(sizeof(Infor);doprintf(n 个人帐簿管理系统设计nn);printf(tt1.录入数据。n);printf(tt2.查看数据。n);printf(tt3.修改数据。n);pri
8、ntf(tt4.查询数据。n);printf(tt5.排序数据。n);printf(tt6.删除数据。n);printf(tt0.退出系统。nn);printf(” 请输入要进行的操作:);scanf(%d”,&item);while(item6 | itemmonth;if (item!=OK) printf(n没有符合条件的记录!n);else printf(n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入n);printf(n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz fy,a-znjy,a
9、-sdfy,a-ylfy,a-cxfy,a-srfy);input(a);modify(a,mon);break;/ 查询数据case 4: item=search(a);if (item!=OK) printf(n没有符合条件的记录!n);elseprintf(n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入n);printf(n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz fy,a-znjy,a-sdfy,a-ylfy,a-cxfy,a-srfy);break;/ 排序数据case 5: ite
10、m=search(a);if (item!=OK) printf(n没有找到符合排序条件的记录!n);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 %8dn,a-month,a-spxf,a-fz fy,a-znjy,a-sdfy,a-ylfy,a-cxfy,a-srf
11、y);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,&ne wl-znjy,&newl-sdfy,&newl-ylfy,&newl-cxfy,&newl-srfy);fflush(stdin);void writeinfor(Infor *newI)
12、/ 向文件写入容FILE *fp;fp=fopen(FilePath1,ab+);if(fp=NULL)printf(无法创建文件:s,FilePath1);exit(0);fwrite(newI,sizeof(Infor),1,fp);/这里可以做特别处理可防止存在同一月份有2条以上的记录问题。这里就不写了。fclose(fp);printf(数据录入成功! n);void changeFormat(void) /暂时只能操作一行文件有待改进FILE *fp1,*fp2;Infor *a;a=(Infor *)malloc(sizeof(Infor);fp1=fopen(FilePath1,
13、rb+);if(fp1=NULL)printf(无法找到文件:sn,FilePath1);return ; / 返回主函数fp2=fopen(FilePath2,wt+);if(fp2=NULL)printf(无法创建文件:sn,FilePath2);return ; /返回主函数fputs(n个人帐簿管理系nn,fp2);fputs(”记录月份 食品消费 房租费用 子女费用 水电费用医疗费用储蓄费用本月收入n”,fp2);fputs(n,fp2);printf(n 记录月份食品消费房租费用子女费用水电费用医疗费 用储蓄费用本月收入n);printf(n);rewind(fpl);fread(
14、a,sizeof(Infor),1,fp1);while(!feof(fp1)从原文件.dat中读数据写入显示文件.txt中printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz fy,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);fread(a,sizeof(Infor),1,fp1);fputs(
15、n,fp2);fputs(关闭本程序继续原程序!n,fp2);fclose(fpl);fclose(fp2);system(FilePath2); /调用打开转换的文本文件remove(FilePath2);/删除文本文件文件Status search(Infor *a)FILE *fp1;int mon;int isfound=0;printf(请正确输入要查询的月份:);scanf(%d”,&mon);fflush(stdin); 清除缓冲区fp1=fopen(FilePath1,rb+);if(fp1=NULL)printf(无法找到文件:sn,FilePath1);return Err
16、or; 返回主函数rewind(fpl);fread(a,sizeof(Infor),1,fp1);while(!feof(fp1)查询操作if(a-month=mon)isfound=1;break;elseisfound=0;fread(a,sizeof(Infor),1,fp1);fclose(fp1);if(isfound)return OK;elsereturn NotFound;void paixu(Infor *a)int i=0,j=0,flag=0,t;pType px8=0,0;char str810=记录月份,食品消费,房租费用,子女费用,水电费用”,医疗费用,储蓄费用”
17、,”本月收入土for(;imonth;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;i8;i+)/ 冒泡排序flag=0;for(j=0;jpxj+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
18、(i=0;i8;i+)printf( %s,strpxi.no);printf(nn);for(i=0;imonth=mon)fwrite(a,sizeof(Infor),1,fp2);/修改数据elsefwrite(b,sizeof(Infor),1,fp2);fread(b,sizeof(Infor),1,fp1);fclose(fpl);fclose(fp2);remove(FilePathl); /删除源文件rename(temp.dat,FilePath1);重命名中间文件printf(修改数据成功! n);changeFormat(); /显示数据void delRecord(in
19、t mon) /删除数据FILE *fp1,*fp2;Infor *b;b=(Infor *)malloc(sizeof(Infor);fp1=fopen(FilePath1,rt);fp2=fopen(temp.dat,wt+);rewind(fpl);fread(b,sizeof(Infor),1,fp1);while (!feof(fp1) /重写数据if(b-month!=mon)fwrite(b,sizeof(Infor),1,fp2);fread(b,sizeof(Infor),1,fp1);fclose(fpl);fclose(fp2);remove(FilePathl); /删
20、除源文件rename(temp.dat,FilePath1);重命名中间文件printf( 删除数据成功! n);changeFormat(); /显示数据9.总结经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、 以及软件工程的知识,并对数据结构和算法的配合对于程序时间和空间性能的影 响以及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。当我们面对一个实际问题, 应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构, 每种数据结构适应于不同的算法, 例如, 马踏棋盘问题就可以采用广度优先搜索或深度优先搜索来解决。 因此此时就应该综合考虑这样的数据结构、 算法以及它们的空间和时间效率, 然后从中选择一个作为实现程序的基础。此外, 对程序的测试应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邢台汇文分班考试题目及答案
- 九年级半期考试题及答案
- 护理查房考试题及答案
- 2025教资科二考试真题及答案
- 化验室基础知识简答考试题及答案
- 温岭二中考试试卷真题及答案
- 广西安全员B证考试题及答案
- 延津县期中考试卷及答案
- 计算机ms一级考试试题及答案
- 口腔护理溶液作用、疾病预防及护理要点知识试题附答案
- 设备IQ OQ PQ有效性验证方案参考报告模板
- 2025公路水运检测师《水运材料》考前冲刺必会300题-含详解
- 儿科学本科课件 新生儿颅内出血
- 2025年全国普通话水平测试50套复习题库及答案
- 湖南省岳阳市湘阴县2024-2025学年九年级上学期期中道德与法治检测试题(附答案)
- 标准物业服务合同协议范本样式
- 2025届高三语文名校模拟11月份修改病句考题汇编
- 静脉治疗的新进展
- 护士淡妆上岗培训
- 苏州介绍课件
- DB34∕T 2395-2015 涉路工程安全评价规范
评论
0/150
提交评论