最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python利用字典和列表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

 更新時(shí)間:2022年06月30日 09:34:47   作者:Toblerone_Wind  
這篇文章主要為大家詳細(xì)介紹了Python如何利用字典和列表實(shí)現(xiàn)一個(gè)簡(jiǎn)易的學(xué)生信息管理系統(tǒng),文中詳細(xì)注釋,方便理解,需要的可以參考一下

本文將利用Python中的字典和列表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

文件的存放格式采用的是python自帶的pickle模塊,需要新建course.txt和student.txt供程序讀寫。

下面是示例代碼

import pickle
 
# 從文件中讀取學(xué)生信息并返回
def readStudent():
    with open("student.txt",'rb') as f:
        try:
            return pickle.load(f)
        #讀取失敗,說明讀取的文件為空,返回空列表即可
        except EOFError:
            return []
 
# 保存學(xué)生信息student_list到文件student.txt中
def saveStudent(student_list):
    with open("student.txt",'wb') as f:
        pickle.dump(student_list, f)
 
# 增加學(xué)生信息
def addStudent(student_list):
    id = input("請(qǐng)輸入要增加的學(xué)生學(xué)號(hào):")
    name = input("請(qǐng)輸入要增加的學(xué)生姓名:")
    sex = input("請(qǐng)輸入要增加的學(xué)生性別:")
    specialty = input("請(qǐng)輸入要增加的學(xué)生專業(yè)班級(jí):")
    # 把這4個(gè)數(shù)據(jù)裝入字典student中
    student = {"學(xué)號(hào)":id, "姓名":name, "性別":sex, "專業(yè)班級(jí)":specialty}
    # 把字典student添加到列表student_list中
    student_list.append(student)
 
# 刪除學(xué)生信息
def deleteStudent(student_list):
    id = input("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):")
    for i in range(0, len(student_list)):
        # student_list[i]是一個(gè)字典
        if student_list[i]["學(xué)號(hào)"] == id:
            # 刪除student_list中的第i個(gè)字典
            student_list.pop(i)
            print("刪除成功!")
            return # 結(jié)束函數(shù)
    print("刪除失敗,未查詢到該學(xué)生。")
 
# 修改學(xué)生信息
def modifyStudent(student_list):
    id = input("請(qǐng)輸入要修改的學(xué)生學(xué)號(hào):")
    for i in range(0, len(student_list)):
        if student_list[i]["學(xué)號(hào)"] == id:
            id = input("請(qǐng)輸入修改后的學(xué)生學(xué)號(hào):")
            name = input("請(qǐng)輸入修改后的姓名:")
            sex = input("請(qǐng)輸入修改后的性別:")
            specialty = input("請(qǐng)輸入修改后的專業(yè)班級(jí):")
            # 把這4個(gè)數(shù)據(jù)裝入字典student中
            student = {"學(xué)號(hào)":id, "姓名":name, "性別":sex, "專業(yè)班級(jí)":specialty}
            # 用student替換student_list中的第i個(gè)字典
            student_list[i] = student
            print("修改成功!")
            return # 結(jié)束函數(shù)
    print("修改失敗,未查詢到該學(xué)生。")
 
# 顯示所有學(xué)生信息
def showStudent(student_list):
    print("學(xué)號(hào)\t\t姓名\t\t性別\t\t專業(yè)班級(jí)")
    for student in student_list:
        print("%s\t\t%s\t\t%s\t\t%s" %(student["學(xué)號(hào)"], student["姓名"], student["性別"], student["專業(yè)班級(jí)"]))
 
# 從文件中讀取學(xué)生成績(jī)信息
def readCourse():
    with open("course.txt",'rb') as f:
        try:
            return pickle.load(f)
        #讀取失敗,說明讀取的文件為空,返回空列表即可
        except EOFError:
            return []
 
# 保存學(xué)生成績(jī)信息course_list到文件course.txt中
def saveCourse(course_list):
    with open("course.txt",'wb') as f:
        pickle.dump(course_list, f)
 
