單位員工通訊錄管理系(線性表的應用)
1.問題描述
[題目描述]
為某個單位建立乙個員工通訊錄管理系統,可以方便查詢每乙個員工的手機號、及電子郵箱。其功能包括通訊錄鍊錶的建立、員工通訊資訊的查詢、修改、插入與刪除、以及整個通訊錄表的輸出。
操作分為查詢(query)、修改(modify)、新增(add)、刪除(del)、列印(print)
1. 查詢:輸入員工姓名,輸出員工資訊,若員工不存在,輸出「not found!」
2. 修改:輸入員工姓名、要修改的屬性、修改資訊。姓名為name、**為tel、郵箱為email。
3. 新增:輸入員工編號、姓名、**號碼、郵箱。
4. 刪除:輸入員工姓名,將其從通訊錄中刪除。
5. 列印:輸出通訊錄。
[輸入]
第一行是乙個整數n(1<=n<=100),表示通訊錄原有n個人。接下來n行是員工資訊,每行有編號、姓名、**號碼、郵箱四個員工屬性。
接下來輸入乙個整數m(1<=m<=100),表示有m次操作。接下來是m行操作,每行為一次操作,操作如題意所示。
資料保證編號、姓名不重複;編號小於200且公升序給出,名字只由小寫字母組成,**只由數字組成,郵箱只由數字、小寫字母、「@」、「.」組成;名字、**、郵箱字串長度都不超過20。
[輸出]
對於每個query和print,輸出查詢或列印結果。
[樣例輸入]2
1 aaa 13579246811 [email protected]
2 csl 13579246833 [email protected]
9del aaa
query aaa
query csl
modify csl email [email protected]
query csl
add 3 cnz 01234567890 [email protected]
modify cnz name cnznb
modify cnznb tel 13579246822
[樣例輸出]
2 csl 13579246833 [email protected]
2 csl 13579246833 [email protected]
2 csl 13579246833 [email protected]
3 cnznb 13579246822 [email protected]
[提示]
樣例中,
del aaa 表示刪除aaa的資訊
query aaa 查詢aaa的資訊,不存在,輸出「not found!」
query csl 表示查詢csl的資訊,輸出「2 csl 13579246833 [email protected]」
modify csl email [email protected] 表示修改csl的郵箱為「[email protected]」
query csl 表示查詢csl的資訊,輸出「2 csl 13579246833 [email protected]」
add 3 cnz 01234567890 [email protected] 新增一條員工資訊
modify cnz name cnznb 修改cnz的name為cnznb
modify cnznb tel 13579246822 修改cnz的tel為13579246822
print 按編號順序列印通訊錄
2.需求分析
可以採用單鏈表的儲存結構,如可定義如下的儲存結構:
typedef struct datatype;
typedef struct lnode*linklist,lnode; //linklist為指向結構體lnode的指標型別
3.演算法設計
1. creatlist_r(linklist &l,int n)——尾插法建立空鍊錶
2. listlength(linklist l)——遍歷求單鏈表的長度
3. getelem(linklist l)——根據編號遍歷鍊錶查詢員工資訊
4. listinsert(linklist &l,int i)——在表頭節點前插入節點
5. listdelete(linklist &l)——遍歷鍊錶找到待刪節點前驅後進行刪除操作
6. show(linklist l)——顯示鍊錶所有元素
7. xiugai(linklist l)——對鍊錶中的資料進行修改
4.除錯分析
採用鏈式儲存結構,插入和刪除速度快,只需改變指標指向即可,但是查詢速度慢,查詢時需要迴圈鍊錶訪問。
5.實驗結果
typedef struct lnode*linklist,lnode; //linklist為指向結構體lnode的指標型別
void creatlist_r(linklist &l,int n)//尾插法建立空鍊錶
}int listlength(linklist l)
return count;
}void getelem(linklist l)//查詢
if (!p) //查詢第i-1個結點,p指向該結點
if(!p||j>i-1) return error; //i>n+1或者i<1
s=new lnode; //生成新結點*s
cin>>s->data.num >>s->data.name>>s->data.call>>s->data.mail; //將結點*s的資料域置為e
s->next=p->next; //將結點*s的指標域指向結點ai
p->next=s; //將結點*p的指標域指向結點*s
}status listdelete(linklist &l)//刪除
for (j = 1; j <= i - 1; j++)
q = q->next;
q->next = p->next;
delete p;
return ok;
}void show(linklist l)//顯示鍊錶所有元素
}void xiugai(linklist l)//對鍊錶中的資料進行修改
if(!strcmp(s2,"name"))
cin>>p->data.name;
} if(!strcmp(s2,"tel"))cin>>p->data.call;
} if(!strcmp(s2,"email")) cin>>p->data.mail;
} }int main()
if(!strcmp(s,"del")) listdelete(l);
if(!strcmp(s,"print")) show(l);
} return 0;
}
課設 單位員工通訊錄管理系統
為某個單位建立乙個員工通訊錄管理系統,可以方便查詢每乙個員工的手機號 及電子郵箱。其功能包括通訊錄鍊錶的建立 員工通訊資訊的查詢 修改 插入與刪除 以及整個通訊錄表的輸出。操作分為查詢 query 修改 modify 新增 add 刪除 del 列印 print 1.查詢 輸入員工姓名,輸出員工資訊...
單位員工通訊錄管理系統(線性表的應用)
為某個單位建立乙個員工通訊錄管理系統,可以方便查詢每乙個員工的辦公室 手機號 及電子郵箱。其功能包括通訊錄鍊錶的建立 員工通訊資訊的查詢 修改 插入與刪除 以及整個通訊錄表的輸出。實現提示 可以採用單鏈表的儲存結構,如可定義如下的儲存結構 typedef struct datatype 通訊錄單鏈表...
通訊錄管理系統
include include include using namespace std const char ptxt e phone.txt const char pctxt e phonecard.txt 將文字位置設為常變數 class phonecard 手機卡類 void set stri...