中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python編寫學生成績管理系統的邏輯結構及功能怎么實現

發布時間:2022-04-26 15:57:57 來源:億速云 閱讀:144 作者:iii 欄目:開發技術

這篇“python編寫學生成績管理系統的邏輯結構及功能怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python編寫學生成績管理系統的邏輯結構及功能怎么實現”文章吧。

學生信息系統

提示:python編寫的學生成績管理系統,包括8個功能和打包教程

一、功能界面 

def menum():
    print('==================student_manger=================')
    print('---------------------功能界面---------------------')
    print('\t\t1.錄入學生信息')
    print('\t\t2.查找學生信息')
    print('\t\t3.刪除學生信息')
    print('\t\t4.修改學生成績')
    print('\t\t5.排序')
    print('\t\t6.統計學生總人數')
    print('\t\t7.顯示所有學生信息')
    print('\t\t8.顯示功能介紹按鈕')
    print('\t\t0.退出')
    print('================================================')

二 、主函數 

def main():
    menum()
    while True:
        try:
            choice = int(input('請選擇你想進行的操作: '))
        except ValueError:
            print('輸入的數據存在錯誤,只能輸入0到7的整數!')
            try:
                choice = int(input('請重新輸入: '))
            except ValueError:
                print('重復輸入錯誤,退出系統!')
                break
        if choice in [0, 1, 2, 3, 4, 5, 6, 7, 8]:
            if choice == 0:
                answer = input('你確定要退出系統嗎?(Y/N): ')
                if answer == 'Y' or answer == 'y':
                    print('謝謝使用!')
                    break
                elif answer == 'N' or answer == 'n':
                    print('即將返回上一步操作!')
                    continue
                else:
                    input('輸入錯誤,即將返回主界面!')
                    continue
            elif choice == 1:
                insert()
            elif choice == 2:
                search()
            elif choice == 3:
                delete()
            elif choice == 4:
                modify()
            elif choice == 5:
                sort()
            elif choice == 6:
                total()
            elif choice == 7:
                show()
            else:
                menum()
        else:
            print('你選擇的操作無效,請重新輸入!:')

三 、學生信息錄入功能

邏輯結構圖

python編寫學生成績管理系統的邏輯結構及功能怎么實現

def insert():
    student_list = []
    id_list = []
    while True:
        id = input('請輸入ID: ')
        if not id:
            break
        name = input('請輸入姓名:')
        if not name:
            break
        try:
            english = float(input('請輸入英語成績:'))
            math = float(input('請輸入數學成績:'))
            python = float(input('請輸入Python成績:'))
        except ValueError:
            print('數據輸入錯誤!')
            continue
        # 將錄入的學生信息存放到字典中
        student = {'id': id, 'name': name, 'english': english, 'math': math, 'Python': python}
        # 將每個學生的信息存放在列表中
        if student['id'] in id_list:                    # student['id'] = value(id)
            print('已存在相同ID:')
            for i in range(len(student_list)):
                if student_list[i][id] == student[id]:  # 輸出重復id元素
                    print(student_list[i].items())
                    break
            print('請重新錄入!')
        else:
            id_list.append(str(student['id']))
            student_list.append(student)
        # 是否繼續添加學生信息
        answer = input('是否繼續添加學生信息?(Y/N): ')
        if answer == 'Y' or answer == 'y':
            continue
        elif answer == 'N' or answer == 'n':
            # 存儲學生信息
            save(student_list, filename)
            print('學生信息錄入完畢!')
            break
        else:
            print('輸入錯誤,即將返回主界面!')
            break

四 、學生信息查找功能

邏輯結構圖

python編寫學生成績管理系統的邏輯結構及功能怎么實現

代碼

