东华理工大学《数据结构》课程设计_同学录课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构与算法设计》课程设计报告
题目:同学录
学生姓名:江一翀
学号: 201320182021
班级: 1321820
指导教师:王强
2015年1月9日
东华理工理工大学
摘要
随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的同学录管理系统,
电子同学录在科技发展的现代是非常重要的,它具有轻便,快捷且不占存储空间的优点,有效的解决了纸质同学占用空间,不方便查找且容易丢失的问题。特别是当同学录的信息量很大的时候,这个系统就更显得尤为重要了
1 问题描述
(1)题目内容:通讯录管理。
(2)基本要求:利用单链表实现通讯录的建立、通讯者的插入、通讯者的删除、通讯者的查询以及通讯录的输出。
(3)设计目的:设计目的:
1.掌握线性表的数据存储。
2.掌握线性表的基本操作。
3.掌握查找的基本算法。
具体功能:
1.对同学基本信息进行录入,应能分类录入不同阶段的同学信息,同学信息包括同学姓名、身份证号、联系电话、qq号码、爱好、联系地址、邮箱等信息;
2.对同学信息进行查询,可按同学姓名、地址、年龄段等多种方式进行查询;
3.对同学信息进行排序,可按同学姓名、年龄、地址、qq号等多种方式查询;;
4.对同学信息进行修改;
5.对同学信息进行删除;
2 需求分析
经过本次的课程设计,我认为通讯录主要实现的功能如下:
(1)添加信息:一个通讯录应该有其基本的添加功能。在程序设计时,我通过一个具有添加功能的函数,实现了个人信息的添加,如:姓名,性别,电话号码,QQ号码,地址。
(2)删除信息:当你不需要某个联系人的信息时,可以直接将该人的
信息删除。
(3)查找:一个通讯录应该具有令一基本功能就是查找,本设计时可以按联系人为关键字查找的,只要你输入要查找人的姓名或手机号码或QQ号码就可出来相应的个人信息。
(4)输出:一个通讯录应该具有输出所有联系人的功能,本设计按照次序可以从头到尾把通讯录中的所有联系人都输出,供自己查看。(5)退出:当你做完你要做的事情之后,就可以退出该程序。
3 总体设计
3.1 算法的定义
LinkList Creat_LinkList()创建空单链表
void Insert_LinkList(LinkList H)建立通讯录,录入联系人的信息,可以把联系人的姓名,性别,手机号,QQ号,地址录入系统。
void Locate_LinkList(LinkList H)按照联系人的姓名,手机号码,QQ号码查找通讯录中联系人的信息。
void Delete_LinkList(LinkList H)按照联系人的姓名,手机号码,QQ号码删除联系人的所有信息。
void print_LinkList(LinkList H)输出通讯录中的所有联系人的信息供使用者查看。
3.2 系统流程图
图3-1通讯录管理功能图3.3 详细程序设计
1)定义数据结构
typedef struct Node //定义数据结构
{
char name[20];//姓名
char sex[4]; //性别
char tel[11];//电话号码
char qq[13]; //qq号码
char ad[100];//地址
Node *next;//存放后继元素的地址
}LNode,*LinkList;
2)创建一个空的单链表
LinkList Creat_LinkList()
{//创建空单链表,入口参数无
LinkList H;
H=new LNode;
if(H)//确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表
{
H->next=NULL;
}
return H;
}
3)向通讯录中插入联系人
void Insert_LinkList(LinkList H)
{
LinkList p;
p=new LNode;
if(!p)
{
cout<<"不能插入!"< } cout<<"请输入你要插入的联系人信息:"< cout<<"姓名:"< cin>>p->name; cout<<"性别:"< cin>>p->sex; cout<<"手机号码:"< cin>>p->tel; cout<<"QQ号码:"< cin>>p->qq; cout<<"地址:"< cin>>p->ad; p->next=H->next; H->next=p; cout<<"插入成功"< } 4)查询通讯录中某个联系人的信息 void Locate_LinkList(LinkList H) { int x; LinkList p=H->next; cout<<"你要通过哪种方式查询?"< cout<<"1.通过联系人姓名查询"< cout<<"2.通过联系人手机号码查询"< cout<<"3.通过联系人QQ号码查询"< cin>>x; char str[30]; if(x==1) { cout<<"请输入你要查询的联系人的姓名:"; cin>>str; while(p && strcmp(p->name,str)!=0) { p=p->next; } } if(x==2) { cout<<"请输入你要查询的联系人的手机号码:"; cin>>str; while(p&&strcmp(p->tel,str)!=0) { p=p->next; } } if(x==3) { cout<<"请输入你要查询的联系人的QQ号码:"; cin>>str; while(p&&strcmp(p->qq,str)!=0) { p=p->next; }