學生管理系統
- 一、程式功能(Function)
- 1、功能概述
- 2、思維導圖
- 二、學生物體(Entity)
- 1、思維導圖
- 2、關系模式
- 3、學生表
- 4、操作問題
- 三、構造系統框架
- 1、創建主程式
- 2、建立主選單
- 3、建立二級選單
- 4、利用Python將程式鏈接到學生資訊檔案
- (1)打開、關閉檔案,并列印內容
- (2)將(1)運用到系統中
- 四、對學生管理系統中的資料進行操作
- 1、增加學生記錄
- 2、查詢學生記錄
- (1)查詢全部學生記錄
- (2)按學號查詢學生記錄
- (3)按姓名查詢學生記錄
- 3、修改學生資訊
- 4、洗掉學生資訊
- 五、完整代碼
- 六、總結
- 1、關于該系統現存在的問題
- 2、學習總結
一、程式功能(Function)
1、功能概述
利用Python完成一個學生資訊的增刪改查程式,主要涉及知識點:程式控制結構(實作可進可退的多級選單)、檔案讀寫操作(學生資訊要保存到磁盤上的檔案里)、利用函式實作功能模塊化,
2、思維導圖
- 百度腦圖
https://naotu.baidu.com/
創建自己的思維導圖,整理思緒,更有利于創建專案,

二、學生物體(Entity)
1、思維導圖

2、關系模式
- 學生(學號, 姓名, 性別, 年齡, 班級, 專業, 系部, 電話)
3、學生表
- 行——記錄——元組
- 列——欄位——屬性

- 先將學生資訊保存到文本檔案里,用空格來隔開每個欄位,

2021001 李曉紅 女 19 2021級軟體4班 軟體技術 人工智能與大資料學院 15945456780
2021002 王曉剛 男 18 2021級軟體4班 軟體技術 人工智能與大資料學院 13890904567
2021003 唐雨涵 女 19 2021級軟體4班 軟體技術 人工智能與大資料學院 18878789023
2021101 張三豐 男 18 2021級大資料1班 大資料技術 人工智能與大資料學院 15945456780
2021102 肖雨林 男 18 2021級大資料1班 大資料技術 人工智能與大資料學院 18890904560
2021103 鄭小翠 女 19 2021級大資料1班 大資料技術 人工智能與大資料學院 15890904567
4、操作問題
- 這里在保存檔案的時候需要將編碼改為ANSI,不然將會出現錯誤,

三、構造系統框架
1、創建主程式

- 效果圖

- 代碼
# 主程式
while True:
print('用戶登錄')
print('==========')
print('1.登錄')
print('2.退出')
print('==========')
mc1 = int(input('輸入選單號: '))
if mc1 == 1:
print('成功登入!')
elif mc1 == 2:
print('\n謝謝使用本程式\n')
break
2、建立主選單
- 運用def定義函式定義學生管理系統主選單,并呼叫,運行程式,查看結果,

3、建立二級選單
-
運用def定義函式創建學生管理系統二級選單并呼叫,

-
運行程式,查看結果

4、利用Python將程式鏈接到學生資訊檔案
(1)打開、關閉檔案,并列印內容
- 通過open()函式打開s_list.txt學生資訊檔案,并進行列印,
- f.close()列印學生資訊后將檔案關閉

- 運行程式,查看結果,

- 輸出資料看似排列整齊,但當列寬改變時,資料位置也會跟著改變,
(2)將(1)運用到系統中
- 利用def定義函式,將(1)中的內容定義到學生管理系統中,便于隨時呼叫,
- 將(1)中函式定義為get_all_students()函式,方便之后呼叫,
- return()函式回傳所有學生資訊,即其上一組函式所得到的結果,

四、對學生管理系統中的資料進行操作
1、增加學生記錄
- 定義add_student()函式,并呼叫,

- 運行查看結果,并錄入新的資訊,

2、查詢學生記錄
(1)查詢全部學生記錄
- 進行測驗

- 運行程式查看結果

- 測驗成功!將利用id查詢學生資訊的代碼利用def定義,并應用到學生管理系統中,

- 定義disaplay_all_students()函式

- 呼叫disaplay_all_students()函式
- 運行程式,查看結果

- 測驗成功,
(2)按學號查詢學生記錄
- 進行測驗

- 運行程式,查看結果

- 發現添加記錄成功了!將利用id查詢學生資訊的代碼利用def定義,并應用到學生管理系統中,

- 運行程式,查看結果,

- 程式運行成功!
(3)按姓名查詢學生記錄
- 進行測驗

- 運行程式,查看結果

- 測驗成功!
- 運用到學生管理系統中,
3、修改學生資訊
- 進行測驗

- 運行程式,查看結果

- 測驗成功,進行下一步,將該段程式定義為學生管理系統中的modify_student()函式,

4、洗掉學生資訊
- 進行測驗

- 運行程式,查看結果

- 測驗成功
- 定義函式,放入學生管理系統中

- 學生管理系統成功完成,
- 現在還是一個簡陋的一個程式,還有許多需要改進的地方,需要慢慢改進,如果有好的建議,評論區見,謝謝!
五、完整代碼
def get_all_students():
students = []
f = open('s_list.txt')
for line in f:
line = line.replace('\n', '')
student = line.split(' ')
students.append(student)
f.close()
return students
def add_student(): # 添加學生資訊
students = get_all_students()
id = input('學號: ')
name = input('姓名: ')
sex = input('性別: ')
age = input('年齡: ')
grade_class = input('班級: ')
major = input('專業: ')
college = input('學院: ')
phone_number = input('電話號碼: ')
students.append([id, name, sex, age, grade_class, major, college, phone_number])
f = open('s_list.txt', 'w')
for i in range(len(students)):
student = ' '.join(students[i]) + '\n'
f.write(student)
f.close()
print('學生記錄添加成功!')
def disaplay_all_students(): # 查詢所有學生資訊
students = get_all_students()
for i in range(len(students)):
for j in range(len(students[i])):
print(students[i][j], end=' ')
print()
def id_disaplay_student(): # 以學號查詢學生資訊
id = input('學號: ')
found = False
students = get_all_students()
for i in range(len(students)):
if (students[i][0] == id):
found =True
for j in range(len(students[i])):
print(students[i][j], end=' ')
break
if not found:
print(f'學生資訊中沒有學號為{id}的學生!')
def name_disaply_student(): # 以姓名查詢學生資訊
name = input('姓名: ')
students = get_all_students()
found = False
for i in range(len(students)):
if (students[i][1] == name):
found = True
for j in range(len(students[i])):
print(students[i][j], end=' ')
break
if not found:
print(f'學生資訊中沒有姓名為{name}的學生!')
def query_student(): # 查詢學生記錄
while True:
print('\n查詢學生記錄\n')
print('=================')
print('1.按學號查詢學生記錄')
print('2.按姓名查詢學生記錄')
print('3.查詢全部學生記錄')
print('4.回傳上級選單')
print('=================')
mc3 = int(input('輸入選單號:'))
if mc3 == 1:
id_disaplay_student()
elif mc3 == 2:
name_disaply_student()
elif mc3 == 3:
disaplay_all_students()
else:
break
def modify_student(): # 修改學生資訊
students = get_all_students()
id = input('需要修改資訊的學生的學號: ')
new_name = input('姓名: ')
new_sex = input('性別: ')
new_age = input('年齡: ')
new_grade_class = input('班級: ')
new_major = input('專業: ')
new_college = input('學院: ')
new_phone_number = input('電話號碼: ')
found = False
for i in range(len(students)):
if (students[i][0] == id):
found = True
students[i][1] = new_name
students[i][2] = new_sex
students[i][3] = new_age
students[i][4] = new_grade_class
students[i][5] = new_major
students[i][6] = new_college
students[i][7] = new_phone_number
print('修改成功!')
for j in range(len(students[i])):
print(students[i][j], end=' ')
break
if not found:
print(f'學生資訊中沒有學號為{id}的學生!')
f = open('s_list.txt', 'w')
for i in range(len(students)):
student = ' '.join(students[i]) + '\n'
f.write(student)
f.close()
def delete_student():
students = get_all_students()
id = input('輸入要洗掉資訊的學生的學號:')
found = False
for i in range(len(students)):
if (students[i][0] == id):
found = True
break
if not found:
print(f'學生資訊中沒有學號為{id}的學生!')
else:
del students[i]
print(f'學號為{id}的資訊已成功洗掉!')
f = open('s_list.txt', 'w')
for i in range(len(students)):
student = ' '.join(students[i]) + '\n'
f.write(student)
f.close()
def login():
username = input('輸入用戶名: ')
password = input('輸入密碼: ')
if username == 'zl' and password == '202111':
while True:
print('\n學生資訊管理\n')
print('===========')
print('1. 添加學生記錄')
print('2. 查詢學生記錄')
print('3. 修改學生記錄')
print('4. 洗掉學生記錄')
print('5. 回傳上級選單')
print('===========')
mc2 = int(input('輸入選單號: '))
if mc2 == 1:
add_student()
elif mc2 == 2:
query_student()
elif mc2 == 3:
modify_student()
elif mc2 == 4:
delete_student()
else:
break
else:
print('\n用戶名或密碼錯誤,請重新登錄\n')
# 主程式
while True:
print('用戶登錄')
print('==========')
print('1.登錄')
print('2.退出')
print('==========')
mc1 = int(input('輸入選單號: '))
if mc1 == 1:
login()
elif mc1 == 2:
print('\n謝謝使用本程式\n')
break
六、總結
1、關于該系統現存在的問題
- 1.關于登錄界面,當輸入字符時會報錯,這個問題可以將代碼改為:
while True:
print('用戶登錄')
print('==========')
print('1.登錄')
print('2.退出')
print('==========')
mc1 = input('輸入選單號: ')
if mc1 == str(1):
login()
elif mc1 == str(2):
print('\n謝謝使用本程式\n')
break
elif mc1 != 1 or mc1 != 2:
print('請輸入正確的選單號!')
- 2、修改學生記錄還可以按照其他欄位的資訊修改,也可以單獨修改一個欄位的資訊,
…… - 該系統現在還是一個簡陋的程式,還有許多需要改進的地方,需要慢慢改進,如果有好的建議,評論區見,謝謝!
2、學習總結
- 書寫程式時需要有一個好的思路,這樣有利于對整個系統結構結構框架進行構建,
- 在寫程式時,為防止出錯找不到原因,可以先打開另一個頁面,進行代碼測驗,書寫正確后在放入主程式,這樣可以高效避免錯誤發生,
- 書寫程式需要有一個清晰的頭腦,所以一定要注意休息,
- 學習python不是一天兩天的事,要懂得《勸學》中的“鍥而舍之,朽木不折;鍥而不舍,金石可鏤”
- 注意:Road in the foot!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/396120.html
標籤:其他
