亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python實現簡易學生信息管理系統

系統 1647 0

本文實例為大家分享了python實現學生信息管理系統的具體代碼,供大家參考,具體內容如下

簡易學生信息管理系統主要功能有

1 錄入學生信息
2 查找學生信息
3 刪除學生信息
4 修改學生信息
5 排序
6 統計學生總人數
7 顯示所有學生信息
0 退出系統

系統運行效果

python實現簡易學生信息管理系統_第1張圖片

主菜單的代碼方法:

            
# Author: dry
# 開發時間:2019/9/11
# 開發工具:PyCharm
import re # 導入正則表達式模塊
import os # 導入操作系統模塊
filename = "student.txt" # 學生信息保存文件
def menu():
  # 輸出菜單
  print('''
   ---------------學生信息管理系統------------
   ==================功能菜單================
          1 錄入學生信息
          2 查找學生信息
          3 刪除學生信息
          4 修改學生信息
          5 排序
          6 統計學生總人數
          7 顯示所有學生信息
          0 退出系統
   =======================================  
         說明:通過數字選擇菜單
   =======================================
  ''')
          

系統主方法:

            
def main():
  ctrl = True # 標記是否退出系統
  while (ctrl):
    menu() # 顯示菜單
    option = input("請選擇:") # 選擇菜單項
    option_str = re.sub("\D", "", option) # 提取數字
    if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']:
      option_int = int(option_str)
      if option_int == 0: # 退出系統
        print('您已退出學生成績管理系統!')
        ctrl = False
      elif option_int == 1: # 錄入學生成績信息
        insert()
      elif option_int == 2: # 查找學生成績信息
        search()
      elif option_int == 3: # 刪除學生成績信息
        delete()
      elif option_int == 4: # 修改學生成績信息
        modify()
      elif option_int == 5: # 排序
        sort()
      elif option_int == 6: # 統計學生總數
        total()
      elif option_int == 7: # 顯示所有學生信息
        show()
          

錄入學生信息方法:

            
'''錄入學生信息'''
def insert():
  studentList = [] # 保存學生信息的列表
  mark = True # 是否繼續添加
  while mark:
    id = input("請輸入學生ID(如1001):")
    if not id:
      break
    name = input("請輸入名字:")
    if not name:
      break
    try:
      english = int(input("請輸入英語成績:"))
      python = int(input("請輸入python成績:"))
      c = int(input("請輸入C語言成績:"))
    except:
      print("輸入無效,不是整型數值,請重新輸入信息")
      continue
      # 將輸入的學生信息保存到字典
    student = {"id": id, "name": name, "english": english, "python": python, "c": c}
    studentList.append(student) # 將學生字典添加到列表中
    inputList = input("是否繼續添加?(y/n):")
    if inputList == 'y': # 繼續添加
      mark = True
    else:
      mark = False
    save(studentList) # 將學生信息保存到文件
    print("學生信息錄入完畢!!!")
          

保存學生信息方法:

            
'''將學生信息保存到文件'''
def save(student):
  try:
    student_txt = open(filename, 'a') # 以追加模式打開
  except Exception as e:
    student_txt = open(filename, 'w') # 文件不存在,創建文件并打開
  for info in student:
    student_txt.write(str(info) + "\n") # 執行存儲,添加換行符
  student_txt.close() # 關閉文件
          

查詢學生信息方法:

            
'''查詢學生信息'''
def search():
  mark = True
  student_query = []
  while mark:
    id = ""
    name = ""
    if os.path.exists(filename):
      mode = input("按ID查詢輸入1:按姓名查詢輸入2:")
      if mode == "1":
        id = input("請輸入學生ID:")
      elif mode == "2":
        name = input("請輸入學生姓名:")
      else:
        print("您輸入有誤,請重新輸入!")
        search()
      with open(filename, "r") as file:
        student = file.readlines()
        for list in student:
          d = dict(eval(list))
          if id is not "":
            if d['id'] == id:
              student_query.append(d)
          elif name is not "":
            if d['name'] == name:
              student_query.append(d)
        show_student(student_query)
        student_query.clear()
        inputMark = input("是否繼續查詢?(y/n):")
        if inputMark == "y":
          mark = True
        else:
          mark = False
    else:
      print("暫未保存數據信息...")
      return
          

顯示學生信息方法

            
'''將保存在列表中的學生信息顯示出來'''
def show_student(studentList):
  if not studentList:
    print("無效的數據")
    return
  format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:10}"
  print(format_title.format("ID", "名字", "英語成績", "python成績", "C語言成績", "總成績"))
  format_data = "{:^6}{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:10}"
  for info in studentList:
    print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")),
                 str(info.get("c")),
                 str(info.get("english") + info.get("python") + info.get("c")).center(12)))
          