# 增加學(xué)生成績(jī)信息    
def addCourse(course_list):
    id = input("請(qǐng)輸入要增加的學(xué)生學(xué)號(hào):")
    english = int(input("請(qǐng)輸入該學(xué)生的英語(yǔ)成績(jī):"))
    math = int(input("請(qǐng)輸入該學(xué)生的數(shù)學(xué)成績(jī):"))
    computer = int(input("請(qǐng)輸入該學(xué)生的計(jì)算機(jī)成績(jī):"))
    chemistry = int(input("請(qǐng)輸入該學(xué)生的化學(xué)成績(jī):"))
    PE = int(input("請(qǐng)輸入該學(xué)生的體育成績(jī):"))
    # 把這6個(gè)數(shù)據(jù)裝入字典course中
    course = {"學(xué)號(hào)":id, "英語(yǔ)":english, "數(shù)學(xué)":math, "計(jì)算機(jī)":computer, "化學(xué)":chemistry, "體育":PE}
    # 把字典course添加到列表course_list中
    course_list.append(course)
 
# 刪除學(xué)生成績(jī)信息  
def deleteCourse(course_list):
    id = input("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):")
    for i in range(0, len(course_list)):
        # course_list[i]是一個(gè)字典
        if course_list[i]["學(xué)號(hào)"] == id:
            # 刪除列表中的第i個(gè)字典
            course_list.pop(i)
            print("刪除成功!")
            return #結(jié)束函數(shù)
    print("刪除失敗,未查詢到該學(xué)生成績(jī)。")
 
# 修改學(xué)生成績(jī)信息
def modifyCourse(course_list):
    id = input("請(qǐng)輸入要修改的學(xué)生學(xué)號(hào):")
    for i in range(0, len(course_list)):
        if course_list[i]["學(xué)號(hào)"] == id:
            id = input("請(qǐng)輸入修改后的學(xué)生學(xué)號(hào):")
            english = int(input("請(qǐng)輸入修改后的英語(yǔ)成績(jī):"))
            math = int(input("請(qǐng)輸入修改后的數(shù)學(xué)成績(jī):"))
            computer = int(input("請(qǐng)輸入修改后的計(jì)算機(jī)成績(jī):"))
            chemistry = int(input("請(qǐng)輸入修改后的化學(xué)成績(jī):"))
            PE = int(input("請(qǐng)輸入修改后的體育成績(jī):"))
            # 把這6個(gè)數(shù)據(jù)裝入字典course中
            course = {"學(xué)號(hào)":id, "英語(yǔ)":english, "數(shù)學(xué)":math, "計(jì)算機(jī)":computer, "化學(xué)":chemistry, "體育":PE}
            # 用dict替換舊的數(shù)據(jù)
            course_list[i] = course
            print("修改成功!")
            return #結(jié)束函數(shù)
    print("修改失敗,未查詢到該學(xué)生成績(jī)。")
 
# 顯示學(xué)生成績(jī)信息
def showCourse(course_list):
    print("學(xué)號(hào)\t\t英語(yǔ)\t\t數(shù)學(xué)\t\t計(jì)算機(jī)\t\t化學(xué)\t\t體育")
    for course in course_list:
        print("%s\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d" %(course["學(xué)號(hào)"], course["英語(yǔ)"], course["數(shù)學(xué)"],
                    course["計(jì)算機(jī)"], course["化學(xué)"], course["體育"]))
 
# 通過姓名查詢?cè)撋某煽?jī)信息
def searchScoreByName(student_list, course_list):
    name = input("請(qǐng)輸入學(xué)生姓名:")
    id = "未查詢到"
    for stu in student_list:
        if stu["姓名"] == name:
            id = stu["學(xué)號(hào)"]
            break
    if id == "未查詢到":
        print("未查詢到該學(xué)生信息。")
        return #結(jié)束函數(shù)
    for course in course_list:
        if course["學(xué)號(hào)"] == id:
            print("查詢成功!該學(xué)生信息如下:")
            print("學(xué)號(hào)\t\t英語(yǔ)\t\t數(shù)學(xué)\t\t計(jì)算機(jī)\t\t化學(xué)\t\t體育")
            print("%s\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d" %(course["學(xué)號(hào)"], course["英語(yǔ)"], course["數(shù)學(xué)"],
                course["計(jì)算機(jī)"], course["化學(xué)"], course["體育"]))
            return #結(jié)束程序
    print("未查詢到該學(xué)生成績(jī)信息。")
 
