课程设计——通讯录(By Grace)
2015-01-10 22:36
148 查看
《数据结构》课程设计
By Grace(王欣桐)
题目2:李刚是一爱折腾的人,当然爱折腾的人均有梦想,他想当中国的盖次呢。可不,现在个人好友信息多了,复杂了,他想制作一个个人通讯录的制作管理软件。 刚好这个学期学了数据结构课,所以他准备使用数据结构知识来实现了。并考虑使用双向链表作数据结构。并制定了初步要求:
(1)每个好友信息包含姓名、性别、住址、邮编、几岁、电话、QQ、微信帐号、生日等。
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力。
分析:本题应用到的知识点有以下几点:大一学习的C++中的类、函数的重载、结构体;大二学习的数据结构中的双链表等。课题在设计中应用的双链表是一种对称结构,使得联系人信息在执行插入与删除操作时变得更加简便,这与现实生活中的实际需求相适应。
课题代码如下:
实现界面:
主界面:
插入界面:
显示界面:
体会及不足:当看到本次课程设计的题目时,我第一个想到的是手机上的通讯录,并在脑海中构思了课题设计的大体框架,希望可以设计得像手机上的通讯录类似。但是,理想是丰满的,现实却是残酷的。当我着手开始编写代码时我就傻眼了,由于自己能力的不足以及经验的缺乏,那些在脑海里想好的功能,在编写时总是出现不知道该怎么实现的情况。无奈之下,只能请教其他同学并借助网络,参考了一下”大师级“人物编写的代码,并将其中的精粹部分添加进自己的代码中。最后完成了我的课程设计,也就是上面的那一大片的代码。我知道本次课程设计中还有很都不完善的地方,所以,在接下来的寒假时间以及以后的学习中我会继续努力学习C++以及数据结构等知识,并融会贯通,理论联系实际,希望有一天能靠自己的能力,独立完成一个课程的设计,独自写出一个项目的实现代码。学无止境。不由得又想起屈原的一句话:”路漫漫其修远兮,吾将上下而求索!"这也是我努力的方向。我会继续潜心学习的。
以上就是本人《数据结构》课程设计,望各位看倌不吝赐教~~
王欣桐
2015年1月10日
By Grace(王欣桐)
题目2:李刚是一爱折腾的人,当然爱折腾的人均有梦想,他想当中国的盖次呢。可不,现在个人好友信息多了,复杂了,他想制作一个个人通讯录的制作管理软件。 刚好这个学期学了数据结构课,所以他准备使用数据结构知识来实现了。并考虑使用双向链表作数据结构。并制定了初步要求:
(1)每个好友信息包含姓名、性别、住址、邮编、几岁、电话、QQ、微信帐号、生日等。
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力。
分析:本题应用到的知识点有以下几点:大一学习的C++中的类、函数的重载、结构体;大二学习的数据结构中的双链表等。课题在设计中应用的双链表是一种对称结构,使得联系人信息在执行插入与删除操作时变得更加简便,这与现实生活中的实际需求相适应。
课题代码如下:
<pre name="code" class="cpp"><span style="background-color: rgb(255, 153, 255);">#include "数据结构.h" void menu() { cout<<" ┏━━━━━━━━━━━━━━━━┓"<<endl; cout<<" ┃ 通 訊 錄 ┃"<<endl; cout<<" ┃━━━━━━━━━━━━━━━━┃"<<endl; cout<<" ┃1.查找联系人 ┃"<<endl; cout<<" ┃2.显示联系人 ┃"<<endl; cout<<" ┃3.添加联系人 ┃"<<endl; cout<<" ┃4.修改联系人 ┃"<<endl; cout<<" ┃5.删除联系人 ┃"<<endl; cout<<" ┃6.退出 ┃"<<endl; cout<<" ┗━━━━━━━━━━━━━━━━┛"<<endl; } int main() { Dou_Circular_Linklist d; menu(); int a; char m; cout << "请输入序号(1-6):" ; cin >> a; while(a > 6 || a < 1) { cout << "非法选项,请选择1-6,谢谢合作。"; cin >> a; } while(a <= 6 && a >=1) { switch(a) { case 1:system("cls");d.Search();break; case 2:system("cls");d.Printlist();break; case 3:system("cls");d.Insert();break; case 4:system("cls");d.modifyList();break; case 5:system("cls");d.Delete();break; default: exit(0); } cout << "返回菜单吗?(1:是,其他:否)"<<endl; cin >> m; system("cls"); menu(); cout << "请输入序号(1-6):" ; cin >> a; } return 0; }</span>
<pre name="code" class="cpp"><span style="background-color: rgb(255, 153, 255);">#ifndef DULLIST_H #define DULLIST_H #include <iostream> #include <string> #include <stdlib.h> using namespace std; const int MaxSize=500; struct Contacts { string name; string sex; string address; string postcode; string age; string phone; string QQ; string wechat; string birthday; }; struct Node { Contacts data; Node *prior,*next; }; class Dou_Circular_Linklist { public: Dou_Circular_Linklist(); Dou_Circular_Linklist(Contacts a[], int n); ~Dou_Circular_Linklist(); void Printlist(); void Search(); void Insert(); void Delete(); void modifyList(); private: Node* first; }; void Dou_Circular_Linklist::modifyList() { int n,count; cout << "修改第几个联系人信息?" << endl; cin >> n; Contacts temp; Node *p = first->next; count = 1; while(count < n && p != first) { p = p->next; count++; } if(p == first) cout << "你所要修改的信息不存在" << endl; else { cout << "请依次输入你要修改的信息:"<<endl; cout << "姓名:" ; cin >> temp.name; p->data.name = temp.name; cout << "性别:" ; cin >> temp.sex; p->data.sex = temp.sex; cout << "住址:" ; cin >> temp.address; p->data.address = temp.address; cout << "邮编:" ; cin >> temp.postcode; p->data.postcode = temp.postcode; cout << "年龄:" ; cin >> temp.age; p->data.age = temp.age; cout << "电话:" ; cin >> temp.phone; p->data.phone = temp.phone; cout << "QQ:" ; cin >> temp.QQ; p->data.QQ = temp.QQ; cout << "微信帐号:" ; cin >> temp.wechat; p->data.wechat = temp.wechat; cout << "生日:" ; cin >> temp.birthday; p->data.birthday = temp.birthday; cout << "修改成功!"<<endl; } } Dou_Circular_Linklist :: Dou_Circular_Linklist() { first =new Node; first->next = first; first->prior = first; } Dou_Circular_Linklist::Dou_Circular_Linklist(Contacts a[], int n) { Node *f,*s; first=new Node; f=first; for(int i = 0; i < n; i++) { s=new Node; s->data.address = a[i].address; s->data.age = a[i].age; s->data.birthday = a[i].birthday; s->data.name = a[i].name; s->data.phone = a[i].phone; s->data.postcode = a[i].postcode; s->data.QQ = a[i].QQ; s->data.sex = a[i].sex; s->data.wechat = a[i].wechat; s->prior=f; f->next=s; f=f->next; } f->next=first; first->prior=f; } void Dou_Circular_Linklist::Printlist() { if(first->next == first) cout << "联系人信息不存在." <<endl; else { cout<<"按顺序输出联系人信息:" <<endl; Node*p = first->next; int count = 1; while(p!=first) { cout << count << "."; cout << "联系人名字:" << p->data.name << endl; cout << "联系人性别:" << p->data.sex << endl; cout << " 住址:" << p->data.address << endl; cout << " 邮编:" << p->data.postcode << endl; cout << " 年龄:" << p->data.age << endl; cout << " 电话:" << p->data.phone << endl; cout << " QQ:" << p->data.QQ << endl; cout << " 微信帐号:"<< p->data.wechat << endl; cout << " 生日:"<< p->data.birthday << endl; p=p->next; ++count; } } } void Dou_Circular_Linklist::Search() { if(first->next == first) cout << "联系人信息不存在." <<endl; else { cout << "需要查找的联系人名字是?" <<endl; string x; cin >> x ; Node*p = first->next; int count = 1; while(p->data.name != first->data.name) { if(p->data.name == x) break; p = p->next; count++; } if(p->data.name == first->data.name) cout << "该联系人信息不存在" << endl; else { cout <<"联系人名字:"<< p->data.name << endl; cout <<" 性别:"<< p->data.sex << endl; cout <<" 住址:"<< p->data.address << endl; cout <<" 邮编:"<< p->data.postcode << endl; cout <<" 年龄:"<< p->data.age << endl; cout <<" 电话:"<< p->data.phone << endl; cout <<" QQ:"<< p->data.QQ << endl; cout <<" 微信帐号:"<< p->data.wechat << endl; cout <<" 生日:"<< p->data.birthday << endl; } } } void Dou_Circular_Linklist::Insert() { int n; Node*s=new Node; if(first->next == first) n = 1; else { cout << "需要插入的位置是:" <<endl; cin >> n; } cout << "请依次输入你要插入的联系人信息:"<<endl; cout << "姓名:" ; cin >> s->data.name; cout << "性别:" ; cin >> s->data.sex; cout << "住址:" ; cin >> s->data.address; cout << "邮编:" ; cin >> s->data.postcode; cout << "年龄:" ; cin >> s->data.age; cout << "电话:" ; cin >> s->data.phone; cout << "QQ:" ; cin >> s->data.QQ; cout << "微信帐号:" ; cin >> s->data.wechat; cout << "生日:" ; cin >> s->data.birthday; Node*p = first; int count=0; while(count<n-1) { p=p->next; count++; } s->prior=p; s->next=p->next; p->next->prior=s; p->next=s; cout << "插入成功!"<<endl; } void Dou_Circular_Linklist::Delete() { if(first->next == first) cout << "该联系人信息不存在." <<endl; else { int n; cout << "需要删除第几个联系人的信息?" << endl; cin >> n; Node *q=first->next; int count = 1; while(count < n) { q = q->next; count++; } q->prior->next = q->next; q->next->prior = q->prior; delete q; cout << "删除成功!"<<endl; } } Dou_Circular_Linklist::~Dou_Circular_Linklist() { while(first!=first) { Node *q=first; first=first->next; delete q; } delete first; } #endif </span>
实现界面:
主界面:
插入界面:
显示界面:
体会及不足:当看到本次课程设计的题目时,我第一个想到的是手机上的通讯录,并在脑海中构思了课题设计的大体框架,希望可以设计得像手机上的通讯录类似。但是,理想是丰满的,现实却是残酷的。当我着手开始编写代码时我就傻眼了,由于自己能力的不足以及经验的缺乏,那些在脑海里想好的功能,在编写时总是出现不知道该怎么实现的情况。无奈之下,只能请教其他同学并借助网络,参考了一下”大师级“人物编写的代码,并将其中的精粹部分添加进自己的代码中。最后完成了我的课程设计,也就是上面的那一大片的代码。我知道本次课程设计中还有很都不完善的地方,所以,在接下来的寒假时间以及以后的学习中我会继续努力学习C++以及数据结构等知识,并融会贯通,理论联系实际,希望有一天能靠自己的能力,独立完成一个课程的设计,独自写出一个项目的实现代码。学无止境。不由得又想起屈原的一句话:”路漫漫其修远兮,吾将上下而求索!"这也是我努力的方向。我会继续潜心学习的。
以上就是本人《数据结构》课程设计,望各位看倌不吝赐教~~
王欣桐
2015年1月10日
相关文章推荐
- C语言课程设计---通讯录
- 数据结构课程设计-通讯录管理系统的设计与实现
- 数据结构实践课程设计【通讯录管理系统】
- 第18周 课程设计 --电子模拟通讯录
- 数据结构课程设计 - 通讯录管理系统
- C语言课程设计--学生通讯录1.0
- 课程设计--通讯录
- 数据库课程设计——通讯录
- 工在课程设计--通讯录
- C++课程设计 ---通讯录
- 课程设计:通讯录
- 数据结构课程设计之通讯录管理系统
- 课程设计 个人通讯录管理助手
- 数据结构课程设计之通讯录管理系统
- 2013数据结构课程设计之通讯录(复习链表与文件知识)
- 学生通讯录 课程设计
- C 语言课程设计 最终答辩版 学生通讯录管理系统
- 数据结构课程设计——通讯录管理系统
- 【课程设计-通讯录管理系统】