## 綜合應用:學生管理系統(文件版)
~~~
# 學生的信息可以使用一個字典類型
# 管理學生可以使用列表
import os
# 定義全局變量學生列表
student_list = [] # list()
print("全局變量:", id(student_list))
# 顯示功能菜單的函數
def show_menu():
print("-----學生管理系統v1.0-----")
print("1. 添加學生")
print("2. 刪除學生")
print("3. 修改學生信息")
print("4. 查詢學生信息")
print("5. 顯示所有學生信息")
print("6. 退出")
# 添加學生
def add_student():
name = input("請輸入學生的姓名:")
age = input("請輸入學生的年齡:")
sex = input("請輸入學生的性別:")
# 定義學生字典類型的變量
student_dict = {} # dict()
# 把學生的信息使用字典進行存儲
student_dict["name"] = name
student_dict["age"] = age
student_dict["sex"] = sex
# 這里可以不使用global因為列表是可變類型,可以在原有數據的基礎上進行修改,內存地址不變
# 因為列表的內存地址不變,全局變量不需要使用global
# 加上global表示內存地址要發生變化
# 把學生信息添加到學生列表中
student_list.append(student_dict)
# global student_list
# # student_list = [{'name': "李四", "age":"18", "sex":"男"}]
# student_list.append(student_dict)
# 顯示所有學生信息
def show_all_student():
# print(student_list, id(student_list))
for index, student_dict in enumerate(student_list):
# 學號和下標的關系
student_no = index + 1
print("學號:%d 姓名:%s 年齡:%s 性別:%s" % (student_no, student_dict["name"],
student_dict["age"], student_dict["sex"]))
# 刪除學生信息
def remove_student():
student_no = int(input("請輸入要刪除學生的學號:"))
# 獲取學生字典信息的下標
index = student_no - 1
if index >= 0 and index < len(student_list):
# 根據下標刪除學生信息
del student_list[index]
else:
print("請輸入正確的學號")
# 修改學生信息
def modify_student():
student_no = int(input("請輸入要修改學生的學號:"))
# 根據學號計算下標
index = student_no - 1
if index >= 0 and index < len(student_list):
# 根據下標獲取學生字典信息
student_dict = student_list[index]
name = input("請輸入您修改后的名字:")
age = input("請輸入您修改后的年齡:")
sex = input("請輸入您修改后的性別:")
student_dict["name"] = name
student_dict["age"] = age
student_dict["sex"] = sex
else:
print("請輸入正確的學號")
# 查詢學生
def search_student():
name = input("請輸入要查詢的學生姓名:")
# 遍歷學生列表信息
for index, student_dict in enumerate(student_list):
# pass # 空實現
if student_dict["name"] == name:
student_no = index + 1
# 說明找到了這個學生
print("學號:%d 姓名:%s 年齡:%s 性別:%s" % (student_no, student_dict["name"],
student_dict["age"], student_dict["sex"]))
break
else:
print("對不起,沒有找到這個學生")
# 保存學生列表數據到文件中
def save_data():
file = open("student_list.data", "w", encoding="utf-8")
# 把列表轉成字符串
student_list_str = str(student_list)
# 把列表數據寫入到文件中
file.write(student_list_str)
file.close()
# 加載文件中的數據
def load_data():
result = os.path.exists("Test")
print(result)
# 判斷文件或者文件夾是否存在
if os.path.exists("student_list.data"):
file = open("student_list.data", "r", encoding="utf-8")
# 讀取文件中的數據
file_content = file.read()
new_student_list = eval(file_content)
print(new_student_list, type(new_student_list))
# global student_list
# student_list = new_student_list
student_list.extend(new_student_list)
print("全局變量:", id(student_list))
file.close()
# 程序啟動的函數
def run():
# 加載文件中的數據
load_data()
while True:
# 顯示功能菜單
show_menu()
# 接收用戶的指令
menu_option = input("請輸入您需要的功能選項:")
if menu_option == "1":
print("添加學生")
add_student()
elif menu_option == "2":
print("刪除學生")
remove_student()
elif menu_option == "3":
print("修改學生信息")
modify_student()
elif menu_option == "4":
print("查詢學生信息")
search_student()
elif menu_option == "5":
print("顯示所有學生信息")
show_all_student()
elif menu_option == "6":
# 保存數據到文件
save_data()
print("退出")
break
# 執行程序啟動的函數
run()
~~~
- 計算機組成原理和Python基礎知識
- 計算機組成原理
- 編程語言和Python
- 開發第一個Python程序
- 注釋
- 變量以及類型
- 標識符和關鍵字
- 輸出
- 輸入
- 運算符
- 數據類型轉換
- 判斷語句和循環語句
- 判斷語句介紹
- if語句
- 比較、關系運算符
- if...else...語句格式
- if...elif...else語句格式
- if語句的嵌套
- if應用:猜拳游戲
- 循環語句介紹
- while循環
- while循環應用
- while循環的嵌套以及應用
- for循環
- break和continue
- 字符串、列表、元組、字典
- 字符串介紹
- 字符串輸出
- 字符串輸入
- 下標和切片
- 字符串常見操作
- 列表介紹
- 列表的循環遍歷
- 列表的常見操作
- 列表的嵌套
- 元組
- 字典介紹
- 字典的常見操作1
- 字典的常見操作2
- 字典的遍歷
- 集合(擴展)
- 公共方法
- 4.函數(一)
- 4.1.函數介紹
- 4.2.函數定義和調用
- 4.3.函數的文檔說明
- 4.4.函數參數(一)
- 4.5.函數返回值(一)
- 4.6.函數的嵌套調用
- 4.7.函數應用:打印圖形和數學計算
- 5.函數(二)
- 5.1.局部變量
- 5.2.全局變量
- 5.3.多函數程序的基本使用流程
- 5.4.函數返回值(二)
- 5.5.函數參數(二)
- 5.6.拆包、交換變量的值
- 5.7.引用(一)
- 5.8.可變、不可變類型
- 5.9.引用(二)
- 5.10.函數使用注意事項
- 6.強化練習
- 6.1.函數應用:學生管理系統
- 6.2.遞歸函數
- 6.3. 匿名函數
- 6.4.列表推導式
- 6.5.set、list、tuple
- 6.6.高階函數: map reduce filter
- 7.文件操作,綜合應用
- 7.1.文件操作介紹
- 7.2.文件的讀寫
- 7.3.應用1:制作文件的備份
- 7.4.文件的相關操作
- 7.5.應用:批量修改文件名
- 7.6.綜合應用:學生管理系統(文件版)
- 8.面向對象(上)
- 8.1.認識面向對象編程
- 8.2.類和對象
- 8.3.定義類
- 8.4.創建對象
- 8.5.添加和獲取對象的屬性
- 8.6.在方法內通過self獲取對象屬性
- 8.7.魔法方法 - init()
- 8.8.魔法方法 - 有參數的__init__()方法
- 8.9.魔法方法 - str()方法
- 8.10.魔法方法 - del()方法
- 8.11.實操案例 - 烤土豆
- 9.面向對象(中)
- 9.1.實操案例 - 放家具
- 9.2.繼承的概念
- 9.3.單繼承
- 9.4.多繼承
- 9.5.子類重寫父類的同名屬性和方法
- 9.6.子類調用父類同名屬性和方法
- 9.7.多層繼承
- 9.8.通過super()來調用父類的方法
- 10.面向對象(下)
- 10.1.私有屬性和私有方法
- 10.2.修改私有屬性的值
- 10.3.多態
- 10.4.類屬性和實例屬性
- 10.5.靜態方法和類方法
- 11.異常處理與模塊初識
- 11.1.異常
- 11.2.捕獲異常
- 11.3.異常的傳遞
- 11.4.拋出自定義的異常
- 11.5.獲取異常完整信息的正確姿勢
- 11.6.認識模塊
- 11.7.開發模塊
- 11.8.模塊中的__all__(未完成)
- 11.9.python中的包(未完成)
- 12.課后加餐
- 12.1.基礎應用 - 進銷存管理系統(未完成)
- 12.2.基礎應用 - 員工信息管理系統(未完成)
- 12.1.編碼規范 - PEP8編碼規范(未完成)