使用Python實(shí)現(xiàn)簡單的學(xué)生成績管理系統(tǒng)
基本功能:
- 能夠?qū)崿F(xiàn)學(xué)生成績相關(guān)信息的輸入、輸出、查找、刪除、修改等功能;(使用數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行存?。?/li>
- 輸入并存儲學(xué)生的信息:通過輸入學(xué)生的學(xué)號、姓名、和分?jǐn)?shù),然后就可以把數(shù)據(jù)保存在建立的student文件里面。
- 打印學(xué)生的所有信息:通過一個(gè)打印函數(shù)就可以把所有的信息打印在屏幕上。
- 查找學(xué)生信息:這個(gè)功能通過輸入學(xué)號,查找該學(xué)生的信息,如果有該學(xué)號就輸出該學(xué)生的信息,沒有該學(xué)號就提示輸入的學(xué)號不存在。
- 刪除學(xué)生信息:該功能是對相應(yīng)的學(xué)生進(jìn)行刪除操作,如果學(xué)生存在就查找到進(jìn)行刪除。
- 修改學(xué)生信息:這個(gè)功能首先通過查詢功能查詢出該學(xué)生是否存在,如果存在就對該學(xué)生的信息進(jìn)行修改,如果不存在則返回到主界面。
實(shí)現(xiàn)效果:
制作技巧
1.定義變量
(1)定義交互輸入變量
主要用于展示學(xué)生成績管理系統(tǒng)的操作界面。
(2)定義學(xué)生成績信息變量
主要用于學(xué)生成績信息的存取。
s_info = """ ***************************************************** 【學(xué)生成績管理系統(tǒng)】 q. 退出學(xué)生成績系統(tǒng) 1. 顯示學(xué)生成績信息 2. 新建學(xué)生成績信息 3. 查詢學(xué)生成績信息 4. 刪除學(xué)生成績信息 5. 修改學(xué)生成績信息 ******************************************************""" students=[]
2.讀取學(xué)生成績信息
主要是從TXT文件中讀取學(xué)生成績信息,并保存到學(xué)生成績變量中。
f=open("students.txt","r+") for st in f.readlines(): students.append(eval(st)) f.close()
3.循環(huán)等待操作指令并執(zhí)行
主要是循環(huán)等待輸入的學(xué)生管理系統(tǒng)操作指令,獲取到操作指令后執(zhí)行對學(xué)生成績信息的顯示、新建、查詢、刪除、修改操作。
while True: print(s_info) handle = input('請選擇你要的操作選項(xiàng):') if handle == 'q': print('q. 退出系統(tǒng)') break elif handle == '1': s_display(students) elif handle == '2': s_new(students) elif handle == '3': s_find(students) elif handle == '4': s_delect(students) elif handle == '5': s_modify(students) else: print('請輸入正確的操作選項(xiàng)!')
4.編寫操作指令執(zhí)行函數(shù)
(1)顯示學(xué)生成績信息函數(shù)
主要功能是顯示所有學(xué)生成績信息。
def s_display(students): print('1. 顯示全部信息') print('姓名\t語文\t數(shù)學(xué)\t英語\t總分') for stu in students: print(f'{stu["name"]}\t{stu["chinese"]}\t{stu["math"]}\t{stu["english"]}\t{stu["total"]}')
(2)新建學(xué)生成績信息函數(shù)
主要是新建學(xué)生成績信息,并更新保存學(xué)生成績信息的文件。
def s_new(students): print('2. 新建學(xué)生信息') name = str(input('請輸入學(xué)生的姓名:')) chinese = int(input('請輸入學(xué)生的語文成績:')) math = int(input('請輸入學(xué)生的數(shù)學(xué)成績:')) english = int(input('請輸入學(xué)生的英語成績:')) total = chinese + math + english stu = {'name': name, 'chinese': chinese, 'math': math, 'english': english, 'total': total} students.append(stu) s_write_to_file(students)
(3)查詢學(xué)生成績信息函數(shù)
主要是查詢給定姓名的學(xué)生成績信息。
def s_find(students): print('3. 查詢學(xué)生信息') name = input('請輸入你要查詢學(xué)生的姓名:') for stu in students: if name == stu['name']: print('姓名\t語文\t數(shù)學(xué)\t英語\t總分') print(f'{stu["name"]}\t{stu["chinese"]}\t{stu["math"]}\t{stu["english"]}\t{stu["total"]}') break else: print('該學(xué)生不存在, 請檢查名字是否輸入正確!') s_write_to_file(students)
(4)刪除學(xué)生成績信息函數(shù)
主要是刪除給定姓名的學(xué)生成績信息,并更新保存學(xué)生成績信息的文件。
def s_delect(students): print('4. 刪除學(xué)生信息') name = input('請輸入你要?jiǎng)h除學(xué)生的姓名:') for stu in students: if name == stu['name']: students.remove(stu) break else: print('該學(xué)生不存在, 請檢查名字是否輸入正確!') s_write_to_file(students)
(5)修改學(xué)生成績信息函數(shù)
主要是修改給定姓名的學(xué)生成績信息,并更新保存學(xué)生成績信息的文件。
def s_modify(students): print('5. 修改學(xué)生信息') name = input('請輸入你要修改學(xué)生的姓名:') for stu in students: if name == stu['name']: print('(如果不想修改,直接回車!)') name = input('請重新輸入學(xué)生的姓名:') chinese = input('請重新輸入學(xué)生的語文成績:') math = input('請重新輸入學(xué)生的數(shù)學(xué)成績:') english = input('請重新輸入學(xué)生的英語成績:') if name: stu['name'] = str(name) if chinese: stu['chinese'] = int(chinese) if math: stu['math'] = int(math) if english: stu['english'] = int(english) stu['total'] = stu['chinese'] + stu['math'] + stu['english'] break else: print('該學(xué)生不存在, 請檢查名字是否輸入正確!') s_write_to_file(students)
5.保存學(xué)生成績信息函數(shù)
主要實(shí)現(xiàn)學(xué)生成績信息的保存更新。
def s_write_to_file(students): f=open("students.txt","r+") for s in students: f.write(str(s)+"\n") f.close()
完整源代碼
def s_write_to_file(students): f=open("students.txt","r+") for s in students: f.write(str(s)+"\n") f.close() def s_display(students): print('1. 顯示全部信息') print('姓名\t語文\t數(shù)學(xué)\t英語\t總分') for stu in students: print(f'{stu["name"]}\t{stu["chinese"]}\t{stu["math"]}\t{stu["english"]}\t{stu["total"]}') def s_new(students): print('2. 新建學(xué)生信息') name = str(input('請輸入學(xué)生的姓名:')) chinese = int(input('請輸入學(xué)生的語文成績:')) math = int(input('請輸入學(xué)生的數(shù)學(xué)成績:')) english = int(input('請輸入學(xué)生的英語成績:')) total = chinese + math + english stu = {'name': name, 'chinese': chinese, 'math': math, 'english': english, 'total': total} students.append(stu) s_write_to_file(students) def s_find(students): print('3. 查詢學(xué)生信息') name = input('請輸入你要查詢學(xué)生的姓名:') for stu in students: if name == stu['name']: print('姓名\t語文\t數(shù)學(xué)\t英語\t總分') print(f'{stu["name"]}\t{stu["chinese"]}\t{stu["math"]}\t{stu["english"]}\t{stu["total"]}') break else: print('該學(xué)生不存在, 請檢查名字是否輸入正確!') s_write_to_file(students) def s_delect(students): print('4. 刪除學(xué)生信息') name = input('請輸入你要?jiǎng)h除學(xué)生的姓名:') for stu in students: if name == stu['name']: students.remove(stu) break else: print('該學(xué)生不存在, 請檢查名字是否輸入正確!') s_write_to_file(students) def s_modify(students): print('5. 修改學(xué)生信息') name = input('請輸入你要修改學(xué)生的姓名:') for stu in students: if name == stu['name']: print('(如果不想修改,直接回車!)') name = input('請重新輸入學(xué)生的姓名:') chinese = input('請重新輸入學(xué)生的語文成績:') math = input('請重新輸入學(xué)生的數(shù)學(xué)成績:') english = input('請重新輸入學(xué)生的英語成績:') if name: stu['name'] = str(name) if chinese: stu['chinese'] = int(chinese) if math: stu['math'] = int(math) if english: stu['english'] = int(english) stu['total'] = stu['chinese'] + stu['math'] + stu['english'] break else: print('該學(xué)生不存在, 請檢查名字是否輸入正確!') s_write_to_file(students) if __name__=="__main__": s_info = """ ***************************************************** 【學(xué)生成績管理系統(tǒng)】 q. 退出學(xué)生成績系統(tǒng) 1. 顯示學(xué)生成績信息 2. 新建學(xué)生成績信息 3. 查詢學(xué)生成績信息 4. 刪除學(xué)生成績信息 5. 修改學(xué)生成績信息 ******************************************************""" students=[] f=open("students.txt","r+") for st in f.readlines(): students.append(eval(st)) f.close() while True: print(s_info) handle = input('請選擇你要的操作選項(xiàng):') if handle == 'q': print('q. 退出系統(tǒng)') break elif handle == '1': s_display(students) elif handle == '2': s_new(students) elif handle == '3': s_find(students) elif handle == '4': s_delect(students) elif handle == '5': s_modify(students) else: print('請輸入正確的操作選項(xiàng)!')
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python執(zhí)行子進(jìn)程實(shí)現(xiàn)進(jìn)程間通信的方法
這篇文章主要介紹了python執(zhí)行子進(jìn)程實(shí)現(xiàn)進(jìn)程間通信的方法,涉及Python使用subprocess模塊操作進(jìn)程的相關(guān)技巧,需要的朋友可以參考下2015-06-06python 基于pygame實(shí)現(xiàn)俄羅斯方塊
這篇文章主要介紹了python 基于pygame實(shí)現(xiàn)俄羅斯方塊的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03Django項(xiàng)目如何給數(shù)據(jù)庫添加約束
這篇文章主要介紹了Django項(xiàng)目如何給數(shù)據(jù)庫添加約束,幫助大家更好的理解和學(xué)習(xí)使用Django框架,感興趣的朋友可以了解下2021-04-04python射線法判斷檢測點(diǎn)是否位于區(qū)域外接矩形內(nèi)
這篇文章主要為大家詳細(xì)介紹了python射線法判斷檢測點(diǎn)是否位于區(qū)域外接矩形內(nèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06