【python免費代碼】設計一個簡單的學生信息管理系統

  • 2022 年 4 月 21 日
  • 筆記

 


 

前言

設計一個簡單的學生信息管理系統,實現以下功能(bug) :

  1. 錄入學生信息,信息以文件方式存儲
  2. 以學生學號或者學生姓名為條件查詢該學生的信息,若沒存在該學生得有反饋
  3. 刪除學生信息,以學生學號為查詢條件,若不存在該學生得有反饋
  4. 修改學生信息,以學生學號為查詢條件,若不存在該學生得有反饋
  5. 統計學生總數
  6. 顯示文件中所有學生的全部記錄

一、理解

代碼如何實現呢?
思路和知識點如下:

    1. 文件存儲與關閉
    2. 函數的調用
    3. 文件操作

二、部分截圖展示

 

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

 


三、代碼

  1 import sys
  2 
  3 
  4 def studentDateInput(): # 學生信息錄入功能
  5     n = 0
  6     f = open("D:\\作業\\date\\studentsdate.txt",'a')
  7     studentNo = input("請輸入學生學號:")
  8     f1 = open("D:\\作業\\date\\studentsdate.txt", 'r')
  9     findStudent = f1.readlines()
 10     for line in findStudent:
 11         if studentNo  in line:
 12             print("庫中存在學號相同,錯誤404")
 13             n = n + 1
 14     if n==0:
 15             studentName = input("請輸入學生姓名:")
 16             studentMath = input("請輸入學生數學成績:")
 17             studentEnglish = input("請輸入學生英語成績:")
 18             studentChinese = input("請輸入學生語文成績:")
 19             studentPolicy = input("請輸入學生政治成績:")
 20             studentSum = int(studentEnglish) + int(studentMath) + int(studentPolicy) + int(studentChinese)
 21             studentInto = studentNo + '\t' + studentName + '\t' + studentMath + '\t' + studentEnglish + '\t' + studentChinese + '\t' +studentPolicy + '\t' + str(studentSum) + '\n'
 22             f.write(studentInto)
 23             print("信息錄入成功")
 24 
 25     f.close()
 26 
 27 # code by bug製造者BooST
 28 def checkStudentDate(): # 學生查詢功能
 29     n,m = 0,0
 30     f = open("D:\\作業\\date\\studentsdate.txt", 'r')
 31     findStudent = f.readlines()
 32     findOp = input("按學號查詢,請輸入 1 , 按姓名查詢,請輸入 2   請輸入:")
 33     if findOp == '1':
 34         findNo = input("請輸入所查詢的學生學號:")
 35         for line in findStudent:
 36             if findNo in line:
 37                 print(" 學號 ", end='\t')
 38                 print("姓名", end='\t')
 39                 print("數學", end='\t')
 40                 print("英語", end='\t')
 41                 print("語文", end='\t')
 42                 print("政治", end='\t')
 43                 print("總成績", end='\t')
 44                 print("\n")
 45                 print(line)
 46                 n = n + 1
 47         if n == 0:
 48             print("無該學生的數據!!!")
 49 
 50     elif findOp == '2':
 51         findName = input("請輸入所查詢的學生姓名:")
 52         for line in findStudent:
 53             if findName in line:
 54                 print(" 學號 ", end='\t')
 55                 print("姓名", end='\t')
 56                 print("數學", end='\t')
 57                 print("英語", end='\t')
 58                 print("語文", end='\t')
 59                 print("政治", end='\t')
 60                 print("總成績", end='\t')
 61                 print("\n")
 62                 print(line)
 63                 m = m + 1
 64         if m == 0:
 65             print("無該學生的數據!!!")
 66 
 67     else:
 68         print("輸入有誤")
 69 
 70     f.close()
 71 
 72 def delStudent():# 刪除學生信息功能
 73     n = 0
 74     f1 = open("D:\\作業\\date\\studentsdate.txt", 'r')# f1 源文件
 75     findStudent = f1.readlines()
 76     f2 = open("D:\\作業\\date\\studentsdate.txt", 'w')# f2 修改後的文件
 77     delNo = input("請輸入要刪除的學生號數:")
 78     for line in findStudent:
 79         if delNo in line:
 80             continue
 81         f2.write(line)
 82         n = n + 1
 83         if n == len(findStudent):
 84             print("無該學生信息")
 85         else:
 86             print("學號{0}已經被刪除".format(delNo))
 87 
 88         f1.close()
 89         f2.close()
 90 
 91 
 92 def modify(): # 修改
 93     n = 0 # 用於遍歷
 94     mod_studentNo = input("請輸入你要修改的學生的學號:")
 95     f1 = open("D:\\作業\\date\\studentsdate.txt", 'r') # f1 源文件
 96     line_modify = f1.readlines()
 97     f2 = open("D:\\作業\\date\\studentsdate.txt", 'w') # f2 修改後的文件
 98     for line in line_modify: # 遍歷
 99         if mod_studentNo in line:
