华北科技学院。
数据结构》课程设计说明书。
班级: 计科b12 姓名。
学号20120
设计题目宿舍管理查询系统。
设计时间: 2014-6-16 至 2014-6-27
指导教师栾尚敏。
评语。评阅成绩评阅教师。
目录。1 需求分析 1
1.1 功能需求 1
1.2 系统的开发运行环境 1
2 总体设计 1
2.1 系统功能模块 1
2.2子模块设计 2
3 程序概要设计 4
3.1 各模块的算法设计说明 4
3.2 存储结构设计说明 7
4 运行及调试 8
4.1 运行结果 8
4.2 结果分析 11
5 小结和展望 12
5.1 小结 12
5.2 心得体会与展望 12
参考文献 13
附录 13使用说明书 13
需求分析。根据要求,我们开始考虑系统应具备的功能:
要实现交互工作方式,各项操作结束后均应返回主菜单;
系统本无任何信息数据,要建立数据文件,需开发一个信息录入功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们未开发信息存盘功能;
信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;
本系统按关键字(姓名、学号、房号)进行冒泡排序,采用二分查找方式分别实现按关键字(姓名、学号、房号)查询功能;
由于有些同学因为不同原因而离校,所以设计了删除功能;
由于有新同学入校,所以设计了插入功能;
当用户操作完毕需要退出时,我们提供了退出选项,便于使用者退出交互式工作系统。
开发环境:pc机 windows 7系统。
开发平台:microsoft visual c++ 6.0
总体设计。该程序系统分为信息录入、信息显示、插入功能子菜单、排序功能子菜单、查找功能子菜单、删除六个模块。通过这六个模块可以对宿舍的人员进行管理。
本程序通过从用户录入学生信息,创建一个线性表,用插入、删除对人员增减的管理,用查找子菜单查找信息操作,排序功能对信息进行简单的处理方便查找。通过不同的子程序来实现其功能,得到如下图的模块关系图:
根据用户需求不同,将系统划分了不同的功能模块,而依据不同的功能模块编写不同的程序模块,具体如下:
1>信息录入模块(即为程序中的shuru()函数,create(linklist &l)创建学生信息表)
2>信息显示模块(即为print1()函数, print2()函数)
3>信息插入模块(即为 insert()函数)
4>信息排序模块(即为程序中的sort1()函数,sort2()函数sort3()函数三个子函数)
5>信息查询模块(即为程序中的chazaho()函数,包括chazaho1(),chazaho2(),chazaho3()三个子函数)
6>信息删除模块(即为 delete()函数)
7>主函数模块(即为程序中的main()函数),而各个函数之间由一个switch结构联系起来,而学生信息的连续输入或者连续查找则由相应的do-while结构来实现,从而实现各个模块之间的紧密衔接。并用 do-while结构来实现程序的退出功能。
流程图:1.信息录入。
采用为学生创建一个线性链表,录入学生信息。
void shuru(linklist l) /输入学生的信息。
fflush(stdin);/清空输入缓冲区,得到正确的输入数据
printf("请输入姓名:")
gets( /输入一行字符串(姓名)
printf("请输入学号:")
scanf("%d",&
printf("请输入房号:")
scanf("%d",&
2.信息显示。
void print1(linklist &l)//打印学生信息。
3.信息插入。
void insert(linklist &l)//按学号从小到大插入该学生。
4.排序功能。
void sort1(linklist &l)//按姓名排序(采用冒泡排序)
int i,j;
stu temp;
for(i=0;i<
for(j=i+1;j<
if(strcmp(>0)
temp=程序采用冒泡排序法,对姓名进行排序。学号、房号排序类似。
5.查找功能。
对姓名采用二分查找:
void chazhao1(linklist &l)//按姓名从小到大查找(采用二分查找)
if( panduan3();
elseelse if(strcmp(a,>0)
low=mid+1;
else high=mid-1;
if(flag==1)
print2(l,mid); 打印查找到的学生的信息。
if(panduan1(ch)) chazhao1(l);}
学号、房号的查找方式类似于姓名查找,都采用二分查找。
6.删除。void delete(linklist &l)//按学号删除该学生。
int i,j,k=-1;
char ch;
printf("");printf("");
printf("请输入要删除学生的学号:")
scanf("%d",&
for(i=0;i<
if(i>= printf("该学生不存在");
if(k>=0)
fflush(stdin);
printf("");
printf("是否继续删除?:"
scanf("%c",&ch);
if(ch=='y') delete(l
7.主函数模块。
而各个函数之间由一个switch结构联系起来,而学生信息的连续输入或者连续查找则由相应的do-while结构来实现,从而实现各个模块之间的紧密衔接。并用 do-while结构来实现程序的退出功能。
该程序采用线性表的顺序存储。本系统定义的存储结构采用结构体数组,结构体为:
typedefstruct//定义结构体成员。
charname[20];
intnum;//学号和房号都为整型。
introom;
stu;stustud;
typedefstruct
intlength;//当前长度。
stu*elem;//存储空间基址。
intlistsize;//当前分配的存储容量。
linklist;
运行及调试。
1.开始菜单。
2.选择“1”输入信息。
3.选择“2”显示信息。
4.选择“3”插入信息。
5.选择“4”排序信息。
6.选择“5”查找信息。
7.选择“6”删除信息。
8.选择“0”退出。
总的来说本次课程设计还算可以,我从中也学到了不少的东西。但是本程序也存在着不足。由于本程序没有对输入的数据进行写入文件,造成每次都得输入,造成很繁琐。
其次,还应加入管理员权限,对输入的信息进行管理。
小结和展望。
通过这次的课程设计使我明白了许多东西,翻阅了大量的书籍以及上网查了很多的相关资料,也从中学会了不少东西,它使我知识更加的系统化、全面化。在实验的过程中也让我体会到了做任何事情都是要付出一定的努力的。一份努力一分收获,每当自己单独的成功解决某些问题时,都会感觉很兴奋,也很有成就感。
虽然设计完成了,但是我觉得其中还是由一些不足之处。在今后的工作、学习中我将认真总结经验教训,努力使自己成为一名技术过硬、工作严谨、思维活跃的工程人员,为提高人们的生活质量做出更大的贡献。
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...