程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python答優大作業[名片管理系統(完整代碼)]

編輯:Python

文章目錄

  • 前言
  • 一、要求描述
  • 二、函數功能及代碼描述
  • 三、主函數
  • 四、完整代碼
  • 總結


前言

        這幾天在學javaweb沒有什麼好的案例,這是我一年前python大作業寫的答優代碼,勉強拿了90分,答辯和報告書寫的不怎麼好。老師這方面扣分比較嚴重。這裡我發上來給初學者觀看,也是一些基礎的語法,沒有用到數據庫之類的。只是按照作業要求完成了對名片管理系統的增刪改查操作。不過在此基礎上我添加了一些新的功能,比如添加加載進度條、還有以文件的形式保存數據,等。下面我一個功能一個功能的講述一下。這幾天沒素材發,翻出來以前的代碼順便看看,回顧一下知識點,順便發上來分享給大家。


一、要求描述

通過本項目的學習,學員可以了彩項目開發的流程,掌握項目需求分析、設計與功能的代碼實現。提高同學們獨立分析需求與功能實現的能力。

項目知識點:變量、流程控制、函數、慣塊等python基中常用的知識點。使用python設計一個名片管理系統,能提供下列服務:

        1.程序啟動,顯示名片曾理系統歡迎界面,並顯示功能菜單。

        2.用戶用數字選擇不同的功能。

        3.根據功能選擇,執行不同的動能。

        4.用戶名片需要記錄用戶的姓名、電話、QQ、郵件。

        5.如果查詢到指定的名片,用戶可以選擇修改或者刪除名片。

二、函數功能及代碼描述

1.函數jiemian()進度條制作

首先是加載頁面,引入time,time.sleep每0.5秒執行一次循環。\r是光標回到起始位置,for循環每次*多.少的趨勢執行,就形成了一種進度條的樣式。

import time
def jeimian():#加載頁面
print("正在加載名片管理系統。。。".center(50,"="))
m=10
for i in range(m+1):
a="*"*i
b="."*(m-i)
c=i/m*100
print("\r[{}>{}]{:3.0f}%".format(a,b,c),end="")
time.sleep(0.5)
print("")
print("加載成功".center(50,"="))
print("")

2. 函數function()功能頁面描述

這個就是要封裝起來放到主頁面main的while循環裡,每次執行完功能都會重新展示一遍,交互性好些。當然,在執行while循環前也得顯示一遍讓用戶進行選擇相應的操作。

def function():#功能頁面
print("您已進入名片管理系統".center(50,"="))
print("【1】新建名片")
print("【2】查詢名片")
print("【3】刪除名片")
print("【4】修改名片")
print("【5】顯示全部名片")
print("【6】保存名片數據")
print("【7】退出系統")

3.函數add_B_card()增加名片信息功能

這裡也是創建了一個集合,用來放用戶信息的鍵值對,把用戶輸入的信息保存起來,存放一個用戶的信息。然後b_card_lt=[]就是用來存放每一個用戶的信息。

def add_B_card():#新建名片
print("您已進入新建名片功能".center(50,"="))
b_card_zd={}
add_name=input("請輸入新建用戶的姓名:")
add_phone=input("請輸入新建用戶的電話:")
add_qq=input("請輸入新建用戶的qq:")
add_mail=input("請輸入新建用戶的郵件:")
add_address=input("請輸入新建用戶的地址:")
b_card_zd["name"]=add_name
b_card_zd["phone"]=add_phone
b_card_zd["qq"]=add_qq
b_card_zd["mail"]=add_mail
b_card_zd["address"]=add_address
b_card_lt.append(b_card_zd)
print("用戶名片添加成功!!!".center(50,"="))
print("")

4.函數find_B_card()查詢名片信息功能

用戶輸入完查詢的用戶名字後,用for循環進行查找,你沒有找到的情況就是sum的值等於了存放用戶信息的長度。

def find_B_card():#查詢名片
print("您已進入查詢名片功能".center(50, "="))
print("請輸入您要查詢用戶名片的姓名:")
find_name=input()
len1=len(b_card_lt)
sum=0
for i in b_card_lt:
sum+=1
if i["name"]==find_name:
sum-=1
print("查詢結果".center(50,"="))
print(i)
break
if sum==len1:
print("查詢結果".center(50,"="))
print("用戶名片裡沒有您所查詢的用戶!".center(50,"*"))
print("")

 5.函數delete_B_card()刪除名片信息功能

 這個也是先查找,找到了才能進行刪除。用remove方法來刪除信息。

