收藏 分享(赏)

个人账单管理系统_数据结构课程设计.doc

上传人:无敌 文档编号:620520 上传时间:2018-04-15 格式:DOC 页数:22 大小:552KB
下载 相关 举报
个人账单管理系统_数据结构课程设计.doc_第1页
第1页 / 共22页
个人账单管理系统_数据结构课程设计.doc_第2页
第2页 / 共22页
个人账单管理系统_数据结构课程设计.doc_第3页
第3页 / 共22页
个人账单管理系统_数据结构课程设计.doc_第4页
第4页 / 共22页
个人账单管理系统_数据结构课程设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:个人账簿管理系统沈阳航空航天大学课程设计报告 I 目 录沈阳航空航天大学 .I1 课程设计介绍 .11.1 课程设计内容 .11.2 课程设计要求 .12 课程设计原理 .22.1 课设题目粗略分析 .22.2 原理图介绍 .22.2.1 功能模块图 .22.2.2 流程图分析 .33 数据结构分析 .73.1 存储结构 .73.2 算法描述 .74.1 调试过程 .164.2 程序执行过程 .16参考文献 .19沈阳航空航天大学课程设计报告 1 1 课程设计介绍1.1 课程设计内容个人账簿管理系统记录某人每月的

2、全部收入及各项开支情况,包括食品消费,房租,子女教育费,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。1.2 课程设计要求1. 采用链表结构管理收支情况,并能够保存到文件中;2. 完成对每月的开支排序,以及完成系统查询功能;3. 独立完成系统的设计,编码和调试;4. 系统利用 C 语言实现;5. 按照课程设计规范书写课程设计报告。沈阳航空航天大学课程设计报告 2 2 课程设计原理2.1 课设题目粗略分析根据课设题目要求,拟将整体程序分为五大模块。以下是五个模块的大体分析:1. 账簿信息输入:该模块中,以带

3、头结点的链表为账单信息的存储结构,输入各项开支的数据。2. 账簿信息排序:该模块中,将针对每月的消费总额进行从小到大的顺序进行排序。3. 账簿信息查询:该模块中,将输入或已排序账单进行按所输入的日期进行查询并将查询结果打印至屏幕,供人阅读。4. 账单信息更改:进入该模块,进行信息的更改或添加。5. 账单信息保存:该模块将账单信息以文本文档保存到磁盘中。2.2 原理图介绍2.2.1 功能模块图个人账簿管理系统账簿信息查询账簿信息排序账簿信息更改账簿信息输入账簿信息保存图 2.1 功能模块图沈阳航空航天大学课程设计报告 3 2.2.2 流程图分析1. 账单建立时调用 jianli()函数,而在在

4、jianli()中调用 tianjia()函数;账单的头结点的申请工作已在主函数中完成,所以在整个建立账单的过程中核心内容是:将新的账单信息链接到已存在的账单后面;tianjia()函数流程图如图 2.2所示。开始并传入头指针p - n e x t ! = N U L Lp = h e a dp = p - n e x t是输入账单日期否日期符合要求开辟新的结点空间是输入账单的信息p - n e x t = t a i lp = p - n e x t返回否图 2.2 账单信息添加函数流程图2. 在对账单信息进行排序的过程中,采用的方法是:首先将账单中支出最大和最小的两个结点寻找出来并按从小到

5、大的顺序连接到一个新申请的头结点上;再将原函数的各结点插入到新的链表中,最终新的链表就成为了排序后的新账单。paixu()函数流程图如图 2.3 所示。沈阳航空航天大学课程设计报告 4 开始并传入头指针q = h e a d - n e x t指针 q 不为空用指针 p 标记支出最少的结点将 p 结点截取 , 链接到新申请的头结点用指针 p 标记原链表支出最多的结点将 p 结点截取 , 连接到新生成链表尾q = h e a d - n e x t指针 q 不为空q = q - n e x t将 h e a d - n e x t截取 , 与新链表比较 , 插入到新链表是否是否提示用户返回返回新

