python實現學生資訊管理系統(從淺到深)
題目
本文只是一個小練習題,功能不是很多,只是簡單實現增刪改查
使用自定義函式,完成對程式的模組化
學生資訊至少包含:姓名、年齡、學號,除外可以適當新增自己想要的資訊
必須完成系統的:新增、刪除、修改、查詢、退出
v1.0版
通過list和字典儲存
# -*- coding:utf-8 -*-
# 學生管理系統v1.0
# 新增學生資訊
def addStu(array):
"新增學生資訊"
stuDict = {} #定義字典儲存單個學生資訊
try:
id = input("請輸入學生學號:")
for i in range(len(array)):
if array[i]['id'] == id:
print("該學號已存在,不能重複新增")
return
name = input("請輸入學生姓名:")
age = input("請輸入學生年齡:")
stuDict['id'] = id
stuDict['name'] = name
stuDict['age'] = age
array.append(stuDict) #把單個學生新增到總列表中
print("新增成功")
except BaseException:
print("發生異常,新增失敗")
# 刪除學生資訊
def delStu(array):
"刪除學生資訊"
try:
id = input("請輸入要刪除的學生學號:")
for i in range(len(array)):
if array[i]['id'] == id:
del array[i]
return 0
return 1
except BaseException:
print("發生異常,刪除失敗")
return 2
# 修改學生資訊
def updateStu(array):
"修改學生資訊"
try:
id = input("請輸入要修改的學生學號:")
for i in range(len(array)):
if array[i]['id'] == id:
name = input("請輸入要修改的學生姓名:")
age = input("請輸入要修改的學生年齡:")
array[i]['name'] = name
array[i]['age'] = age
print("修改成功")
return
print("找不到該學號,沒法修改")
except BaseException:
print("發生異常,修改失敗")
# 查詢學生資訊
def selectStu(array):
"查詢學生資訊"
try:
id = input("請輸入要查詢的學生學號:")
for i in range(len(array)):
if array[i]['id'] == id:
print("查詢到的學生資訊:",array[i])
return
print("查詢失敗,查不到該學生資訊")
return
except BaseException:
print("發生異常,查詢失敗")
return
print("=="*30)
print("歡迎使用學生管理系統")
print("1.新增學生資訊")
print("2.刪除學生資訊")
print("3.修改學生資訊")
print("4.查詢學生資訊")
print("5.退出系統")
print("=="*30)
flag = 0
array = [] #定義list用於儲存學生資訊
while flag != 1:
step = input("請輸入你的操作:")
try:
step = int(step)
except BaseException:
print("發生異常,輸入的不是數字型別")
break
if step == 1:
addStu(array)
print("學生資訊列印:", array)
elif step == 2:
num = delStu(array)
if num == 0:
print("刪除成功")
elif num == 1 or num == 2:
print("刪除失敗")
print("學生資訊列印:", array)
elif step == 3:
updateStu(array)
print("學生資訊列印:", array)
elif step == 4:
selectStu(array)
else:
flag = 1
print("退出系統成功")
執行結果:
============================================================
歡迎使用學生管理系統
1.新增學生資訊
2.刪除學生資訊
3.修改學生資訊
4.查詢學生資訊
5.退出系統
============================================================
請輸入你的操作:1
請輸入學生學號:123
請輸入學生姓名:ww
請輸入學生年齡:11
新增成功
學生資訊列印: [{'id': '123', 'age': '11', 'name': 'ww'}]
請輸入你的操作:1
請輸入學生學號:111
請輸入學生姓名:qq
請輸入學生年齡:12
新增成功
學生資訊列印: [{'id': '123', 'age': '11', 'name': 'ww'}, {'id': '111', 'age': '12', 'name': 'qq'}]
請輸入你的操作:3
請輸入要修改的學生學號:111
請輸入要修改的學生姓名:wq
請輸入要修改的學生年齡:14
修改成功
學生資訊列印: [{'id': '123', 'age': '11', 'name': 'ww'}, {'id': '111', 'age': '14', 'name': 'wq'}]
請輸入你的操作:4
請輸入要查詢的學生學號:111
查詢到的學生資訊: {'id': '111', 'age': '14', 'name': 'wq'}
請輸入你的操作:2
請輸入要刪除的學生學號:111
刪除成功
學生資訊列印: [{'id': '123', 'age': '11', 'name': 'ww'}]
請輸入你的操作:5
退出系統成功
Process finished with exit code 0
v2.0版
通過檔案儲存
# -*- coding:utf-8 -*-
# 學生管理系統v2.0
import os
import json
# 新增學生資訊
def addStu(array):
"新增學生資訊"
stuDict = {} # 定義字典儲存單個學生資訊
id = input("請輸入學生學號:")
for i in range(len(array)):
if array[i]['id'] == id:
print("該學號已存在,不能重複新增")
return
name = input("請輸入學生姓名:")
age = input("請輸入學生年齡:")
stuDict['id'] = id
stuDict['name'] = name
stuDict['age'] = age
array.append(stuDict) # 把單個學生新增到總列表中
print("新增成功")
# 刪除學生資訊
def delStu(array):
"刪除學生資訊"
id = input("請輸入要刪除的學生學號:")
for i in range(len(array)):
if array[i]['id'] == id:
del array[i]
return 0
return 1
# 修改學生資訊
def updateStu(array):
"修改學生資訊"
id = input("請輸入要修改的學生學號:")
for i in range(len(array)):
if array[i]['id'] == id:
name = input("請輸入要修改的學生姓名:")
age = input("請輸入要修改的學生年齡:")
array[i]['name'] = name
array[i]['age'] = age
print("修改成功")
return
print("找不到該學號,沒法修改")
# 查詢學生資訊
def selectStu(array):
"查詢學生資訊"
id = input("請輸入要查詢的學生學號:")
for i in range(len(array)):
dict1 = array[i]
if dict1['id'] == id:
print("查詢到的學生資訊:",array[i])
return
print("查詢失敗,查不到該學生資訊")
return
print("=="*30)
print("歡迎使用學生管理系統")
print("1.新增學生資訊")
print("2.刪除學生資訊")
print("3.修改學生資訊")
print("4.查詢學生資訊")
print("5.退出系統")
print("=="*30)
flag = 0
array = [] #定義list用於儲存學生資訊
filename = 'write_data.txt' #檔名
if not os.path.exists(filename) : # 判斷檔案是否存在
file = open(filename, 'w') # 不存在就建立檔案
file.close()
f = open(filename, "r")
content = f.readlines()
print("檔案內容:",content)
array.extend(content)
array_temp = [] # 臨時變數
for i in range(len(array)): # 遍歷轉成字典
print("第"+str(i)+"行:", array[i])
if isinstance(array[i], str): # 判斷是否為字串
dict1 = json.loads(array[i].replace("'", "\"")) # 字串轉字典(json)
array_temp.append(dict1)
del array
array = array_temp
while flag != 1:
# try:
step = input("請輸入你的操作:")
step = int(step)
if step == 1:
addStu(array)
print("學生資訊列印:", array)
elif step == 2:
num = delStu(array)
if num == 0:
print("刪除成功")
elif num == 1 or num == 2:
print("刪除失敗")
print("學生資訊列印:", array)
elif step == 3:
updateStu(array)
print("學生資訊列印:", array)
elif step == 4:
selectStu(array)
elif step == 5:
flag = 1
with open(filename, 'w') as f: # 如果filename不存在會自動建立, 'w'表示寫資料,寫之前會清空檔案中的原有資料!
for i in range(len(array)):
if i == len(array)-1 :
f.write(str(array[i]).replace("\n", ""))
else:
f.write(str(array[i]).replace("\n", "") + "\n")
f.close()
else:
print("輸入指令錯誤,請重新輸入!!")
''' except BaseException as result:
flag = 1
with open(filename, 'w') as f: # 如果filename不存在會自動建立, 'w'表示寫資料,寫之前會清空檔案中的原有資料!
for i in range(len(array)):
if i== len(array)-1 :
f.write(str(array[i]).replace("\n", ""))
else:
f.write(str(array[i]).replace("\n", "") + "\n")
f.close()
print("發生異常")
print("異常資訊是:" , result)'''
print("退出系統成功")
操作跟1.0版就不演示了,檔案儲存內容如下:
{'name': 'tom', 'id': '123', 'age': '15'}
{'name': '111', 'id': '111', 'age': '111'}
{'name': '11', 'age': '11', 'id': '145'}
{'name': '444', 'age': '444', 'id': '444'}
v3.0版
使用學生類替換字典儲存學生資訊
# -*- coding:utf-8 -*-
# 學生管理系統v3.0
import os
#定義學生類
class Student:
#類似java的構造器
def __init__(self,id,name,age):
self.id = id
self.name = name
self.age = age
#相當於java的toString()方法
def __str__(self):
#msg = "{'id':" + "'"+self.id +"'"+ ",'name':" + "'" +self.name + "'" + ",'age':" + "'" + self.age+"'}"
msg = "學生資訊:id=" + self.id + ",name=" + self.name + ",age=" + self.age
return msg
#獲取id
def getId(self):
return self.id
#獲取name
def getName(self):
return self.name
#獲取age
def getAge(self):
return self.age
#設定name
def setName(self,name):
self.name = name
#設定age
def setAge(self,age):
self.age = age
# 新增學生資訊
def addStu(array):
"新增學生資訊"
id = input("請輸入學生學號:")
for i in range(len(array)):
stu2 = array[i]
if id == stu2.getId():
print("該學號已存在,不能重複新增")
return
name = input("請輸入學生姓名:")
age = input("請輸入學生年齡:")
stu = Student(id,name,age)
array.append(stu) # 把單個學生新增到總列表中
print("新增成功:",stu)
# 刪除學生資訊
def delStu(array):
"刪除學生資訊"
id = input("請輸入要刪除的學生學號:")
for i in range(len(array)):
stu2 = array[i]
if id == stu2.getId():
del array[i]
return 0
return 1
# 修改學生資訊
def updateStu(array):
"修改學生資訊"
id = input("請輸入要修改的學生學號:")
for i in range(len(array)):
stu2 = array[i]
if id == stu2.getId():
name = input("請輸入要修改的學生姓名:")
age = input("請輸入要修改的學生年齡:")
stu2.setName(name)
stu2.setAge(age)
print("修改成功")
return
print("找不到該學號,沒法修改")
# 查詢學生資訊
def selectStu(array):
"查詢學生資訊"
id = input("請輸入要查詢的學生學號:")
for i in range(len(array)):
stu2 = array[i]
if id == stu2.getId():
print("查詢到的學生資訊:",stu2)
return
print("查詢失敗,查不到該學生資訊")
return
#列印學生資訊
def printStuInfo(array):
for i in range(len(array)):
stu = array[i]
print(stu)
print("=="*30)
print("歡迎使用學生管理系統")
print("1.新增學生資訊")
print("2.刪除學生資訊")
print("3.修改學生資訊")
print("4.查詢學生資訊")
print("5.退出系統")
print("=="*30)
flag = 0
array = [] #定義list用於儲存學生資訊
filename = 'write_data.txt' #檔名
if not os.path.exists(filename) : # 判斷檔案是否存在
file = open(filename, 'w') # 不存在就建立檔案
file.close()
f = open(filename, "r")
content = f.readlines()
print("檔案內容:",content)
array.extend(content)
array_temp = [] # 臨時變數
for i in range(len(array)): # 遍歷轉成學生物件
print("第"+str(i)+"行:", array[i])
if isinstance(array[i], str): # 判斷是否為字串
strArray = str(array[i]).split(",")
id = strArray[0]
name = strArray[1]
age = strArray[2].replace("\n","")
student = Student(id,name,age)#建立學生物件
array_temp.append(student)
del array
array = array_temp
while flag != 1:
step = input("請輸入你的操作:")
step = int(step)
if step == 1:
addStu(array)
#print("學生資訊列印:", array)
elif step == 2:
num = delStu(array)
if num == 0:
print("刪除成功")
elif num == 1 or num == 2:
print("刪除失敗")
printStuInfo(array)
elif step == 3:
updateStu(array)
printStuInfo(array)
elif step == 4:
selectStu(array)
elif step == 5:
flag = 1
with open(filename, 'w') as f: # 如果filename不存在會自動建立, 'w'表示寫資料,寫之前會清空檔案中的原有資料!
for i in range(len(array)):
if i == len(array)-1 :
stu =array[i]
f.write(stu.getId() + ","+stu.getName()+","+stu.getAge())
else:
stu = array[i]
f.write(stu.getId() + ","+stu.getName()+","+stu.getAge() + "\n")
f.close()
else:
print("輸入指令錯誤,請重新輸入!!")
print("退出系統成功")
v4.0版
把學生資訊儲存到mysql資料庫中
第一步建立表
CREATE TABLE `stu` (
`id` varchar(10) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`age` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
下面是python程式碼:
需要安裝pymysql模組,
執行安裝命令是:
pip install PyMySQL
可參考學習連結:http://www.runoob.com/python3/python3-mysql.html
# -*- coding:utf-8 -*-
# 學生管理系統v4.0
import os
import pymysql
#定義學生類
class Student:
#類似java的構造器
def __init__(self,id,name,age):
self.id = id
self.name = name
self.age = age
#相當於java的toString()方法
def __str__(self):
msg = "學生資訊:id=" + self.id + ",name=" + self.name + ",age=" + self.age
return msg
#獲取id
def getId(self):
return self.id
#獲取name
def getName(self):
return self.name
#獲取age
def getAge(self):
return self.age
#設定name
def setName(self,name):
self.name = name
#設定age
def setAge(self,age):
self.age = age
# 新增學生資訊
def addStu():
"新增學生資訊"
id = input("請輸入學生學號:")
conn = pymysql.connect(host='localhost', port=3306, db='test', user='root', passwd='123456', charset='utf8')
cursor = conn.cursor()
params = [id]
sql = "select * from stu where id=%s"
cursor.execute(sql,params)
stu = cursor.fetchone()
print("sql返回值:" ,stu)
if stu != None:
if id == stu[0]:
print("該學號已存在,不能重複新增")
conn.close()
return
name = input("請輸入學生姓名:")
age = input("請輸入學生年齡:")
params = [id,name,age]
sql = "insert into stu(id,name,age) value(%s,%s,%s)"
cursor.execute(sql, params) # 把單個學生新增到總列表中
# 向資料庫提交
conn.commit()
# 關閉連線
conn.close()
print("新增成功:")
# 刪除學生資訊
def delStu():
"刪除學生資訊"
id = input("請輸入要刪除的學生學號:")
conn = pymysql.connect(host='localhost', port=3306, db='test', user='root', passwd='123456', charset='utf8')
cursor = conn.cursor()
params = [id]
sql = "delete from stu where id=%s"
try:
cursor.execute(sql, params)
# 向資料庫提交
conn.commit()
conn.close()
return 0
except Exception as e:
conn.rollback()
conn.close()
print(e)
return 1
# 修改學生資訊
def updateStu():
"修改學生資訊"
id = input("請輸入要修改的學生學號:")
conn = pymysql.connect(host='localhost', port=3306, db='test', user='root', passwd='123456', charset='utf8')
cursor = conn.cursor()
params = [id]
sql = "select * from stu where id=%s"
cursor.execute(sql, params)
stu = cursor.fetchone()
if stu != None:
if id == stu[0]:
name = input("請輸入要修改的學生姓名:")
age = input("請輸入要修改的學生年齡:")
sql = "update stu set name=%s,age=%s where id=%s"
params = [name,age,id]
try:
cursor.execute(sql, params)
conn.commit()
conn.close()
print("修改成功")
except Exception as e1:
# 發生錯誤時回滾
conn.rollback()
conn.close()
print("修改失敗")
print(e1)
return
print("找不到該學號,沒法修改")
# 查詢學生資訊
def selectStu():
"查詢學生資訊"
id = input("請輸入要查詢的學生學號:")
conn = pymysql.connect(host='localhost', port=3306, db='test', user='root', passwd='123456', charset='utf8')
cursor = conn.cursor()
params = [id]
sql = "select * from stu where id=%s"
cursor.execute(sql, params)
stu = cursor.fetchone()
if stu != None:
student = Student(stu[0],stu[1],stu[2])
print("查詢到的學生資訊:",student)
else:
print("查詢失敗,查不到該學生資訊")
print("=="*30)
print("歡迎使用學生管理系統")
print("1.新增學生資訊")
print("2.刪除學生資訊")
print("3.修改學生資訊")
print("4.查詢學生資訊")
print("5.退出系統")
print("=="*30)
flag = 0
while flag != 1:
step = input("請輸入你的操作:")
step = int(step)
if step == 1:
addStu()
elif step == 2:
num = delStu()
if num == 0:
print("刪除成功")
elif num == 1:
print("刪除失敗")
elif step == 3:
updateStu()
elif step == 4:
selectStu()
elif step == 5:
flag = 1
else:
print("輸入指令錯誤,請重新輸入!!")
print("退出系統成功")
相關文章
- 教你如何運用python實現學生資訊管理系統Python
- 教你如何用python實現學生通訊錄管理系統Python
- Python學生資訊管理系統-簡易版(Python基礎)Python
- Python編寫簡單的學生資訊管理系統Python
- 學生選題資訊管理系統
- 學生資訊管理系統用例
- Python專案開發案例(一)————學生資訊管理系統Python
- 基於php學生資訊管理系統PHP
- Java簡單學生資訊管理系統Java
- Python簡易學生管理系統Python
- python基礎(16):學生資訊管理系統——Python編寫(附全部程式碼)Python
- 基於jsp學生資訊管理系統的設計與實現(含原始檔)JS
- 基於java的大學生健康資訊管理系統的設計與實現Java
- 某學校的學生資訊管理系統網站網站
- C++實現控制檯學生學籍管理系統C++
- 31 天,從淺到深輕鬆學習 KotlinKotlin
- 畢業設計!Python實現學生教師刷臉簽到系統Python
- java+SQL做學生資訊管理系統(增刪改查)學生新作JavaSQL
- 學生管理系統
- python mysql實現學生成績管理系統蠖脲PythonMySql
- 純JavaScript實現一個帶cookie的學生管理系統JavaScriptCookie
- 就業資訊管理系統設計與實現就業
- 醫學實驗室資訊管理系統原始碼原始碼
- 資料庫課程設計—超市零售資訊管理系統(Python實現)資料庫Python
- 學生管理系統(springMVC)SpringMVC
- Java入門專案:學生資訊管理系統V1Java
- [Python急救站]簡單的學生管理系統Python
- 【C++】學生管理系統C++
- JAVA學生宿舍管理系統Java
- 微課|中學生可以這樣學Python(例11.3):tkinter通訊錄管理系統3Python
- 微課|中學生可以這樣學Python(例11.3):tkinter通訊錄管理系統4Python
- 微課|中學生可以這樣學Python(例11.3):tkinter通訊錄管理系統2Python
- 微課|中學生可以這樣學Python(例11.3):tkinter通訊錄管理系統1Python
- 微課|中學生可以這樣學Python(例9.2):無介面通訊錄管理系統Python
- 基於“結構體”實現簡易版學生管理系統(Golang)結構體Golang
- Java之學生資訊管理系統升級版(資料庫程式設計)Java資料庫程式設計
- 通訊錄管理系統(C++實現)C++
- 老Python帶你從淺入深探究TuplePython