def delete_B_card():#刪除名片
print("您已進入刪除名片功能".center(50, "="))
print("請輸入您要刪除用戶名片的姓名:")
delete_name=input()
len2 = len(b_card_lt)
sum = 0
for i in b_card_lt:
sum += 1
if i["name"] == delete_name:
sum -= 1
print("刪除結果".center(50, "="))
b_card_lt.remove(i)
print("刪除成功!".center(50,"="))
break
if sum == len2:
print("刪除結果".center(50, "="))
print("用戶名片裡沒有您要刪除的用戶!".center(50, "*"))
print("")

6.函數change_B_card()修改名片信息

這個也是先查找,找到的話讓用戶重新輸入修改後的值,然後重新賦值給要修改的用戶信息就可以。

def change_B_card():#修改名片
print("您已進入修改名片功能".center(50, "="))
print("請輸入您要修改用戶名片的姓名:")
change_neme=input()
len3=len(b_card_lt)
sum=0
for i in b_card_lt:
sum+=1
if i["name"]==change_neme:
sum-=1
new_name=input("請重新輸入用戶的姓名:")
new_phone=input("請重新輸入用戶的電話:")
new_qq = input("請重新輸入用戶的qq:")
new_mail = input("請重新輸入用戶的郵件:")
new_address=input("請重新輸入用戶的地址:")
i["name"]=new_name
i["phone"]=new_phone
i["qq"]=new_qq
i["mail"]=new_mail
i["address"]=new_address
print("修改成功!".center(50,"="))
break
if sum==len3:
print("修改結果".center(50,"="))
print("用戶名片裡沒有您要修改的用戶!".center(50, "*"))
print("")

7.函數show_B_card()顯示所有名片

這個就是一個查詢,前面的看懂這個就非常簡單了。

def show_B_card(): # 顯示名片
print("您已進入顯示名片功能".center(50, "="))
print("所有名片如下表所示".center(50,"="))
k=1
if len(b_card_lt)!=0:
for i in b_card_lt:
print("第{}名用戶的信息:{}".format(k, i))
k += 1
print("所有名片顯示完成".center(50, "="))
else:
print("該名片管理系統無用戶名片!".center(50,"="))
print("")

8. 函數save_to_file()保存數據

 創建了一個文本文件,將數據用write()方法寫進去。

def save_to_file():#保存數據
file=open("backup.txt","w")
file.write(str(b_card_lt))
file.close()
print("該名片數據已保存成功".center(50,"="))
print("")

9.函數recover_data()恢復數據

這個就是如果下次運行的話有上次操作的數據,數據會保護下來,運行時先加載數據。

def recover_data():#恢復數據
global b_card_lt
file=open("backup.txt")
content=file.read()
b_card_lt=eval(content)
file.close()

三、主函數

1.首先調用recover_data()、jeimian()函數,就是上述的恢復數據和進度條。

2.然後進行循環調用功能頁面函數。

3.讓用戶選擇要操作的功能

4.跳轉到對應的函數去執行

5.最後進行了用戶退出的判斷與交互效果。

import card_system
b_card_lt=[]
card_system.recover_data()
card_system.jeimian()
print("歡迎使用【名片管理系統】V1.0".center(50,"="))
while True:
card_system.function()
choice = input("請輸入數字1~7表示你要進行的操作:")
if choice in ['1', '2', '3', '4', '5', '6', '7']:
if choice == '1':
card_system.add_B_card()
elif choice == '2':
card_system.find_B_card()
elif choice == '3':
card_system.delete_B_card()
elif choice == '4':
card_system.change_B_card()
elif choice == '5':
card_system.show_B_card()
elif choice == '6':
card_system.save_to_file()
elif choice == '7':
print("您確定要退出名片管理系統?".center(50, "="))
choice1 = input("請輸入yes/no:")
if choice1 in ['yes', 'no']:
if choice1 == 'yes':
print("感謝使用名片管理系統,See you!".center(50, "="))
break
else:
print("您的輸入不合法,請重新輸入".center(50, "*"))
else:
print("您的輸入不合法,請重新輸入".center(50, "*"))

四、完整代碼

card_system.py代碼