刪除學生信息方法:

            
'''刪除學生信息'''
def delete():
  mark = True # 標記是否循環
  while mark:
    studentId = input("請輸入要刪除的學生ID:")
    if studentId is not "": # 判斷要刪除的學生ID是否存在
      if os.path.exists(filename):
        with open(filename, 'r') as rfile:
          student_old = rfile.readlines()
      else:
        student_old = []
      ifdel = False # 標記是否刪除
      if student_old: # 如果存在學生信息
        with open(filename, 'w') as wfile:
          d = {} # 定義空字典
          for list in student_old:
            d = dict(eval(list)) # 字符串轉字典
            if d['id'] != studentId:
              wfile.write(str(d) + "\n") # 將一條信息寫入文件
            else:
              ifdel = True # 標記已經刪除
          if ifdel:
            print("ID為%s的學生信息已經被刪除..." % studentId)
          else:
            print("沒有找到ID為%s的學生信息..." % studentId)
      else:
        print("不存在學生信息")
        break
      show() # 顯示全部學生信息
      inputMark = input("是否繼續刪除?(y/n):")
      if inputMark == "y":
        mark = True # 繼續刪除
      else:
        mark = False # 退出刪除學生信息操作
          

修改學生信息方法:

            
'''修改學生信息'''
def modify():
  show() # 顯示全部學生信息
  if os.path.exists(filename):
    with open(filename, 'r') as rfile:
      student_old = rfile.readlines()
  else:
    return
  studentid = input("請輸入要修改的學生ID:")
  with open(filename, 'w') as wfile:
    for student in student_old:
      d = dict(eval(student))
      if d['id'] == studentid:
        print("找到了這名學生,可以修改他的信息")
        while True: # 輸入要修改的信息
          try:
            d["name"] = input("請輸入姓名:")
            d["english"] = int(input("請輸入英語成績:"))
            d["python"] = int(input("請輸入python成績:"))
            d['c'] = int(input("請輸入C語言成績:"))
          except:
            print("您輸入有誤,請重新輸入!")
          else:
            break
        student = str(d) # 將字典轉為字符串
        wfile.write(student + "\n") # 將修改信息寫入到文件
        print("修改成功")
      else:
        wfile.write(student) # 將未修改的信息寫入文件
  mark = input("是否繼續修改其他學生信息?(y/n):")
  if mark == "y":
    modify()
          

學生信息排序方法:

            
'''排序'''
def sort():
  show()
  if os.path.exists(filename):
    with open(filename, 'r') as file:
      student_old = file.readlines()
      student_new = []
    for list in student_old:
      d = dict(eval(list))
      student_new.append(d)
  else:
    return
  ascORdesc = input("請選擇(0升序;1降序)")
  if ascORdesc == "0":
    ascORdescBool = False # 標記變量,為False時表示升序,為True時表示降序
  elif ascORdesc == "1":
    ascORdescBool = True
  else:
    print("您輸入的信息有誤,請重新輸入!")
    sort()
  mode = input("請選擇排序方式(1按英語成績排序;2按python成績排序;3按C語言成績排序;0按總成績排序):")
  if mode == "1": # 按英語成績排序
    student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)
  elif mode == "2": # 按python成績排序
    student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool)
  elif mode == "3": # 按C語言成績排序
    student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool)
  elif mode == "0": # 按總成績排序
    student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)
  else:
    print("您的輸入有誤,請重新輸入!")
    sort()
  show_student(student_new) # 顯示排序結果
          

統計學生總數方法:

            
'''統計學生總數'''
def total():
  if os.path.exists(filename):
    with open(filename, 'r') as rfile:
      student_old = rfile.readlines()
      if student_old:
        print("一共有%d名學生!" % len(student_old))
      else:
        print("還沒有錄入學生信息")
  else:
    print("暫未保存數據信息")
          

顯示所有學生信息方法:

            
'''顯示所有學生信息'''
def show():
  student_new = []
  if os.path.exists(filename):
    with open(filename, 'r') as rfile:
      student_old = rfile.readlines()
    for list in student_old:
      student_new.append(eval(list))
    if student_new:
      show_student(student_new)
    else:
      print("暫未保存數據信息")
          

開始函數:

            
if __name__ == '__main__':
  main()
          

完整代碼如下:

            
# Author: dry
# 開發時間:2019/9/11
# 開發工具:PyCharm
import re # 導入正則表達式模塊
import os # 導入操作系統模塊

filename = "student.txt" # 學生信息保存文件


def menu():
  # 輸出菜單
  print('''
   ---------------學生信息管理系統------------
   ==================功能菜單================
          1 錄入學生信息
          2 查找學生信息
          3 刪除學生信息
          4 修改學生信息
          5 排序
          6 統計學生總人數
          7 顯示所有學生信息
          0 退出系統
   =======================================  
         說明:通過數字選擇菜單
   =======================================
  ''')


def main():
  ctrl = True # 標記是否退出系統
  while (ctrl):
    menu() # 顯示菜單
    option = input("請選擇:") # 選擇菜單項
    option_str = re.sub("\D", "", option) # 提取數字
    if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']:
      option_int = int(option_str)
      if option_int == 0: # 退出系統
        print('您已退出學生成績管理系統!')
        ctrl = False
      elif option_int == 1: # 錄入學生成績信息
        insert()
      elif option_int == 2: # 查找學生成績信息
        search()
      elif option_int == 3: # 刪除學生成績信息
        delete()
      elif option_int == 4: # 修改學生成績信息
        modify()
      elif option_int == 5: # 排序
        sort()
      elif option_int == 6: # 統計學生總數
        total()
      elif option_int == 7: # 顯示所有學生信息
        show()


'''錄入學生信息'''


def insert():
  studentList = [] # 保存學生信息的列表
  mark = True # 是否繼續添加
  while mark:
    id = input("請輸入學生ID(如1001):")
    if not id:
      break
    name = input("請輸入名字:")
    if not name:
      break
    try:
      english = int(input("請輸入英語成績:"))
      python = int(input("請輸入python成績:"))
      c = int(input("請輸入C語言成績:"))
    except:
      print("輸入無效,不是整形數值,請重新輸入信息")
      continue
      # 將輸入的學生信息保存到字典
    student = {"id": id, "name": name, "english": english, "python": python, "c": c}
    studentList.append(student) # 將學生字典添加到列表中
    inputList = input("是否繼續添加?(y/n):")
    if inputList == 'y': # 繼續添加
      mark = True
    else:
      mark = False
    save(studentList) # 將學生信息保存到文件
    print("學生信息錄入完畢!!!")


'''將學生信息保存到文件'''


def save(student):
  try:
    student_txt = open(filename, 'a') # 以追加模式打開
  except Exception as e:
    student_txt = open(filename, 'w') # 文件不存在,創建文件并打開
  for info in student:
    student_txt.write(str(info) + "\n") # 執行存儲,添加換行符
  student_txt.close() # 關閉文件


'''查詢學生信息'''


def search():
  mark = True
  student_query = []
  while mark:
    id = ""
    name = ""
    if os.path.exists(filename):
      mode = input("按ID查詢輸入1:按姓名查詢輸入2:")
      if mode == "1":
        id = input("請輸入學生ID:")
      elif mode == "2":
        name = input("請輸入學生姓名:")
      else:
        print("您輸入有誤,請重新輸入!")
        search()
      with open(filename, "r") as file:
        student = file.readlines()
        for list in student:
          d = dict(eval(list))
          if id is not "":
            if d['id'] == id:
              student_query.append(d)
          elif name is not "":
            if d['name'] == name:
              student_query.append(d)
        show_student(student_query)
        student_query.clear()
        inputMark = input("是否繼續查詢?(y/n):")
        if inputMark == "y":
          mark = True
        else:
          mark = False
    else:
      print("暫未保存數據信息...")
      return


'''將保存在列表中的學生信息顯示出來'''


def show_student(studentList):
  if not studentList:
    print("無效的數據")
    return
  format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:10}"
  print(format_title.format("ID", "名字", "英語成績", "python成績", "C語言成績", "總成績"))
  format_data = "{:^6}{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:10}"
  for info in studentList:
    print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")),
                 str(info.get("c")),
                 str(info.get("english") + info.get("python") + info.get("c")).center(12)))


'''刪除學生信息'''


def delete():
  mark = True # 標記是否循環
  while mark:
    studentId = input("請輸入要刪除的學生ID:")
    if studentId is not "": # 判斷要刪除的學生ID是否存在
      if os.path.exists(filename):
        with open(filename, 'r') as rfile:
          student_old = rfile.readlines()
      else:
        student_old = []
      ifdel = False # 標記是否刪除
      if student_old: # 如果存在學生信息
        with open(filename, 'w') as wfile:
          d = {} # 定義空字典
          for list in student_old:
            d = dict(eval(list)) # 字符串轉字典
            if d['id'] != studentId:
              wfile.write(str(d) + "\n") # 將一條信息寫入文件
            else:
              ifdel = True # 標記已經刪除
          if ifdel:
            print("ID為%s的學生信息已經被刪除..." % studentId)
          else:
            print("沒有找到ID為%s的學生信息..." % studentId)
      else:
        print("不存在學生信息")
        break
      show() # 顯示全部學生信息
      inputMark = input("是否繼續刪除?(y/n):")
      if inputMark == "y":
        mark = True # 繼續刪除
      else:
        mark = False # 退出刪除學生信息操作