# 查詢某門課程得分最高的學(xué)生信息
def searchStudentByHighScore(student_list, course_list):
    courseName = input("請(qǐng)輸入課程名稱:")
    # 按這門課程冒泡排序
    for i in range(0, len(course_list)-1):
        for j in range(0, len(course_list)-1-i):
            if course_list[j][courseName] < course_list[j+1][courseName]:
                course_list[j], course_list[j+1] = course_list[j+1], course_list[j]
    id = course_list[0]["學(xué)號(hào)"]
    for student in student_list:
        if student["學(xué)號(hào)"] == id:
            print("查找成功!")
            print("學(xué)號(hào)\t\t姓名\t\t性別\t\t專業(yè)班級(jí)")
            print("%s\t\t%s\t\t%s\t\t%s" %(student["學(xué)號(hào)"], student["姓名"], student["性別"], student["專業(yè)班級(jí)"]))
            return
    print("未查找到該學(xué)生信息。")
 
# 輸出某門課的平均成績(jī)
def outputAverageScore(course_list):
    courseName = input("請(qǐng)輸入課程名稱:")
    sum = 0
    for course in course_list:
        sum += course[courseName]
    print("%s平均成績(jī)?yōu)?.2f" %(courseName, sum/len(course_list)))
 
# 主菜單
def menu():
    print("1.增加學(xué)生信息    2.增加成績(jī)信息")
    print("3.修改學(xué)生信息    4.修改成績(jī)信息")
    print("5.刪除學(xué)生信息    6.刪除成績(jī)信息")
    print("7.顯示學(xué)生信息    8.顯示成績(jī)信息")
    print("9.通過姓名查詢?cè)撋某煽?jī)信息")
    print("10.查詢某門課程得分最高的學(xué)生信息")
    print("11.輸出某門課的平均成績(jī)")
    print("0.保存并退出")
 
# 主函數(shù)
def main():
    student_list = readStudent()
    course_list = readCourse()
    flag = True
    while flag:
        menu()
        choose = input("請(qǐng)輸入選項(xiàng):")
        while True:
            # 增加學(xué)生信息
            if choose == '1':
                addStudent(student_list)
                break
            # 增加成績(jī)信息
            elif choose == '2':
                addCourse(course_list)
                break
            # 修改學(xué)生信息
            elif choose == '3':
                modifyStudent(student_list)
                break
            # 修改成績(jī)信息
            elif choose == '4':
                modifyCourse(course_list)
                break
            # 刪除學(xué)生信息
            elif choose == '5':
                deleteStudent(student_list)
                break
            # 刪除成績(jī)信息
            elif choose == '6':
                deleteCourse(course_list)
                break
            # 顯示學(xué)生信息
            elif choose == '7':
                showStudent(student_list)
                break
            # 顯示成績(jī)信息
            elif choose == '8':
                showCourse(course_list)
                break
            # 通過姓名查詢?cè)撋某煽?jī)信息
            elif choose == '9':
                searchScoreByName(student_list, course_list)
                break
            # 查詢某門課程得分最高的學(xué)生信息
            elif choose == '10':
                searchStudentByHighScore(student_list, course_list)
                break
            # 輸出某門課的平均成績(jī)
            elif choose == '11':
                outputAverageScore(course_list)
                break
            # 保存數(shù)據(jù)并退出
            elif choose == '0':
                saveStudent(student_list)
                saveCourse(course_list)
                flag = False
                break
            else:
                choose = input("輸入錯(cuò)誤, 請(qǐng)重新輸入:")
    
if __name__=='__main__':
    main()