import time
def jeimian():#加載頁面
print("正在加載名片管理系統。。。".center(50,"="))
m=10
for i in range(m+1):
a="*"*i
b="."*(m-i)
c=i/m*100
print("\r[{}>{}]{:3.0f}%".format(a,b,c),end="")
time.sleep(0.5)
print("")
print("加載成功".center(50,"="))
print("")
def function():#功能頁面
print("您已進入名片管理系統".center(50,"="))
print("【1】新建名片")
print("【2】查詢名片")
print("【3】刪除名片")
print("【4】修改名片")
print("【5】顯示全部名片")
print("【6】保存名片數據")
print("【7】退出系統")
def add_B_card():#新建名片
print("您已進入新建名片功能".center(50,"="))
b_card_zd={}
add_name=input("請輸入新建用戶的姓名:")
add_phone=input("請輸入新建用戶的電話:")
add_qq=input("請輸入新建用戶的qq:")
add_mail=input("請輸入新建用戶的郵件:")
add_address=input("請輸入新建用戶的地址:")
b_card_zd["name"]=add_name
b_card_zd["phone"]=add_phone
b_card_zd["qq"]=add_qq
b_card_zd["mail"]=add_mail
b_card_zd["address"]=add_address
b_card_lt.append(b_card_zd)
print("用戶名片添加成功!!!".center(50,"="))
print("")
def find_B_card():#查詢名片
print("您已進入查詢名片功能".center(50, "="))
print("請輸入您要查詢用戶名片的姓名:")
find_name=input()
len1=len(b_card_lt)
sum=0
for i in b_card_lt:
sum+=1
if i["name"]==find_name:
sum-=1
print("查詢結果".center(50,"="))
print(i)
break
if sum==len1:
print("查詢結果".center(50,"="))
print("用戶名片裡沒有您所查詢的用戶!".center(50,"*"))
print("")
def delete_B_card():#刪除名片
print("您已進入刪除名片功能".center(50, "="))
print("請輸入您要刪除用戶名片的姓名:")
delete_name=input()
len2 = len(b_card_lt)
sum = 0
for i in b_card_lt:
sum += 1
if i["name"] == delete_name:
sum -= 1
print("刪除結果".center(50, "="))
b_card_lt.remove(i)
print("刪除成功!".center(50,"="))
break
if sum == len2:
print("刪除結果".center(50, "="))
print("用戶名片裡沒有您要刪除的用戶!".center(50, "*"))
print("")
def change_B_card():#修改名片
print("您已進入修改名片功能".center(50, "="))
print("請輸入您要修改用戶名片的姓名:")
change_neme=input()
len3=len(b_card_lt)
sum=0
for i in b_card_lt:
sum+=1
if i["name"]==change_neme:
sum-=1
new_name=input("請重新輸入用戶的姓名:")
new_phone=input("請重新輸入用戶的電話:")
new_qq = input("請重新輸入用戶的qq:")
new_mail = input("請重新輸入用戶的郵件:")
new_address=input("請重新輸入用戶的地址:")
i["name"]=new_name
i["phone"]=new_phone
i["qq"]=new_qq
i["mail"]=new_mail
i["address"]=new_address
print("修改成功!".center(50,"="))
break
if sum==len3:
print("修改結果".center(50,"="))
print("用戶名片裡沒有您要修改的用戶!".center(50, "*"))
print("")
def show_B_card(): # 顯示名片
print("您已進入顯示名片功能".center(50, "="))
print("所有名片如下表所示".center(50,"="))
k=1
if len(b_card_lt)!=0:
for i in b_card_lt:
print("第{}名用戶的信息:{}".format(k, i))
k += 1
print("所有名片顯示完成".center(50, "="))
else:
print("該名片管理系統無用戶名片!".center(50,"="))
print("")
def save_to_file():#保存數據
file=open("backup.txt","w")
file.write(str(b_card_lt))
file.close()
print("該名片數據已保存成功".center(50,"="))
print("")
def recover_data():#恢復數據
global b_card_lt
file=open("backup.txt")
content=file.read()
b_card_lt=eval(content)
file.close()

main函數.py代碼 

import card_system
b_card_lt=[]
card_system.recover_data()
card_system.jeimian()
print("歡迎使用【名片管理系統】V1.0".center(50,"="))
while True:
card_system.function()
choice = input("請輸入數字1~7表示你要進行的操作:")
if choice in ['1', '2', '3', '4', '5', '6', '7']:
if choice == '1':
card_system.add_B_card()
elif choice == '2':
card_system.find_B_card()
elif choice == '3':
card_system.delete_B_card()
elif choice == '4':
card_system.change_B_card()
elif choice == '5':
card_system.show_B_card()
elif choice == '6':
card_system.save_to_file()
elif choice == '7':
print("您確定要退出名片管理系統?".center(50, "="))
choice1 = input("請輸入yes/no:")
if choice1 in ['yes', 'no']:
if choice1 == 'yes':
print("感謝使用名片管理系統,See you!".center(50, "="))
break
else:
print("您的輸入不合法,請重新輸入".center(50, "*"))
else:
print("您的輸入不合法,請重新輸入".center(50, "*"))

總結

這裡也是寫完了,Python語言還是比較容易理解的,所以只說了下大概思路,裡面具體的操作都是英文看的懂應該都沒有問題的。還有這裡面也是我一年前的大作業,大家如果感興趣的話可以在此基礎上添加id查找、修改等功能。這幾天在學習javaweb,等學的差不多我會做幾個案例發上來分享給大家的。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved