数据结构课程设计——通讯录制作
2015-01-14 10:22
316 查看
一、课程设计题目
李刚是一爱折腾的人,当然爱折腾的人均有梦想,他想当中国的盖次呢。可不,现在个人好友信息多了,复杂了,他想制作一个个人通讯录的制作管理软件。 刚好这个学期学了数据结构课,所以他准备使用数据结构知识来实现了。并考虑使用双向链表作数据结构。并制定了初步要求:
(1)每个好友信息包含姓名、性别、住址、邮编、几岁、电话、QQ、微信帐号、生日等。
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力。
二、课程设计目的
通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。
三、课程设计要求
使用数据结构相关知识来做。语言工具不受限。
1、独立完成,设计算法并编写代码,调试通过。
2、写设计说明书。
内容:题目、功能、要求、分析、代码,收获和体会及不足等。
3、以个人独立完成。每一个选择一个题目。选题方式是:自己学号整除5所得的余数是几就做几号题。如学号为12做2号题,学号为5的做0号题。
四、需求分析
1、程序描述
这是通过运用双向链表为数据结构做成的通讯录系统,比较简洁便利,能过实现添加,删除,查看功能,收录个人信息
2、功能实现
1.)添加通讯录
2.)删除通讯录
3.)查找通讯录
4.)退出通讯录
//persson.h头文件
#ifndef person_H
#define person_H
struct person
{
person *pre;
char Name[15];
char Sex[4];
char Age[4];
char Number[15];
char Address[20];
char qq[40];
char postalcode[12];
/*省略qq,wechat,birthday,与Number输入一样,birthday用Age减2015,书上多次提到了*/
person *next;
};
class personmanege
{
private:
person *head;
person *tail;
person* temp;
public:
personmanege() { head = NULL; tail = NULL; }
~personmanege() { head = NULL; tail = NULL; }
void ShowMenu();
void Show();
void Search();
void Add();
void Delete();
};
#endif
//personmanage源文件
#include<iostream>
#include<cstring>
#include"person.h"
using namespace std;
void personmanege::ShowMenu()
{
cout << "**********************" << endl;
cout << "* 欢迎进入通讯录系统 *" << endl;
cout << "**********************" << endl;
cout << "* 1.添加通讯录 *" << endl;
cout << "* 2.删除通讯录 *" << endl;
cout << "* 3.查找通讯录 *" << endl;
cout << "* 4.退出通讯录 *" << endl;
cout << "**********************" << endl;
cout << "请输入需要进行的操作的序号" << endl;
}
void personmanege::Search()
{
char name[15];
cout << "请输入要查找的姓名:";
cin >> name;
temp = head;
while (temp != NULL)
{
if (strcmp(temp->Name, name) == 0)
{
cout << "姓名:" << temp->Name << endl;
cout << "性别:" << temp->Sex << endl;
cout << "年龄:" << temp->Age << endl;
cout << "号码:" << temp->Number << endl;
cout << "地址:" << temp->Address << endl;
cout << "QQ账号:"<<temp->qq<< endl;
cout << "邮政编码"<<temp->postalcode<< endl;
break;
}
else
temp = temp->next;
if (temp == NULL)
cout << "没有查找到目标" << endl;
}
system("pause");
}
void personmanege::Add()
{
person *t = new person;
cout << "请输入新名片的姓名:"; cin >> t->Name;
cout << "请输入新名片的性别:"; cin >> t->Sex;
cout << "请输入新名片的年龄:"; cin >> t->Age;
cout << "请输入新名片的号码:"; cin >> t->Number;
cout << "请输入新名片的地址:"; cin >> t->Address;
cout << "请输入新名片QQ账号:"; cin >> t->qq;
cout << "请输入新名片邮政编码:"; cin >> t->postalcode;
if (head == NULL)
{
head = t;
t->pre = NULL;
t->next = NULL;
tail = t;
}
else
{
tail->next = t;
t->next = NULL;
t->pre = tail;
tail = t;
}
}
void personmanege::Delete()
{
char name[15];
cout << "请输入要删除名片的姓名:";
cin >> name;
temp = head;
while (temp != NULL)
{
if (strcmp(temp->Name, name) == 0)
{
if (temp == head)
{
head = temp->next;
if (head != NULL)
head->pre = NULL;
}
else if (temp == tail)
{
temp->pre->next = NULL;
tail = temp->pre;
}
else
{
temp->pre->next = temp->next;
temp->next->pre = temp->pre;
}
delete temp;
break;
}
else
temp = temp->next;
if (temp == NULL)
cout << "没有找到目标" << endl;
}
system("pause");
}
//personmanege-main主函数
#include<iostream>
#include<cstring>
#include"person.h"
using namespace std;
int main()
{
personmanege p;
char ch;
while (1)
{
p.ShowMenu();
cin >> ch;
switch (ch)
{
case'1':
p.Add();
break;
case'2':
p.Delete();
break;
case'3':
p.Search();
break;
case'4':
break;
}
if (ch == 4)
break;
}
return 0;
}
函数代码实现如下:
五.课程设计收获和心得
数据结构可以说是计算机里一门基础课程,数据结构可以说是计算机里一门基础课程,而对于基础我们学扎实,然而在这学期短短的教程里帮我又重新巩固了 C++ 语言知识,让我的水平又进一步的提高。数据结构这是一门语言知识让我的水平又一步的提高。数据结构纯属于设计的科目,它需用把理论变为上机调试,对我们 来说具有一定的难度。它是其它编程语言的一门基本学科。
来说具有一定的难度。我的题目是用双向链表作为数据结构制作通讯录,刚开始调试代码的时候有时就是一个很小的错导致整个程序不能运行,每当程序错误时我都非常焦躁,但我最终找到了状态,一步一步慢慢来。经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到, 在计算机编程上要想成为一个有能力的人, 必须具备一定的硬件基础语言。在这次课程设计中,虽然不会成功的编写一个完整的程序,但是在看程序的过程中,不断的上网查资料 以及翻阅相关书籍,通过不断的模索,测试,发现问题,解决问题在老师的帮助下一步一步慢慢的正确运行程序,终于完成了这次课程设计,虽然这次课程设计结束了但是总觉得自已懂得的知识很是不足,学无止境,以后还会更加的努力深入的学习。
数据结构学起来不容易,对个别知识点的理解不够深入,这学期的数据结构课程已经结束了,但我学习数据结构的路还很长,而且这条路也很难走,对计算机对软件感兴趣是我继续学习编程,学习数据结构的最大动力,最后,衷心感谢老师这一个学期以来的指导和辛勤的教学。
李刚是一爱折腾的人,当然爱折腾的人均有梦想,他想当中国的盖次呢。可不,现在个人好友信息多了,复杂了,他想制作一个个人通讯录的制作管理软件。 刚好这个学期学了数据结构课,所以他准备使用数据结构知识来实现了。并考虑使用双向链表作数据结构。并制定了初步要求:
(1)每个好友信息包含姓名、性别、住址、邮编、几岁、电话、QQ、微信帐号、生日等。
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力。
二、课程设计目的
通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。
三、课程设计要求
使用数据结构相关知识来做。语言工具不受限。
1、独立完成,设计算法并编写代码,调试通过。
2、写设计说明书。
内容:题目、功能、要求、分析、代码,收获和体会及不足等。
3、以个人独立完成。每一个选择一个题目。选题方式是:自己学号整除5所得的余数是几就做几号题。如学号为12做2号题,学号为5的做0号题。
四、需求分析
1、程序描述
这是通过运用双向链表为数据结构做成的通讯录系统,比较简洁便利,能过实现添加,删除,查看功能,收录个人信息
2、功能实现
1.)添加通讯录
2.)删除通讯录
3.)查找通讯录
4.)退出通讯录
//persson.h头文件
#ifndef person_H
#define person_H
struct person
{
person *pre;
char Name[15];
char Sex[4];
char Age[4];
char Number[15];
char Address[20];
char qq[40];
char postalcode[12];
/*省略qq,wechat,birthday,与Number输入一样,birthday用Age减2015,书上多次提到了*/
person *next;
};
class personmanege
{
private:
person *head;
person *tail;
person* temp;
public:
personmanege() { head = NULL; tail = NULL; }
~personmanege() { head = NULL; tail = NULL; }
void ShowMenu();
void Show();
void Search();
void Add();
void Delete();
};
#endif
//personmanage源文件
#include<iostream>
#include<cstring>
#include"person.h"
using namespace std;
void personmanege::ShowMenu()
{
cout << "**********************" << endl;
cout << "* 欢迎进入通讯录系统 *" << endl;
cout << "**********************" << endl;
cout << "* 1.添加通讯录 *" << endl;
cout << "* 2.删除通讯录 *" << endl;
cout << "* 3.查找通讯录 *" << endl;
cout << "* 4.退出通讯录 *" << endl;
cout << "**********************" << endl;
cout << "请输入需要进行的操作的序号" << endl;
}
void personmanege::Search()
{
char name[15];
cout << "请输入要查找的姓名:";
cin >> name;
temp = head;
while (temp != NULL)
{
if (strcmp(temp->Name, name) == 0)
{
cout << "姓名:" << temp->Name << endl;
cout << "性别:" << temp->Sex << endl;
cout << "年龄:" << temp->Age << endl;
cout << "号码:" << temp->Number << endl;
cout << "地址:" << temp->Address << endl;
cout << "QQ账号:"<<temp->qq<< endl;
cout << "邮政编码"<<temp->postalcode<< endl;
break;
}
else
temp = temp->next;
if (temp == NULL)
cout << "没有查找到目标" << endl;
}
system("pause");
}
void personmanege::Add()
{
person *t = new person;
cout << "请输入新名片的姓名:"; cin >> t->Name;
cout << "请输入新名片的性别:"; cin >> t->Sex;
cout << "请输入新名片的年龄:"; cin >> t->Age;
cout << "请输入新名片的号码:"; cin >> t->Number;
cout << "请输入新名片的地址:"; cin >> t->Address;
cout << "请输入新名片QQ账号:"; cin >> t->qq;
cout << "请输入新名片邮政编码:"; cin >> t->postalcode;
if (head == NULL)
{
head = t;
t->pre = NULL;
t->next = NULL;
tail = t;
}
else
{
tail->next = t;
t->next = NULL;
t->pre = tail;
tail = t;
}
}
void personmanege::Delete()
{
char name[15];
cout << "请输入要删除名片的姓名:";
cin >> name;
temp = head;
while (temp != NULL)
{
if (strcmp(temp->Name, name) == 0)
{
if (temp == head)
{
head = temp->next;
if (head != NULL)
head->pre = NULL;
}
else if (temp == tail)
{
temp->pre->next = NULL;
tail = temp->pre;
}
else
{
temp->pre->next = temp->next;
temp->next->pre = temp->pre;
}
delete temp;
break;
}
else
temp = temp->next;
if (temp == NULL)
cout << "没有找到目标" << endl;
}
system("pause");
}
//personmanege-main主函数
#include<iostream>
#include<cstring>
#include"person.h"
using namespace std;
int main()
{
personmanege p;
char ch;
while (1)
{
p.ShowMenu();
cin >> ch;
switch (ch)
{
case'1':
p.Add();
break;
case'2':
p.Delete();
break;
case'3':
p.Search();
break;
case'4':
break;
}
if (ch == 4)
break;
}
return 0;
}
函数代码实现如下:
五.课程设计收获和心得
数据结构可以说是计算机里一门基础课程,数据结构可以说是计算机里一门基础课程,而对于基础我们学扎实,然而在这学期短短的教程里帮我又重新巩固了 C++ 语言知识,让我的水平又进一步的提高。数据结构这是一门语言知识让我的水平又一步的提高。数据结构纯属于设计的科目,它需用把理论变为上机调试,对我们 来说具有一定的难度。它是其它编程语言的一门基本学科。
来说具有一定的难度。我的题目是用双向链表作为数据结构制作通讯录,刚开始调试代码的时候有时就是一个很小的错导致整个程序不能运行,每当程序错误时我都非常焦躁,但我最终找到了状态,一步一步慢慢来。经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到, 在计算机编程上要想成为一个有能力的人, 必须具备一定的硬件基础语言。在这次课程设计中,虽然不会成功的编写一个完整的程序,但是在看程序的过程中,不断的上网查资料 以及翻阅相关书籍,通过不断的模索,测试,发现问题,解决问题在老师的帮助下一步一步慢慢的正确运行程序,终于完成了这次课程设计,虽然这次课程设计结束了但是总觉得自已懂得的知识很是不足,学无止境,以后还会更加的努力深入的学习。
数据结构学起来不容易,对个别知识点的理解不够深入,这学期的数据结构课程已经结束了,但我学习数据结构的路还很长,而且这条路也很难走,对计算机对软件感兴趣是我继续学习编程,学习数据结构的最大动力,最后,衷心感谢老师这一个学期以来的指导和辛勤的教学。
相关文章推荐
- 四则运算实现(c 语言 数据结构课程设计题)
- 浅说代码风格 - 数据结构课程设计
- 数据结构课程设计---最长公共子串
- 数据结构课程设计---学生信息管理系统
- 数据结构课程设计(C++语言)
- 数组应用[数据结构课程设计]
- 数据结构课程设计---最长公共子串
- 重言式判别 (数据结构课程设计)
- 数据结构课程设计:括号匹配问题(实现检验匹配并输出不匹配的位置)
- 数据结构课程设计
- 数据结构课程设计题目
- 数据结构课程设计-校园导游系统-带注释
- 数据结构课程设计---学生信息管理系统
- 校园导航-_数据结构课程设计
- 数据结构课程设计(2)
- 数据结构课程设计-----用C#实现双向链表
- 数据结构课程设计--航空客运订票系统
- 数据结构课程设计---教学任务安排系统
- 个人帐簿管理系统设计[数据结构课程设计]
- 数据结构课程设计----基数排序