100             print("查詢成功")# code by bug製造者BooST
101             studentName = input("請輸入學生姓名:")
102             studentMath = input("請輸入學生數學成績:")
103             studentEnglish = input("請輸入學生英語成績:")
104             studentChinese = input("請輸入學生語文成績:")
105             studentPolicy = input("請輸入學生政治成績:")
106             studentSum = int(studentEnglish) + int(studentMath) + int(studentPolicy) + int(studentChinese)
107             studentInto = mod_studentNo + '\t' + studentName + '\t' + studentMath + '\t' + studentEnglish + '\t' + studentChinese + '\t' + studentPolicy + '\t' + str(studentSum) + '\n'
108             f2.write(studentInto)
109             print("修改成功")
110             continue
111         f2.write(line) # w方式打開的文件,會覆蓋原有的文件,故要把原來的數據再次寫入
112         n = n + 1
113     if n == len(line_modify):
114         print("庫中無該所查詢的學生數據")
115     else:
116         print("學號為{0}的學生信息已經修改".format(mod_studentNo))
117 
118     f1.close()
119     f2.close()
120 def sumStudentsNumber(): # 統計學生總數
121     f1 = open("D:\\作業\\date\\studentsdate.txt", 'r')  # f1 源文件
122     line_modify = f1.readlines()
123     print("庫中有{0}名學生的記錄".format(len(line_modify)))
124     f1.close()
125 # code by bug製造者BooST
126 
127 
128 def checkEveryStudents(): # 顯示所有學生的記錄
129     print(" 學號 ",end='\t')
130     print("姓名", end='\t')
131     print("數學", end='\t')
132     print("英語", end='\t')
133     print("語文", end='\t')
134     print("政治", end='\t')
135     print("總成績", end='\t')
136     print("\n")
137     f = open("D:\\作業\\date\\studentsdate.txt", 'r')
138     findStudent = f.readlines()
139     for line in findStudent:
140         print(line)
141     f.close()# code by bug製造者BooST
142 
143 def main():
144     y = 1
145     while y:
146         print("*" * 30)
147         print("     請選擇功能:")
148         print("              1.錄入學生信息")
149         print("              2.單體學生信息查詢")
150         print("              3.刪除學生信息")
151         print("              4.修改學生信息")
152         print("              5.統計學生總數")
153         print("              6.打印總體學生信息")
154         print("              7.退出程序")
155         print("*" * 30)
156         op = input("                請輸入:")
157 # code by bug製造者BooST
158         if op == '1':
159             studentDateInput()
160         elif op == '2':
161             checkStudentDate()
162         elif op == '3':
163             delStudent()
164         elif op == '4':
165              modify()
166         elif op == '5':
167              sumStudentsNumber()
168         elif op == '6':
169              checkEveryStudents()
170         elif op == '7':
171             print("歡迎您再次使用")
172             y = 0
173         else:
174              print("錯誤操作,被迫退出")
175              sys.exit()
176 
177 if __name__ == '__main__':
178     main()
179 # code by bug製造者BooST

四、總結

利用

    • 文件存儲與關閉
    • 函數的調用
    • 文件操作
      這3點知識點就可以輕鬆應對