6、的头指针输出账单信息图 2.3 排序函数流程图3. 进入账单信息查询部分,程序根据输入的日期进行逐一比较,若存在该日期的账单信息,程序输出相应的账单信息,若不存在该日期的账单信息,系统提示用户还未录入该日期的账单信息。账单查询函数流程图如图 2.4 所示。沈阳航空航天大学课程设计报告 5 开始并传入头指针p = h e a d - n e x tp 不为空查询日期符合要求提示用户还未录入账单返回输出账单信息p = p - n e x t日期匹配是否是否是否图 2.4 查询函数流程图4. 进入账单更改部分,程序将用户输入的需更改的账单日期与已存在的账单日期进行逐步比对,对日期完全相同的账单信息进

7、行更改,若不存在该日期的账单信息,程序提示用户是否马上进行添加。流程图如图 2.5 所示。 开始并传入头指针要更改的日期符合要求结点 p 不空该结点与要更改结点匹配将 p 结点信息用新输入的信息替换是否p 指向 p 下一结点结束是调用 t i a n j i a ( )进行添加 否图 2.5 账单信息更改流程图沈阳航空航天大学课程设计报告 6 5. 进入账单保存部分,用户对建立的账单以文本文档的形式保存到磁盘中,账单信息保存函数流程图如图 2.6 所示。 开始并传入头指针指针 p 是否为空将指针 p 指向头结点的下一结点提示用户账单未建立 , 无法保存结束是输入保存文件名否指针 p 是否为空是

8、使用 f p r i n t f 语句将信息写入文件p 指向 p 的下一结点否图 2.6 保存账单信息函数流程图沈阳航空航天大学课程设计报告 7 3 数据结构分析3.1 存储结构主要存储结构:带头结点的单向链表存储结构。typedef struct MYBILL /链表结点结构long date; /日期信息long food; /食品消费long fangzu; /房租费用 long jiaoyu; /子女教育费long shuidian; /水电费 long yiliao; /医疗费 long chuxu; /储蓄long pay; /总支出long income; /总收入struct

9、MYBILL*next; /指向下一结点的指针MYBILL,bill;3.2 算法描述1. 建立单向链表,用来存储账单信息:首先分别输入将要建立账单的年份及月份,年份的合理范围定为所有正整数,当年份输入为非合理数字时结束对账单的录入;月份的合理范围为 1 至 12,当输入不属于该范围的月份数据时,程序会重新进行年份和月份的录入;录入日期数据后,进行其余信息的录入。void *tianjia(MYBILL *head) /向原链表添加新的链表结点 int i,j; /定义年份和月份变量MYBILL *p,*tail; /定义结构体类型指针p=head; /将指针 p 初始化为 headwhile

10、(p-next!=NULL) /判断账单链表是否为仅含空头结点的链表沈阳航空航天大学课程设计报告 8 p=p-next; /将指针 p 向后移动一个单位printf(“nt 输入您要建立账单的年份,当输入非正数时结束输入!nt“);scanf(“%ld“, /输入年份数据while(i0) /判断输入的年份是否为合理数据 printf(“nt 输入您要建立账单的月份nt“);scanf(“%d“, /输入月份数据if(j0 /将年份和月份为转为一长整数字存储tail-next=NULL; /新结点的指针域指向空printf(“nt 输入 食品费用:t“);scanf(“%ld“, /输入食品费用printf(“nt 输入 房租:t“);scanf(“%ld“, /输入房租费用printf(“nt 输入 子女教育费:“);scanf(“%ld“, / 输入子女教育费printf(“nt 输入 水电费:t“); scanf(“%ld“, /输入水电费printf(“nt 输入 医疗费:t“);scanf(“%ld“, /输入医疗费printf(“nt 输入 储蓄:t“);scanf(“%ld“, /输入存储printf(“nt 输入 总收入:t“);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 高中教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报