川川在上次的代碼有了一些改進,這是基于上一次的代碼改進而來,需要建立一個addressbook.txt文檔,别的沒啥,代碼解析我寫在注釋了,還有别的問題可以留言或者加我扣扣群吧:970353786(哈哈,别加我扣扣了,人太多了)
#登入引導界面
txt =\
'''
1. 添加學生資訊
2. 删除學生資訊
3. 查詢學生資訊
4. 退出系統
'''
#檢測路徑下是否存在通訊錄檔案,如果沒有則建立檔案
import os.path
is_exist = os.path.isfile('addressbook.txt')
#添加聯系人
def add():
print('添加學生資訊') #引導添加
print('姓名: ', end = '')
Name = input() #輸入名字
print('性别: ', end = '')
Sex = input() #輸入性别
print('學号: ', end = '')
studentNumber = input() #輸入學号
#将通訊錄追加到檔案末端
Contacts_file = open('addressbook.txt','a')
Contacts_file.write(Name+'\t\t\t'+Sex+'\t\t\t'+studentNumber+'\n') #在檔案中以名字,性别,學号格式排列,最後一個學号就直接換行準備下一個
Contacts_file.close() #檔案寫好後就關閉
print("添加資訊成功,已經儲存在文檔,請前去檢視"+'\n')
#删除通訊錄中的資訊
def delete():
print('請輸入你要删除的學生名字: ', end = '')
name = input() #輸入需要删除的學生名字
Contacts_file = open('addressbook.txt', 'r') #打開文檔
Contacts_list = []
#将通訊錄緩存到清單内,遇到需要删除的通訊錄條目則跳過
for line in Contacts_file.readlines():
if line.find(name) != -1:
continue
Contacts_list.append(line)
#将通訊錄清空,将緩存在清單中的通訊錄資訊加載進檔案内
Contacts_file = open('addressbook.txt', 'w')
for i in range(0, len(Contacts_list)):
Contacts_file.write(Contacts_list[i])
Contacts_file.close()
print("該學生資訊已經删除,具體可以對照文檔檢視"+'\n')
#搜尋通訊錄
def search():
print('請輸入你要查詢的人的名字: ',end = '')
Search_name = input()
Contacts_file = open('addressbook.txt','r') #打開通訊錄文檔
for line in Contacts_file.readlines():
String = line
find = String.find(Search_name)
if find !=-1 :
print("此人資訊為:")
print("姓名:"+'\t\t'+'性别:'+'\t\t'+'學号:')
print(line)
break
#若搜尋不到,傳回Not Found!
if find == -1:
print('此人資訊不存在')
Contacts_file.close()
class InputError(Exception):
'''當輸出有誤時,抛出此異常'''
#自定義異常類型的初始化
def __init__(self, value):
self.value = value
# 傳回異常類對象的說明資訊
def __str__(self):
return ("{} is invalid input".format(repr(self.value)))
#主函數
def main():
while True: # 如果為真
# try:
print("歡迎光臨學生管理系統,請選擇功能對應的數字執行操作:") # 引導選擇
print(txt) # 列印引導界面
choice = int(input()) # 輸入序号選擇
try:
if type(choice) != int:
raise main()
except Exception as e:
print("輸入數字類型錯誤,請重新輸入功能對應的數字")
# 輸入錯誤序号則重新開機程式,異常處理
if choice not in [1, 2, 3, 4]: # 不在這4個序号裡
print('錯誤選擇') # 列印錯誤選擇
main() # 重新開始
break
# 輸入正确序号執行相應程式
elif choice == 1: # 選擇序号為1
add() # 添加聯系人函數啟動
elif choice == 2: # 選擇序号為2
delete() # 删除聯系人函數啟動
elif choice == 3: # 選擇序号為3
search() # 查詢聯系人函數啟動
elif choice == 4: # 如果選擇序号為5
break # 結束執行
if __name__ == '__main__':
main()
運作效果: