針對(duì)傳統(tǒng)的學(xué)生信息管理方式,效率低下,不易存儲(chǔ),和數(shù)字化等問(wèn)題,開(kāi)發(fā)基于 Python 的學(xué)生信息管理系統(tǒng),用于管理學(xué)生的個(gè)人信息和學(xué)習(xí)記錄。它可以幫助教師和管理員更有效地管理學(xué)生信息,如學(xué)生基本信息、成績(jī)、課程安排、考試記錄等。同時(shí),信息化、數(shù)字化的管理方法符合高校建設(shè)數(shù)字校園的宗旨,有利于促進(jìn)信息的保存和共享。而Python相對(duì)于其他語(yǔ)言具有簡(jiǎn)單易學(xué),易維護(hù)等特點(diǎn),在系統(tǒng)開(kāi)發(fā)領(lǐng)域應(yīng)用十分廣泛。本系統(tǒng)是由Python語(yǔ)言進(jìn)行開(kāi)發(fā)的一套簡(jiǎn)易學(xué)生信息管理系統(tǒng),功能齊全,操作簡(jiǎn)便,實(shí)用性高。
1系統(tǒng)方案設(shè)計(jì)
學(xué)生信息管理系統(tǒng)功能如下表所示。該系統(tǒng)包括學(xué)生信息輸入、信息查找、信息的刪除與修改、信息展示等一系列功能。最終使用Pyinstaller將程序打包為exe程序,方便在沒(méi)有部署python環(huán)境的計(jì)算機(jī)上正常使用我們的管理系統(tǒng)。

2功能設(shè)計(jì)
我們將每一個(gè)所有功能進(jìn)行拆分,將每一種功能單獨(dú)定義為一個(gè)函數(shù),然后將主函數(shù)main在系統(tǒng)中循環(huán)調(diào)用,以實(shí)現(xiàn)選擇功能的作用。
Menu函數(shù)主要用來(lái)輸出管理系統(tǒng)的可視化菜單頁(yè)面,配合main函數(shù)來(lái)完成功能的選擇。
Insert函數(shù)用來(lái)實(shí)現(xiàn)輸入學(xué)生信息的功能。依次輸入學(xué)號(hào)姓名和語(yǔ)數(shù)英成績(jī),并且在輸入成績(jī)時(shí),因?yàn)槭莍nt型,所以使用了try和except,以保證正確輸入不會(huì)出錯(cuò)。將輸入的信息儲(chǔ)存為一個(gè)字典,并最終保存在一個(gè)名為student.txt的文件中。為了方便使用,在函數(shù)的末尾加上了循環(huán)使用的功能,可以連續(xù)輸入多名學(xué)生信息。
Search函數(shù)主要用來(lái)查找學(xué)生信息。該函數(shù)首先會(huì)查找是否存在學(xué)生信息文件“student.txt” 如果存在會(huì)以學(xué)號(hào)為索引,查找文件中所儲(chǔ)存的信息,并調(diào)雍show_student函數(shù)將其以特定格式輸出。刪除函數(shù)delete、修改函數(shù)edit基本也是這個(gè)邏輯。
3編程實(shí)現(xiàn)與調(diào)試
import os.path
filename = 'student.txt'
def menu():
print('======學(xué)生信息管理系統(tǒng)======')
print('1.輸入學(xué)生信息')
print('2.查找信息')
print('3.刪除信息')
print('4.修改信息')
print('5.顯示出所有信息')
print('0.退出系統(tǒng)')
print('=========================')
def main():
while True:
menu()
selection = int(input('請(qǐng)選擇'))
if selection in [0, 1, 2, 3, 4, 5]:
if selection == 0:
ans = input('是否要退出?y/n')
if ans == 'y' or ans == 'Y':
print('感謝使用!!')
break
else:
continue
elif selection == 1:
insert()
elif selection == 2:
search()
elif selection == 3:
delete()
elif selection == 4:
edit()
elif selection == 5:
display()
else:
print('選擇錯(cuò)誤')
# noinspection PyBroadException
def insert():
student_list = []
while True:
stu_id = input('請(qǐng)輸入學(xué)號(hào):')
if not stu_id:
break
name = input('請(qǐng)輸入姓名:')
if not name:
break
try:
english = int(input('請(qǐng)輸入英語(yǔ)成績(jī)'))
chinese = int(input('請(qǐng)輸入語(yǔ)文成績(jī)'))
math = int(input('請(qǐng)輸入數(shù)學(xué)成績(jī)'))
except:
print('錯(cuò)誤的成績(jī)(不是整數(shù))')
continue
student = {'stu_id': stu_id, 'name': name, 'english': english, 'chinese': chinese, 'math': math}
student_list.append(student)
ans = input('是否繼續(xù)添加y/n\n')
if ans == 'y' or ans == 'Y':
continue
else:
break
save(student_list)
print('輸入完畢!')
# noinspection PyBroadException
def save(lst):
try:
stu_txt = open(filename, 'a', encoding='utf-8')
except:
stu_txt = open(filename, 'w', encoding='utf-8')
for item in lst:
stu_txt.write(str(item) + '\n')
stu_txt.close()
def search():
stu_query = []
while True:
stu_id = ''
if os.path.exists(filename):
id = input('請(qǐng)輸入學(xué)生學(xué)號(hào):')
with open(filename, 'r', encoding='utf-8') as rfile:
student = rfile.readlines()
for item in student:
d = dict(eval(item))
if id != '':
if d['stu_id'] == id:
stu_query.append(d)
show_student(stu_query)
stu_query.clear()
ans = input('是否繼續(xù)查詢?y/n')
if ans == 'y':
continue
else:
break
else:
print('暫無(wú)學(xué)生信息')
return
def show_student(lst):
if len(lst) == 0:
print('沒(méi)有查詢到數(shù)據(jù)!')
return
format_title = '{:^6}\t{:^12}\t{:^8}\t{:^9}\t{:^5}\t{:^2}\t'
print(format_title.format('ID', '姓名', '英語(yǔ)成績(jī)', '語(yǔ)文成績(jī)', '數(shù)學(xué)成績(jī)', '總成績(jī)'))
format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^15}\t{:^6}\t'
for item in lst:
print(format_data.format(item.get('stu_id'),
item.get('name'),
item.get('english'),
item.get('chinese'),
item.get('math'),
int(item.get('english')) + int(item.get('chinese')) + int(item.get('math'))))
def delete():
while True:
stu_id = input('請(qǐng)輸入要?jiǎng)h除的學(xué)號(hào):')
if stu_id != '':
if os.path.exists(filename):
with open(filename, 'r', encoding='utf-8') as file:
stu_old = file.readlines()
else:
stu_old = []
flag = False
if stu_old:
with open(filename, 'w', encoding='utf-8') as wfile:
d = {}
for item in stu_old:
d = dict(eval(item))
if d['stu_id'] != stu_id:
wfile.write(str(d) + '\n')
else:
flag = True
if flag:
print(f'id為{stu_id}的學(xué)生信息已經(jīng)被刪除')
else:
print(f'沒(méi)有找到{stu_id}的學(xué)生信息')
else:
print('無(wú)學(xué)生信息')
break
display()
ans = input('是否繼續(xù)刪除?y/n\n')
if ans == 'y' or ans == 'Y':
continue
else:
break
def edit():
display()
if os.path.exists(filename):
with open(filename, 'r', encoding='utf-8') as rfile:
student_old = rfile.readlines()
else:
return
student_id = input('請(qǐng)輸入要修改的學(xué)生學(xué)號(hào):')
with open(filename, 'w', encoding='utf-8') as wfile:
for item in student_old:
d = dict(eval(item))
if d['stu_id'] == student_id:
print('已經(jīng)找到學(xué)生信息,請(qǐng)修改:')
while True:
try:
d['name'] = input('請(qǐng)輸入姓名')
d['english'] = input('請(qǐng)輸入英語(yǔ)成績(jī)')
d['chinese'] = input('請(qǐng)輸入語(yǔ)文成績(jī)')
d['math'] = input('請(qǐng)輸入數(shù)學(xué)成績(jī)')
except:
print('輸入有誤,重新輸入')
else:
break
wfile.write(str(d) + '\n')
print('修改成功')
else:
wfile.write(str(d) + '\n')
ans = input('是否繼續(xù)修改?y/n')
if ans == 'y':
edit()
def display():
student_list=[]
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8') as rfile:
students=rfile.readlines()
for item in students:
student_list.append(eval(item))
if student_list:
show_student(student_list)
else:
print('沒(méi)有學(xué)生信息')
if 1 == 1:
main()
4結(jié)果分析
1打開(kāi)程序

2選擇輸入學(xué)生信息功能
依次輸入學(xué)生信息完畢之后返回主菜單再次進(jìn)行功能選擇。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-754642.html

3查找信息

4刪除信息

5顯示出所有信息

6最終會(huì)在同目錄生成一個(gè)student.txt文件儲(chǔ)存信息

經(jīng)過(guò)以上的測(cè)試結(jié)果表明,本系統(tǒng)運(yùn)行情況比較良好,設(shè)計(jì)功能都能實(shí)現(xiàn),系統(tǒng)反應(yīng)速度較快,用戶使用也相對(duì)簡(jiǎn)便,達(dá)到了程序設(shè)計(jì)前所設(shè)定的要求。總體而言,是一款比較成功的系統(tǒng)程序。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-754642.html
到了這里,關(guān)于基于python的簡(jiǎn)單學(xué)生信息管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!