def search():
    while True:
        if os.path.exists(filename):
            with open(filename, 'r', encoding = 'utf-8') as s_file:
                student_qurey = s_file.readlines()              # 將學生信息全部取出
                id_list = []
                name_list = []
                for i in student_qurey:
                    d = dict(eval(i))
                    id_list.append(d['id'])                    # 將所有學生的id存放在id_list中
                    name_list.append(d['name'])                # 將所有學生的name存放在id_list中
            try:
                mode = int(input('請選擇查詢模式: 1.按照ID查詢 / 2.按照姓名查詢 '))
            except ValueError:
                print('數據類型輸入錯誤!請重新輸入!')
            else:
                if mode == 1:                                  # 按照ID查詢
                    id = input('請輸入學生id: ')
                    if id in id_list:
                        print('已經查找到該名學生:')
                        print('ID\t\t\t姓名:\t\t英語成績:\t\t數學成績:\t\tPython成績:\t\t總成績:')
                        for item in student_qurey:
                            if dict(eval(item))['id'] == id:
                                p = dict(eval(item))
                                print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t   {4}\t\t   {5}'.format(
                                                 p['id'], p['name'], p['english'], p['math'], p['Python'],
                                                 float(p['english'])+float(p['math'])+float(p['Python'])))
                    else:
                        print('查無此人!')
                elif mode == 2:                               # 按照姓名查詢
                    name = input('請輸入學生姓名: ')
                    if name in name_list:
                        print('已經查找到該名學生:')
                        print('ID\t\t\t姓名:\t\t英語成績:\t\t數學成績:\t\tPython成績:\t\t總成績:')
                        for item in student_qurey:
                            if dict(eval(item))['name'] == name:
                                p = dict(eval(item))
                                print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t   {4}\t\t   {5}'.format(
                                    p['id'], p['name'], p['english'], p['math'], p['Python'],
                                    float(p['english']) + float(p['math']) + float(p['Python'])))
                    else:
                        print('查無此人!')
                else:
                    print('輸入錯誤,只能選擇1/2兩種模式!')
                answer = input('是否繼續查詢? (Y/N)')
                if answer == 'Y' or answer == 'y':
                    continue
                elif answer == 'N' or answer == 'n':
                    print('正在退出查詢..')
                    break
                else:
                    print('輸入錯誤,即將返回主界面!')
                    break
        else:
            print('無學生信息文件!')
            return

五 、刪除學生信息

邏輯結構圖

python編寫學生成績管理系統的邏輯結構及功能怎么實現

代碼

def delete():
    while True:
        student_id = input('請輸入想要刪除的學生的ID: ')
        if student_id != '':
            if os.path.exists(filename):
                with open(filename, 'r', encoding = 'utf-8') as file:
                    student_old = file.readlines()
            else:
                student_old = []
            flag = False                            # 標記是否刪除
            if student_old:
                with open(filename, 'w', encoding = 'utf-8') as wfile:
                    for item in student_old:
                        d = dict(eval(item))        # 轉化為字典類型
                        if d['id'] != student_id:
                            wfile.write(str(d)+'\n')
                        else:
                            flag = True
                    if flag:
                        print(f'id為{student_id}的學生信息已被刪除!')
                    else:
                        print(f'沒有找到id為{student_id}的學生信息!')
            else:
                print('無學生信息')
                break
            show()                  # 顯示更新后的文件信息
            answer = input('是否繼續刪除學生信息?(Y/N): ')
            if answer == 'Y' or answer == 'y':
                continue
            elif answer == 'N' or answer == 'n':
                break
            else:
                print('輸入錯誤,即將返回主界面!')
                break

六 、學生信息修改功能

邏輯結構圖

python編寫學生成績管理系統的邏輯結構及功能怎么實現

代碼

def modify():
    show()
    if os.path.exists(filename):
        with open(filename, 'r', encoding = 'utf-8') as rfile:
            student_old = rfile.readlines()             # 直接將文本文件的內容整行讀取到列表中
    else:
        print('學生文件信息不存在!')
    student_id = input('請輸入想要修改的學生的ID: ')
    with open(filename, 'w', encoding = 'utf-8') as just_file:  # 判斷學生是否在該系統中
        id_list = []
        for i in student_old:
            d = dict(eval(i))
            id_list.append(d['id'])                             # 將所有學生的id存放在id_list中
        if student_id in id_list:                               # 要修改的學生存在時
            for item in student_old:
                e = dict(eval(item))
                if e['id'] == student_id:
                    print('已找到該名學生!')
                    while True:
                        try:
                            e['name'] = input('請輸入姓名: ')
                            e['english'] = input('請輸入英語成績: ')
                            e['math'] = input('請輸入數學成績: ')
                            e['Python'] = input('請輸入Python成績: ')
                        except ValueError:
                            print('數據類型輸入錯誤!請重新輸入!')
                        else:
                            break  # try...except..else: 輸入為出錯時,執行else語句
                    just_file.write(str(e) + '\n')
                    print('修改成功!')
                else:
                    just_file.write(str(e) + '\n')
        else:
            answer1 = input('查無此人!,是否執行插入操作?  (Y/N)')
            if answer1 == 'Y' or answer1 == 'y':
                insert()
            else:
                print('結束當前操作')
        answer = input('是否繼續修改其余學生信息?(Y/N): ')
        if answer == 'Y' or answer == 'y':
            modify()
        elif answer == 'N' or answer == 'n':
            print('結束修改,即將返回主界面..')
        else:
            print('輸入錯誤,即將返回主界面!')

