课程名称:数据结构
湖南涉外经济学院
本科学生课程设计(论文)
题 目 个人账簿管理系统 姓 名 学 号 学 部 专业、年级 软件工程 1001 指 导 教 师
2011年 12 月 20 日
目 录
第一章 前 言 ··········································································· 1 第二章 系统功能分析 ····························································· 2
2.1课程设计内容 ·················································································································· 2 1. 功能包括 ······························································································································· 2 2. 性能需求: ··························································································································· 2 2.2系统功能需求分析 ··········································································································· 2 2.3数据结构设计 ·················································································································· 3
第三章 总体设计 ····································································· 4
3.1系统设计 ·························································································································· 4 3.2主函数模块的设计 ··········································································································· 4
第四章 详细设计 ····································································· 6
4.1主菜单 ······························································································································ 6 4.2录入 ································································································································· 7 4.3修改 ································································································································· 8 4.4查询 ································································································································· 9 4.5删除 ······························································································································· 10 4.6排序 ································································································································ 11
第五章 系统实现 ··································································· 12 第六章 解决的关键问题 ······················································· 14 第七章 结 论 ········································································· 15 结 语 ······················································································ 16 参考文献 ················································································· 18
个人账簿管理系统 第一章 前 言
第一章 前 言
随着网络经济的到来,用户需求要求:能够在任何时候、任何地方、利用任何工具都可以获得网络上的信息,并享受网络通信所带来的快乐。.NET 战略就是为着实现这样的目标而设立的。
程序设计过程有如解决一个实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程--算法。可得最后结论。
第 1 页
个人账簿管理系统 第二章 系统功能分析
第二章 系统功能分析
科技奖励工作是推动科学技术进步的一项重要的激励机制,对促进国家和地方社会经济发展,调动广大科研工作者的积极性具有重大作用。实践证明,网络技术的运用有利于更快地促进科技成果的利用,从而有利于发展科技生产力,繁荣国家和地方社会经济生活。
2.1课程设计内容
1. 功能包括
1、提供录入数据的功能。并保存在文件中,以便反复使用。 2、提供数据修改的功能。
3、提供按月份、按食品消费和全部的数据查询的功能。 4、提供数据删除功能。
5、提供按月份、食品消费和水电费用排序的功能。
2. 性能需求:
1、操作界面美观、友好,有必要的容错处理(如:能判定学号位数和只能由0~9数字字符组成等);
2、查询应根据查询条件合理选择先进的查询方法(其中必须保证至少有一种查找采用了散列查找); 3、排序算法要求采用快速排序实现;
2.2系统功能需求分析
本系统应具有以下功能:
1、文件操作功能:自动加载和保存数据文件。 2、数据输入功能:可以按提示录入各项数据。
第 2 页
个人账簿管理系统 第二章 系统功能分析
3、数据修改功能:可以按提示修改各项数据。
4、查询功能:可按月份、食品消费进行特定查询,及显示全部数据。 5、排序功能:可按月份、按食品消费、水电费进行排序。 9、数据容错处理功能:输入选项错误自动返回主菜单。
2.3数据结构设计
typedef struct {
int month;//月份 int food;//食品消费 int depart;//房租费用 int child;//子女教育费用 int ele;//水电费用 int medi;//医疗费用 int save;//储蓄 int income;//收入费用 }PAMSinfo;
/*定义结构体*/
typedef struct {
PAMSinfo r[MaxSize]; int length; }SqList;
第 3 页
个人账簿管理系统 第三章 详细设计
第三章 总体设计
3.1系统设计
按系统分析的功能要求将系统划分为以下几个主要功能模块: 结构图
3.2主函数模块的设计
根据划分的功能模块,设计出如下主函数算法设计: void menu() {
int n;
printf("\t\t/***********个人账簿管理系统*************/\n"); printf("\t\t/*\t\t1.录入数据\t\t*/\t\t\n"); printf("\t\t/*\t\t2.修改数据\t\t*/\t\t\n"); printf("\t\t/*\t\t3.查询数据\t\t*/\t\t\n"); printf("\t\t/*\t\t4.删除数据\t\t*/\t\t\n"); printf("\t\t/*\t\t5.排序\t\t\t*/\t\t\n"); printf("\t\t/*\t\t6.退出\t\t\t*/\t\t\n");
第 4 页
个人账簿管理系统 第三章 详细设计
}
printf("\t\t/****************************************/"); printf("\t\t\t\t请选择:"); scanf("%d",&n); switch(n) { }
case 1:
add();/*增加*/ break;
case 2:
modify();/*修改*/ break;
case 3:
search();/*查询*/ break;
case 4:
dele();/*删除*/ break;
case 5:
Sort();//排序 break;
case 6:
exit(0);/*退出程序*/ break;
第 5 页
个人账簿管理系统 第三章 详细设计
第四章 详细设计
4.1主菜单
运行程序,进入主菜单(图4.1) :
图4.1
第 6 页
个人账簿管理系统 第四章 详细设计
4.2录入
输入“1”选项,进行录入数据(图4.2) :
图4.2
第 7 页
个人账簿管理系统 第四章 详细设计
4.3修改
输入选修“2”,数据修改(图4.3) :
图4.3
第 8 页
4.4查询
输入“3”选项,查询数据(图4.4) :
图4.4
4.5删除
输入“5”选项,删除数据 (图4.5) :
图4.5
4.6排序
输入“5”选项,排序(图4.6) :
图4.6
第五章 系统实现
实现系统的主函数及菜单函数: void main() {
while(1) {
menu(); } }
void menu() {
int n;
printf("\t\t/***********个人账簿管理系统*************/\n"); printf("\t\t/*\t\t1.录入数据\t\t*/\t\t\n"); printf("\t\t/*\t\t2.修改数据\t\t*/\t\t\n"); printf("\t\t/*\t\t3.查询数据\t\t*/\t\t\n"); printf("\t\t/*\t\t4.删除数据\t\t*/\t\t\n"); printf("\t\t/*\t\t5.排序\t\t\t*/\t\t\n"); printf("\t\t/*\t\t6.退出\t\t\t*/\t\t\n");
printf("\t\t/****************************************/"); printf("\t\t\t\t请选择:"); scanf("%d",&n); switch(n) {
case 1:
add();/*增加*/ break; case 2:
modify();/*修改*/ break; case 3:
search();/*查询*/ break; case 4:
dele();/*删除*/
}
}
break; case 5:
Sort();//排序 break; case 6:
exit(0);/*退出程序*/ break;
第六章 解决的关键问题
创建结构体对该程序至关重要,通过查阅参考书籍,创建了合适的结构体。由于初期未考虑到排序功能,后期做排序的时候,对整个程序做了一些修改,主要是结构体方面。本程序的排序系统的采用的是“快速排序”,代码主要来自《数据结构(c 语言版)》,由于书上代码为伪代码,所以调试时遇到一些问题,由于习惯使用c++中的引用传递,导致在c 文件中编译错误,经过查找资料才发现问题所在,于是将c 文件改为cpp 文件,解决了做排序功能时遇到的一些问题
第七章 结 论
程序设计过程有如解决一个实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程--算法。可得最后结论。
通过此次的课程设计,在大一C语言学习的基础上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
在这次课程设计中,我在完成自己的课题之余,我还协助了许多同学完成他们的作业,在帮助同学修改或完成本次课程设计的过程中,对不软件工程有一比从前考计算机等级时更深入的理解,同时在和同学的交流中也产生很多新颖的想法。这大大拓宽了自己在编程方面的思路,为以后在编程学习中积累了一定的经验。
结 语
经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并对数据结构和算法的配合对于程序时间和空间性能的影响以及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。
当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法,例如,马踏棋盘问题就可以采用广度优先搜索或深度优先搜索来解决。因此此时就应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。
此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。
一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
通过此次的课程设计,在大一C语言学习的基础上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
在这次课程设计中,我在完成自己的课题之余,我还协助了许多同学完成他们的作业,在帮助同学修改或完成本次课程设计的过程中,对不软件工程有一比从前考计算机等级时更深入的理解,同时在和同学的交流中也产生很多新颖的想法。这大大拓宽了自己在编程方面的思路,为以后在编程学习中积累了一定的经验。
参考资料
参考文献
1. 《数据结构》(C 语言版) 2. 《数据结构学考练》
严蔚敏 吴伟民 编著------清华大学出版社 何光明 编著------清华大学出版社
课程名称:数据结构
湖南涉外经济学院
本科学生课程设计(论文)
题 目 个人账簿管理系统 姓 名 学 号 学 部 专业、年级 软件工程 1001 指 导 教 师
2011年 12 月 20 日
目 录
第一章 前 言 ··········································································· 1 第二章 系统功能分析 ····························································· 2
2.1课程设计内容 ·················································································································· 2 1. 功能包括 ······························································································································· 2 2. 性能需求: ··························································································································· 2 2.2系统功能需求分析 ··········································································································· 2 2.3数据结构设计 ·················································································································· 3
第三章 总体设计 ····································································· 4
3.1系统设计 ·························································································································· 4 3.2主函数模块的设计 ··········································································································· 4
第四章 详细设计 ····································································· 6
4.1主菜单 ······························································································································ 6 4.2录入 ································································································································· 7 4.3修改 ································································································································· 8 4.4查询 ································································································································· 9 4.5删除 ······························································································································· 10 4.6排序 ································································································································ 11
第五章 系统实现 ··································································· 12 第六章 解决的关键问题 ······················································· 14 第七章 结 论 ········································································· 15 结 语 ······················································································ 16 参考文献 ················································································· 18
个人账簿管理系统 第一章 前 言
第一章 前 言
随着网络经济的到来,用户需求要求:能够在任何时候、任何地方、利用任何工具都可以获得网络上的信息,并享受网络通信所带来的快乐。.NET 战略就是为着实现这样的目标而设立的。
程序设计过程有如解决一个实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程--算法。可得最后结论。
第 1 页
个人账簿管理系统 第二章 系统功能分析
第二章 系统功能分析
科技奖励工作是推动科学技术进步的一项重要的激励机制,对促进国家和地方社会经济发展,调动广大科研工作者的积极性具有重大作用。实践证明,网络技术的运用有利于更快地促进科技成果的利用,从而有利于发展科技生产力,繁荣国家和地方社会经济生活。
2.1课程设计内容
1. 功能包括
1、提供录入数据的功能。并保存在文件中,以便反复使用。 2、提供数据修改的功能。
3、提供按月份、按食品消费和全部的数据查询的功能。 4、提供数据删除功能。
5、提供按月份、食品消费和水电费用排序的功能。
2. 性能需求:
1、操作界面美观、友好,有必要的容错处理(如:能判定学号位数和只能由0~9数字字符组成等);
2、查询应根据查询条件合理选择先进的查询方法(其中必须保证至少有一种查找采用了散列查找); 3、排序算法要求采用快速排序实现;
2.2系统功能需求分析
本系统应具有以下功能:
1、文件操作功能:自动加载和保存数据文件。 2、数据输入功能:可以按提示录入各项数据。
第 2 页
个人账簿管理系统 第二章 系统功能分析
3、数据修改功能:可以按提示修改各项数据。
4、查询功能:可按月份、食品消费进行特定查询,及显示全部数据。 5、排序功能:可按月份、按食品消费、水电费进行排序。 9、数据容错处理功能:输入选项错误自动返回主菜单。
2.3数据结构设计
typedef struct {
int month;//月份 int food;//食品消费 int depart;//房租费用 int child;//子女教育费用 int ele;//水电费用 int medi;//医疗费用 int save;//储蓄 int income;//收入费用 }PAMSinfo;
/*定义结构体*/
typedef struct {
PAMSinfo r[MaxSize]; int length; }SqList;
第 3 页
个人账簿管理系统 第三章 详细设计
第三章 总体设计
3.1系统设计
按系统分析的功能要求将系统划分为以下几个主要功能模块: 结构图
3.2主函数模块的设计
根据划分的功能模块,设计出如下主函数算法设计: void menu() {
int n;
printf("\t\t/***********个人账簿管理系统*************/\n"); printf("\t\t/*\t\t1.录入数据\t\t*/\t\t\n"); printf("\t\t/*\t\t2.修改数据\t\t*/\t\t\n"); printf("\t\t/*\t\t3.查询数据\t\t*/\t\t\n"); printf("\t\t/*\t\t4.删除数据\t\t*/\t\t\n"); printf("\t\t/*\t\t5.排序\t\t\t*/\t\t\n"); printf("\t\t/*\t\t6.退出\t\t\t*/\t\t\n");
第 4 页
个人账簿管理系统 第三章 详细设计
}
printf("\t\t/****************************************/"); printf("\t\t\t\t请选择:"); scanf("%d",&n); switch(n) { }
case 1:
add();/*增加*/ break;
case 2:
modify();/*修改*/ break;
case 3:
search();/*查询*/ break;
case 4:
dele();/*删除*/ break;
case 5:
Sort();//排序 break;
case 6:
exit(0);/*退出程序*/ break;
第 5 页
个人账簿管理系统 第三章 详细设计
第四章 详细设计
4.1主菜单
运行程序,进入主菜单(图4.1) :
图4.1
第 6 页
个人账簿管理系统 第四章 详细设计
4.2录入
输入“1”选项,进行录入数据(图4.2) :
图4.2
第 7 页
个人账簿管理系统 第四章 详细设计
4.3修改
输入选修“2”,数据修改(图4.3) :
图4.3
第 8 页
4.4查询
输入“3”选项,查询数据(图4.4) :
图4.4
4.5删除
输入“5”选项,删除数据 (图4.5) :
图4.5
4.6排序
输入“5”选项,排序(图4.6) :
图4.6
第五章 系统实现
实现系统的主函数及菜单函数: void main() {
while(1) {
menu(); } }
void menu() {
int n;
printf("\t\t/***********个人账簿管理系统*************/\n"); printf("\t\t/*\t\t1.录入数据\t\t*/\t\t\n"); printf("\t\t/*\t\t2.修改数据\t\t*/\t\t\n"); printf("\t\t/*\t\t3.查询数据\t\t*/\t\t\n"); printf("\t\t/*\t\t4.删除数据\t\t*/\t\t\n"); printf("\t\t/*\t\t5.排序\t\t\t*/\t\t\n"); printf("\t\t/*\t\t6.退出\t\t\t*/\t\t\n");
printf("\t\t/****************************************/"); printf("\t\t\t\t请选择:"); scanf("%d",&n); switch(n) {
case 1:
add();/*增加*/ break; case 2:
modify();/*修改*/ break; case 3:
search();/*查询*/ break; case 4:
dele();/*删除*/
}
}
break; case 5:
Sort();//排序 break; case 6:
exit(0);/*退出程序*/ break;
第六章 解决的关键问题
创建结构体对该程序至关重要,通过查阅参考书籍,创建了合适的结构体。由于初期未考虑到排序功能,后期做排序的时候,对整个程序做了一些修改,主要是结构体方面。本程序的排序系统的采用的是“快速排序”,代码主要来自《数据结构(c 语言版)》,由于书上代码为伪代码,所以调试时遇到一些问题,由于习惯使用c++中的引用传递,导致在c 文件中编译错误,经过查找资料才发现问题所在,于是将c 文件改为cpp 文件,解决了做排序功能时遇到的一些问题
第七章 结 论
程序设计过程有如解决一个实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程--算法。可得最后结论。
通过此次的课程设计,在大一C语言学习的基础上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
在这次课程设计中,我在完成自己的课题之余,我还协助了许多同学完成他们的作业,在帮助同学修改或完成本次课程设计的过程中,对不软件工程有一比从前考计算机等级时更深入的理解,同时在和同学的交流中也产生很多新颖的想法。这大大拓宽了自己在编程方面的思路,为以后在编程学习中积累了一定的经验。
结 语
经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并对数据结构和算法的配合对于程序时间和空间性能的影响以及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。
当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法,例如,马踏棋盘问题就可以采用广度优先搜索或深度优先搜索来解决。因此此时就应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。
此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。
一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
通过此次的课程设计,在大一C语言学习的基础上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
在这次课程设计中,我在完成自己的课题之余,我还协助了许多同学完成他们的作业,在帮助同学修改或完成本次课程设计的过程中,对不软件工程有一比从前考计算机等级时更深入的理解,同时在和同学的交流中也产生很多新颖的想法。这大大拓宽了自己在编程方面的思路,为以后在编程学习中积累了一定的经验。
参考资料
参考文献
1. 《数据结构》(C 语言版) 2. 《数据结构学考练》
严蔚敏 吴伟民 编著------清华大学出版社 何光明 编著------清华大学出版社