線性表的應用通訊錄管理系統的設計與實現

2022-11-01 05:39:02 字數 3638 閱讀 6847

浙江大學城市學院實驗報告

課程名稱資料結構

實驗專案名稱實驗三線性表的應用---通訊錄管理系統的設計與實現

實驗成績指導老師(簽名日期

一. 實驗目的和要求

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...