1 需求分析。
1.1设计要求。
运用〈〈数据结构〉〉中的算法思想作数据结构,结合j**a语言基本知识,编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。
1.2 通讯录管理系统需求分析。
1)由于一个联系人可能有两个或多个号码,为了实现按姓名查找时能把。
该联系人所有信息查找出来,所以本系统把**号码作为主键;
2)用户有按姓名执行精确查找,模糊查找和浏览的需求,为了方便用户,当执行模糊查找和浏览时要把查找结果按姓名的拼音排序显示;
3)考虑到用户在修改或删除联系人信息时有了解该联系人信息的需求。
比如说名字只记得前几个字),所以本系统设置了先查询(或模糊查询)再执行修改和删除操作;
1.3 类的说明。
1) queryhandle类方法有六个:
queryallname() 查询通讯录中全部姓名。
queryinfo() 查询某联系人的具体信息。
likequery() 模糊查询
sort() 用选择排序对存储表中全部姓名的字符串变长数组排序。
binarysearch() 对分查找。
queryallinfo() 按姓名有序浏览全部信息。
2)inserthandle类方法有一个:
insertinfo() 把要添加的联系人的信息插入到到表中。
3)updatehandle 方法有一个:
updateinfo() 修改联系人信息。
4)deletehandle 方法有一个:
deleteinfo() 删除联系人。
5)hanzitopinyin 方法有一个:
topinyin() 把汉字字符串转换为拼音字符串。
2 概要设计。
2.1 总体设计。
1) 总体设计图。
图2-1 通讯录管理系统总体设计图。
2)各模块功能。
表2-1 通讯录管理系统功能模块表。
2.2 表单结构。
表2-2 contacts(通讯录)表。
3 详细设计。
3.1 算法思想。
(1)查找:先从数据库中把通讯录中所有姓名取出存在一个变长数组vector类的对象vec中,再把vec中的所有姓名字符串取出来转换为拼音字符串,然后按拼音顺序对vec中的所有姓名进行排序,排序方法按选择排序进行,排序后vec中的姓名变得按拼音有序,此时进行二分查找,直到找到要找的联系人姓名,最后从数据库中取出该联系人的信息显示出来;
(2)浏览:同查找,先得到一个按姓名拼音有序排列的vector类的对象vec,然后把vec中的每个姓名对应的信息依次从数据库中取出显示出来;
(3)模糊查询:同查找,先得到一个按姓名拼音有序排列的vector类的对象vec,然后遍历vec中的每个姓名字符串,每找到一个以用户输入的姓名字符串为前缀的联系人就从数据库中把该联系人信息取出显示出来;
3.2 流程图。
下图是二分查找的流程图:
先把通讯录中所有联系人姓名存在vector类的vec对象中,然后排好序。令low=0代表vec中第一个姓名字符串的位置,high=代表vec中最后一个字符串位置,mid=(low+high)/2代表low和high中间的姓名字符串位置。
图3-1 二分查找流程图。
3.3 关键部分**。
package control;
import database.*;
import view.*;
import
import
public class queryhandle
public vector queryallname()catch(exception e
return vec;
public vector queryinfo(string a)catch(exception e){}
return vec1;
public void likequery(string a)
if(type==0
没有您要的信息,请重新输入");
public void sort()
public void binarysearch(string a){/对分查找:把表中的所有联系人姓名(汉字)取出存在一个字符串变长数组中,再把要查找的人的姓名和数组中的所有字符串都取出来转换为拼音,把查找人的拼音与数组中姓名字符串转换后的的拼音进行对分比较,直到找到要查找的联系人;
type=0;
string a1=
sort();
int low=0;
int high=
int mid;
listframe lf=new listframe("查询或浏览信息如下");
while(low<=high){
mid=(high+low)/2;
string s=(string)
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 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 初始化时每个方格都是关闭的,一个...