数据结构课程设计——通讯录制作
一、課程設計題目
李剛是一愛折騰的人,當然愛折騰的人均有夢想,他想當中國的蓋次呢。可不,現在個人好友信息多了,復雜了,他想制作一個個人通訊錄的制作管理軟件。?剛好這個學期學了數據結構課,所以他準備使用數據結構知識來實現了。并考慮使用雙向鏈表作數據結構。并制定了初步要求:
?
(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++ 語言知識,讓我的水平又進一步的提高。數據結構這是一門語言知識讓我的水平又一步的提高。數據結構純屬于設計的科目,它需用把理論變為上機調試,對我們 來說具有一定的難度。它是其它編程語言的一門基本學科。 來說具有一定的難度。我的題目是用雙向鏈表作為數據結構制作通訊錄,剛開始調試代碼的時候有時就是一個很小的錯導致整個程序不能運行,每當程序錯誤時我都非常焦躁,但我最終找到了狀態,一步一步慢慢來。經過無數次的檢查程序錯誤的原因后慢慢懂得了耐心是一個人成功的必然具備的條件! 同時,通過此次課程設計使我了解到, 在計算機編程上要想成為一個有能力的人, 必須具備一定的硬件基礎語言。在這次課程設計中,雖然不會成功的編寫一個完整的程序,但是在看程序的過程中,不斷的上網查資料 以及翻閱相關書籍,通過不斷的模索,測試,發現問題,解決問題在老師的幫助下一步一步慢慢的正確運行程序,終于完成了這次課程設計,雖然這次課程設計結束了但是總覺得自已懂得的知識很是不足,學無止境,以后還會更加的努力深入的學習。
? ? ? ? 數據結構學起來不容易,對個別知識點的理解不夠深入,這學期的數據結構課程已經結束了,但我學習數據結構的路還很長,而且這條路也很難走,對計算機對軟件感興趣是我繼續學習編程,學習數據結構的最大動力,最后,衷心感謝老師這一個學期以來的指導和辛勤的教學。
總結
以上是生活随笔為你收集整理的数据结构课程设计——通讯录制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java序谈之通讯录制作
- 下一篇: 考计算机一级应该学什么条件,计算机一级考