数据结构个人账簿管理系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a.r[j].month=a.r[j+1].month;a.r[j].outcome=a.r[j+1].outcome;
a.r[j+1].month=temp.month;a.r[j+1].outcome=temp.outcome;
}
}
}
}
算法的时间复杂度分析:O(i*j*(13—i—j))
算法的改进方法(这部分可以选择):
要求:根据以上任务说明,设计程序完成功能。
二、问题分析
1、功能分析
分析设计课题的要求,要求编程实现以下功能:
(1)记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等
(2)输入和修改某月的收支情况
(3);对每月的开支从小到大进行排序
(4)根据输入的月份查询每月的收支情况。
2、数据对象分析
食品消费,房租,子女教育费用,水电费,医疗费,储蓄
三、数据结构设计
#include "linklist.h"
#include"calculate.h"
void menu()
{
printf("----------------------------------------\n");
printf(" ---欢迎使用个人帐簿管理系统---\n");
(四)文件结构
1、caculete.cpp:单链表运算的实现
2、menu.h:主菜单函数的声明
3、menu.cpp:主菜单函数的实现
4、mn.cpp:主函数
(五)各函数的算法设计
1、bubblesort()
算法原理:冒泡排序
流程图:
代码描述:
void BubbleSort(SqList &a)//冒泡排序
case 2:printf("建立个人账簿管理表\n");break;
case 3:printf("插入记录\n");break;
case 4:printf("查询记录\n");break;
case 5:printf("修改记录\n");break;
case 6:printf("按照支出升序排序\n");break;
printf(" 4-查询记录\n");
printf(" 5-修改记录\n");
printf(" 6-支出排序\n");
printf(" 7-遍历表中内容\n");
printf(" 0-保存文件并退出\n");
printf("\n");
printf("----------------------------------------\n");
《数据结构》
课程设计报告
专业计算机科学与技术
班级(1)
姓名王昕
学号20101308003
指导教师顾韵华
起止时间2011.10~2011.12
课程设计:个人账簿管理
一、任务描述
个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的、测试数据
食品 房租 教育 水电 医疗 储蓄
1月: 2500 2000 500 360 400 1500 总支出: 5760
3月: 1820 2000 500 350 300 1200 总支出: 4970
5月: 1500 2000 500 300 0 3000 总支出: 4300
printf("请选择...");
}
void title(int a)
{
printf("==========个人帐簿管理系统==============\n");
printf("----------------------------------------\n");
switch(a){
case 1:printf("程序说明\n");break;
8月: 2000 2000 0 350 200 1500 总支出: 4550
12月: 1400 2000 500 300 200 2500 总支出: 4400
-----------------------------------------------------
2、测试结果
本程序在VC++环境下实现,下面是对以上测试数据的运行结果。
printf("输入时按照食品支出,房租,教育费用,水电\n");
printf("费,医疗开销,储蓄收入的顺序录入账簿表,所\n");
printf("有输入均为整数。程序可自动统计食品支出,房\n");
printf("租,教育,水电,医疗费用之和作为当月的总支\n");
printf("出,排序比较功能中系统将按月支出升序排序输\n");
2、Insert()
流程图:
代码描述:void FillList(LinkList L,SqList &S)
{
LNode *p;
p=L->next;
int i,k=1;
for(i=1;i<13;++i)
{
S.r[i].outcome=0;
S.r[i].month=0;
}
for(p,i=1;p!=NULL;p=p->next,i++)
}
BubbleSort(S);
printf("\n\n排序后的结果为:\n");
for(i=1;i<13;i++)
{
if(S.r[i].month!=0)printf("No.%d:第%d月支出:%d\n",k++,S.r[i].month,S.r[i].outcome);
}
}
算法的时间复杂度分析:
4.按降序排序
0.退出系统
(二)程序模块结构
由课题要求可将程序划分为以下几个模块(即实现程序功能所需的函数):
主控菜单项选择函数menu_t()
创建账簿功能说明title()
插入函数check()
查询函数Filllist()
排序函数bubbleSort()
改变函数change()
(三)函数调用关系
程序的主要结构(函数调用关系)如下图所示。
printf("----------------------------------------\n");
printf("\n");
printf(" ======菜单======\n");
printf(" 1-程序说明\n");
printf(" 2-建立个人账簿管理表\n");
printf(" 3-插入记录\n");
{
S.r[i].outcome=p->data.outcome;
S.r[i].month=p->data.month;
}
printf("排序前:\n");
for(i=1;i<13;i++)
{
if(S.r[i].month!=0)printf("第%d月支出:%d\n",S.r[i].month,S.r[i].outcome);
case 7:printf("当前表中内容\n");break;
case 0:printf("保存表并退出\n");break;
}
printf("\n");
}
void tail()
{
printf("----------\n");
printf("按Enter键继续...\n");
getchar();
}
(1)主菜单显示如下:
运行
结束
六、结束语
本设计完成了课题要求的任务,设计了较便捷的操作界面。通过对个人账簿
系统的设计,学习到了很多平时学不到的知识,知道如何学以致用。学到了很多实际应用中很实用的技巧,也意识到了自己很多的不足之处。
void instruction()//程序说明函数
{
printf("本程序为个人账簿管理系统。用户可创建个人\n");
printf("的账簿表,按月份插入当月的收支记录,同时可\n");
printf("以按月查询和修改相应的记录。所有查询和修改\n");
printf("功能需在已经建立表的基础上实现。\n\n");
printf("出。退出时可将输入的表保存为文件形式。\n");
}
四、功能设计
(一)主控菜单设计
为实现账簿管理的操作功能,首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
程序运行后,给出6个菜单项的内容和输入提示,如下:
1.账簿的建立
2.各项开支的输入
3.开支的输入和查询
{
keytype temp;
for (int i=1;i<=11;i++)
{
for (int j=1;j<13-i-1;j++)
{
if(a.r[j].outcome>a.r[j+1].outcome)
{
temp.month=a.r[j].month;temp.outcome=a.r[j].outcome;
相关文档
最新文档