'''修改學生信息'''


def modify():
  show() # 顯示全部學生信息
  if os.path.exists(filename):
    with open(filename, 'r') as rfile:
      student_old = rfile.readlines()
  else:
    return
  studentid = input("請輸入要修改的學生ID:")
  with open(filename, 'w') as wfile:
    for student in student_old:
      d = dict(eval(student))
      if d['id'] == studentid:
        print("找到了這名學生,可以修改他的信息")
        while True: # 輸入要修改的信息
          try:
            d["name"] = input("請輸入姓名:")
            d["english"] = int(input("請輸入英語成績:"))
            d["python"] = int(input("請輸入python成績:"))
            d['c'] = int(input("請輸入C語言成績:"))
          except:
            print("您輸入有誤,請重新輸入!")
          else:
            break
        student = str(d) # 將字典轉為字符串
        wfile.write(student + "\n") # 將修改信息寫入到文件
        print("修改成功")
      else:
        wfile.write(student) # 將未修改的信息寫入文件
  mark = input("是否繼續修改其他學生信息?(y/n):")
  if mark == "y":
    modify()


'''排序'''


def sort():
  show()
  if os.path.exists(filename):
    with open(filename, 'r') as file:
      student_old = file.readlines()
      student_new = []
    for list in student_old:
      d = dict(eval(list))
      student_new.append(d)
  else:
    return
  ascORdesc = input("請選擇(0升序;1降序)")
  if ascORdesc == "0":
    ascORdescBool = False # 標記變量,為False時表示升序,為True時表示降序
  elif ascORdesc == "1":
    ascORdescBool = True
  else:
    print("您輸入的信息有誤,請重新輸入!")
    sort()
  mode = input("請選擇排序方式(1按英語成績排序;2按python成績排序;3按C語言成績排序;0按總成績排序):")
  if mode == "1": # 按英語成績排序
    student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)
  elif mode == "2": # 按python成績排序
    student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool)
  elif mode == "3": # 按C語言成績排序
    student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool)
  elif mode == "0": # 按總成績排序
    student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)
  else:
    print("您的輸入有誤,請重新輸入!")
    sort()
  show_student(student_new) # 顯示排序結果


'''統計學生總數'''


def total():
  if os.path.exists(filename):
    with open(filename, 'r') as rfile:
      student_old = rfile.readlines()
      if student_old:
        print("一共有%d名學生!" % len(student_old))
      else:
        print("還沒有錄入學生信息")
  else:
    print("暫未保存數據信息")


'''顯示所有學生信息'''


def show():
  student_new = []
  if os.path.exists(filename):
    with open(filename, 'r') as rfile:
      student_old = rfile.readlines()
    for list in student_old:
      student_new.append(eval(list))
    if student_new:
      show_student(student_new)
    else:
      print("暫未保存數據信息")


if __name__ == '__main__':
  main()
          

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品香蕉在线观看首页 | 俄罗斯午夜影院 | 精品一区二区三区中文字幕 | 久久精品加勒比中文字幕 | 曰本人一级毛片免费完整视频 | 波多野吉衣一区二区三区在线观看 | 亚洲欧美一区二区三区国产精品 | 亚洲国产成人久久一区二区三区 | 亚洲视频二区 | 日韩一区二区不卡中文字幕 | 久久视频在线看 | 狠狠色婷婷狠狠狠亚洲综合 | 亚洲综合日韩精品欧美综合区 | 一区二区三区在线免费看 | 久久久久国产精品免费网站 | 亚洲狠狠网站色噜噜 | 青青青青手机在线视频观看国产 | 欧美一级全部免费视频 | 免费乱理伦片在线观看老妇 | 狠狠婷| 日韩欧美一二三区 | 天天舔天天射天天操 | 久久99精品视频 | 久草首页在线 | 狠狠色狠狠干 | 久草视频免费在线播放 | 国产亚洲午夜精品 | 国产成人综合亚洲欧洲色就色 | 国产一区免费观看 | 成人私人影院在线观看网址 | 关婷哪一级毛片高清免费看 | 亚洲不卡在线观看 | 在线观看视频国产 | 九九热视频免费观看 | 久久精品综合一区二区三区 | 久久青青草视频 | 精品久久久久久中文字幕欧美 | 日韩亚洲一区中文字幕 | 爱爱小视频免费体验区在线观看 | 亚洲偷自拍另类图片二区 | 夜夜摸天天操 |