到此這篇關(guān)于Python利用字典和列表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Python學(xué)生信息管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python給文件夾加解密的實(shí)現(xiàn)

    Python給文件夾加解密的實(shí)現(xiàn)

    數(shù)據(jù)泄露已經(jīng)成為一個(gè)嚴(yán)重的問題,為了保護(hù)用戶和公司的隱私,給文件夾加密已經(jīng)成為一個(gè)必要的步驟,本文主要介紹了Python給文件夾加解密的實(shí)現(xiàn),感興趣的可以了解一下
    2023-11-11
  • 一文詳解如何在Matplotlib中更改圖例字體大小

    一文詳解如何在Matplotlib中更改圖例字體大小

    在我們處理數(shù)據(jù)的時(shí)候,需要對(duì)大量的數(shù)據(jù)進(jìn)行繪圖,就免不了要使用到Matplotlib,下面這篇文章主要給大家介紹了關(guān)于如何在Matplotlib中更改圖例字體大小的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • python字符串替換第一個(gè)字符串的方法

    python字符串替換第一個(gè)字符串的方法

    這篇文章主要介紹了python字符串替換第一個(gè)字符串的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • python視頻轉(zhuǎn)化字節(jié)問題的完整實(shí)現(xiàn)

    python視頻轉(zhuǎn)化字節(jié)問題的完整實(shí)現(xiàn)

    在Python中可以將視頻和字節(jié)進(jìn)行轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于python視頻轉(zhuǎn)化字節(jié)問題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • pandas如何快速去除列名中的特殊符號(hào)

    pandas如何快速去除列名中的特殊符號(hào)

    在使用Pandas處理數(shù)據(jù)時(shí),經(jīng)常需要處理數(shù)據(jù)中的列名column name,有時(shí)候,列名可能包含特殊字符,比如空格、點(diǎn)號(hào)、括號(hào)等,這些特殊字符可能會(huì)導(dǎo)致下一步的代碼出錯(cuò),因此需要將這些特殊字符從列名中刪除,下面先介紹pandas如何去除列名中的特殊符號(hào),感興趣的朋友一起看看吧
    2024-01-01
  • 基于python的前后端分離的模擬實(shí)現(xiàn)

    基于python的前后端分離的模擬實(shí)現(xiàn)

    前后端分離核心是UI界面展示層(View)和數(shù)據(jù)處理層(Model)通過控制層(Controller)進(jìn)行解耦合,在MVC設(shè)計(jì)模式中,前端主要負(fù)責(zé)數(shù)據(jù)展示和用戶交互(View),后端處理業(yè)務(wù)邏輯和數(shù)據(jù)存儲(chǔ)(Model),通過API接口進(jìn)行通信,提高了開發(fā)效率,便于前后端分工合作,有利于代碼的維護(hù)和迭代
    2024-10-10
  • Python實(shí)現(xiàn)局域網(wǎng)遠(yuǎn)程控制電腦

    Python實(shí)現(xiàn)局域網(wǎng)遠(yuǎn)程控制電腦

    這篇文章主要為大家詳細(xì)介紹了如何利用Python編寫一個(gè)工具,可以實(shí)現(xiàn)遠(yuǎn)程控制局域網(wǎng)電腦關(guān)機(jī),重啟,注銷等功能,感興趣的小伙伴可以參考一下
    2024-12-12
  • 詳解Python的collections模塊中的deque雙端隊(duì)列結(jié)構(gòu)

    詳解Python的collections模塊中的deque雙端隊(duì)列結(jié)構(gòu)

    deque結(jié)構(gòu)可以看作是內(nèi)置的list結(jié)構(gòu)的加強(qiáng)版,且比隊(duì)列提供了更強(qiáng)大的方法,下面就通過幾個(gè)小例子來詳解Python的collections模塊中的deque雙端隊(duì)列結(jié)構(gòu):
    2016-07-07
  • 執(zhí)行Django數(shù)據(jù)遷移時(shí)報(bào) 1091錯(cuò)誤及解決方法

    執(zhí)行Django數(shù)據(jù)遷移時(shí)報(bào) 1091錯(cuò)誤及解決方法

    這篇文章主要介紹了執(zhí)行Django數(shù)據(jù)遷移,報(bào)錯(cuò) 1091,需要的朋友可以參考下
    2019-10-10
  • 在Python程序和Flask框架中使用SQLAlchemy的教程

    在Python程序和Flask框架中使用SQLAlchemy的教程

    SQLAlchemy為Python程序與SQL語(yǔ)句之間建立了映射,是Python操作數(shù)據(jù)庫(kù)的利器,這里我們將來看在Python程序和Flask框架中使用SQLAlchemy的教程,需要的朋友可以參考下
    2016-06-06

最新評(píng)論

西乌珠穆沁旗| 青岛市| 读书| 三门县| 罗甸县| 蓝山县| 旬阳县| 霞浦县| 志丹县| 明水县| 济南市| 贵定县| 六枝特区| 论坛| 香河县| 锡林浩特市| 汝阳县| 肇庆市| 龙门县| 武陟县| 东山县| 桦甸市| 藁城市| 喀什市| 左贡县| 洛川县| 井陉县| 晋宁县| 长寿区| 大方县| 肇庆市| 诸暨市| 连山| 太白县| 察雅县| 庐江县| 女性| 恩平市| 鄂伦春自治旗| 同江市| 岑巩县|