浙江大學城市學院實驗報告
課程名稱資料結構
實驗專案名稱實驗三線性表的應用---通訊錄管理系統的設計與實現
實驗成績指導老師(簽名日期
一. 實驗目的和要求
1、掌握線性結構資料問題的應用方法;
2、掌握線性表的順序儲存結構及鍊錶結構的綜合應用與實現;
3、了解一般資訊系統的設計方式方法;
二. 實驗內容
1、設計並實現日常生活中通訊錄的管理系統。該系統需3位同學一組,按模組分工協作完成,系統具體功能基本需求描述如下:
1 輸入資料建立通訊錄表:在系統使用前先需要建立通訊錄,可以一次輸入(或檔案匯入)多個成員的通訊錄資訊,建立通訊錄。要求此表為順序(如列表list)儲存結構。
② 檢視所有通訊錄資訊:顯示通訊錄表中所有成員的通訊錄資訊。
③ 查詢通訊錄中滿足要求的資訊:可以根據不同方式查詢,如按姓名查詢、按姓氏查詢、按編號查詢等。
④ 新增通訊錄資訊:每次可新增乙個新成員的通訊錄資訊。
⑤ 修改通訊錄資訊:修改通訊錄中已有成員的資訊。
刪除通訊錄成員:刪除通訊錄表中已有的成員,但需要把刪除的成員資訊放到另一張被刪成員表(**站)中,以便錯誤操作後允許恢復。該被刪成員表要求採用單鏈表儲存。
⑦恢復被刪成員資訊:一旦發現誤刪,則可以在被刪成員表(**站)中找到該成員,重新加入到通訊錄表中。
系統實現要求:
通訊錄表必須使用順序(列表list)儲存結構,被刪成員表(**站)必須使用單鏈表儲存結構。
②通訊錄資訊至少包括:編號、姓名、**1、**2、郵箱、......等,其他可自行設定。
2 用選單方式選擇相應功能,且各功能的有關實現通過呼叫各函式來實現。
3 給出系統資料型別的定義、儲存結構定義以及各個函式之間的呼叫關係。
④ 實驗內容中設定的功能要求必須實現,此外可自行增加合適的功能,可作為額外的實驗成績進行加分:
例如:● 通訊錄和被刪成員資料可用檔案儲存,程式執行時可從檔案讀入相應資料,程式結束時可寫入檔案儲存。
● 通訊錄分組,可自行考慮把通訊錄成員進行分組,如同學組、親戚組、同事組等。
● ……
三、實驗分工
徐慧:實驗構架設立、各個操作的定義、修改通訊錄、實驗報告填寫
鄭超:通訊錄文字的建立、通訊錄匯入、刪除通訊錄、ppt製作
鄭博思:新增通訊錄、查詢通訊錄、恢復通訊錄、ppt製作
三. **與實驗思路
實驗思路:按照老師給的**定義乙個方法,實現通訊錄的主介面的功能
def menu():
print歡迎使用通訊錄 v1.0
print1] 檔案匯入 ")
print2] 新建通訊人 ")
print3] 修改通訊人 ")
print4] 刪除通訊人 ")
print5] 顯示全部 ")
print6] 查詢通訊人 ")
print7] 恢復被刪通訊人 ")
print8] 儲存寫入檔案")
print0] 退出 ")
def menu3():
print修改通訊人
print1] 按姓名修改 ")
print2] 按**1修改 ")
print3] 按**2修改 ")
print4] 按郵件修改 ")
print5] 按編號修改 ")
print0] 返回 ")
def menu6():
print查詢通訊人
print1] 按姓名查詢 ")
print2] 按**1查詢 ")
print3] 按**2查詢 ")
print4] 按郵件查詢 ")
print5] 按編號查詢 ")
print0] 返回 ")
實驗思路:定義乙個空的字典,addresslist為通訊錄的類,data內為通訊錄的內容。
#mydic
class addresslist:
def __init__(self):
= list()
def from_file(self, buf):
for line in buf[1:]:
line = line[:-1].split(' ')
實驗思路:顯示出通訊錄的內容
def show(self):
print('姓名**1 **2 郵箱')
for line in
print(line)
實驗思路:增加通訊錄的內容
def add(self, data):
實驗思路:修改表中某個值的內容,i是第i個位置,m是第m個屬性,例如第乙個屬性是姓名,第二個屬性是**1
def change(self, method, data):
if method == 'by_name':
m = 0
elif method == 'by_tel1':
m = 1
elif method == 'by_tel2':
m = 2
elif method == 'by_email':
m = 3
elif method == 'by_index':
= data[1:]
return
for i in range(len(
if == data[m]:
= data
實驗思路:刪除表中某個值的內容,迴圈中如果某個姓名在第i個位置就把這個內容刪除
def delete(self, name):
for i in range(len(
if == name:
to_del =
return to_del
實驗思路:按照輸入的序號各代表的方式(如姓名)查詢出該聯絡人所有資訊
def search(self, method, arg):
if method == 'by_name':
m = 0
elif method == 'by_tel1':
m = 1
elif method == 'by_tel2':
m = 2
elif method == 'by_email':
m = 3
elif method == 'by_index':
return
for i in range(len(
if == arg:
return
實驗思路:讀取檔案中的通訊錄文字,儲存最終做完改動的資訊到通訊錄中
def s**e(self, file):
with open(file,'w') as f:
'姓名**1 **2 郵箱\n')
for line in
' '. join(line) + '\n')
實驗思路:構造乙個函式,初始化線性表為空表,採用單鏈表儲存的形式實現在通訊錄中元素插入、恢復等功能。
class trash:
def __init__(self):
= none
= none
實驗思路:在表中插入乙個元素
def append(self, data):
ptr = self
while != none:
ptr =
if == none:
= data
通訊錄管理系統C語言課設
瀋陽工程學院 程式設計基礎 課程設計 設計題目 通訊錄管理系統 院別資訊學院班級 學生姓名 xx 學號 2012417105 2012417103 2012417102 指導教師 職稱副教授講師 起止日期 2013年5月27日起 至 2013年6月7日止 瀋陽工程學院 課程設計任務書 課程設計題目 ...
通訊錄管理系統的設計
武漢理工大學華夏學院 課程設計 課程名稱 c語言課程設計 題目通訊錄管理系統的設計 專業班級 姓名成績 指導教師 2012年2月13日至2012年2月17日 課程設計任務書 學生姓名專業班級 指導教師工作單位 設計題目 通訊錄管理系統的設計 要求完成的主要任務 1.任務描述 我計畫編寫乙個管理通訊錄...
通訊錄系統的設計說明書
r 日11級1班11號 金伯胤1概述 3 1.1系統簡述 3 1.2軟體設計目標 3 1.3參考資料 3 1.4版本記錄 3 2術語表 3 3用例 4 3.1系統用例圖 4 3.2用例描述 5 3.2.1新增聯絡人 5 3.2.2刪除聯絡人 5 3.2.3查詢聯絡人 6 3.2.4修改聯絡人 6 4...