七 、學生成績排序

邏輯結構圖

python編寫學生成績管理系統的邏輯結構及功能怎么實現

代碼

def sort():
    student_new = []
    if os.path.exists(filename):
        with open(filename, 'r', encoding = 'utf-8') as sort_file:
            student_list = sort_file.readlines()                    # 無序的學生信息列表
        for item in student_list:
            d = dict(eval(item))
            student_new.append(d)                                   # 列表元素轉化為字典
        while True:
            try:
                sort_choice = int(input('請選擇排序方式: 0:升序 / 1:降序\t'))
            except ValueError:
                print('輸入的數據類型錯誤,請重新輸入')
            else:
                if sort_choice == 0:
                    Flag = False
                    break
                elif sort_choice == 1:
                    Flag = True
                    break
                else:
                    print('輸入錯誤,只能在0/1中選擇!')
                    continue
        while True:
            try:
                asc_choice = int(input('請選擇按照哪一門成績進行排序: 英語:0  / 數學:1  / python:2\t\t'))
            except ValueError:
                print('輸入的數據類型錯誤,請重新輸入')
            else:
                if asc_choice == 0:
                    student_new.sort(key = lambda x: int(x['english']), reverse = Flag)     # 根據列表中的元素進行排序
                    show()
                    break
                elif asc_choice == 1:
                    student_new.sort(key = lambda x: int(x['math']), reverse = Flag)
                    show()
                    break
                elif asc_choice == 2:
                    student_new.sort(key = lambda x: int(x['Python']), reverse = Flag)
                    show()
                    break
                elif asc_choice == 3:
                    student_new.sort(key = lambda x: int(x['Python'])+int(x['english'])+int(x['math']), reverse = Flag)
                    show()
                    break
                else:
                    print('輸入錯誤,只能在0/1/2中選擇!')
                    continue
    else:
        print('學生信息文件不存在!')

八 、 學生人數統計

邏輯結構圖

python編寫學生成績管理系統的邏輯結構及功能怎么實現

代碼

def total():
    nums = 0
    if os.path.exists(filename):
        with open(filename, 'r', encoding = 'utf-8') as t_file:
            len_list = t_file.readlines()
        for i in range(len(len_list)):
            if len_list[i] != '':
                nums += 1
        print('當前學生總人數為: ', nums)
        print('請選擇你想進行的下一步操作: ')
    else:
        print('暫無學生信息文件')

九 、顯示所有學生信息

邏輯結構圖

python編寫學生成績管理系統的邏輯結構及功能怎么實現

代碼

def show():
    if os.path.exists(filename):
        with open(filename, 'r', encoding = 'utf-8') as show_file:
            student_list = show_file.readlines()
            if student_list:
                print('----全部學生信息如下----')
                print('ID\t\t\t姓名:\t\t英語成績:\t\t數學成績:\t\tPython成績:\t\t總成績:')
                for item in student_list:
                    p = dict(eval(item))
                    print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t   {4}\t\t   {5}'.format(
                        p['id'], p['name'], p['english'], p['math'], p['Python'],
                        float(p['english']) + float(p['math']) + float(p['Python'])))
            else:
                print('暫無學生信息!')
    else:
        print('暫無學生信息!')

程序打包

在 pycharm 終端 或者 python命令界面, 使用:

pip install PyInstaller

下載python打包程序,下載完成后, 執行以下操作:

pyinstaller —F F:\xxxx\xxx\xx\x.py

其中:

  • -F 代表將程序打包為單個exe文件,

  • F:\xxx\xxx\xx.py 為你的學生成績管理系統文件的絕對地址

打包完成后,提示信息倒數第二行:Appending語句后面即為exe文件位置,若無特殊顯示,則在當前目錄父文件下

以上就是關于“python編寫學生成績管理系統的邏輯結構及功能怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

水富县| 崇义县| 崇仁县| 驻马店市| 翁牛特旗| 垦利县| 大名县| 化州市| 乐陵市| 台中市| 上栗县| 伊吾县| 进贤县| 丘北县| 垣曲县| 樟树市| 遵义市| 鹤庆县| 芷江| 孟州市| 琼海市| 泾川县| 股票| 碌曲县| 银川市| 云龙县| 武隆县| 晴隆县| 那坡县| 青岛市| 香河县| 黄大仙区| 岗巴县| 玉林市| 梨树县| 临汾市| 高台县| 宁国市| 商南县| 新余市| 禄丰县|