本文只是一个小练习题,功能不是很多,只是简单实现增删改查
使用自定义函数,完成对程序的模块化
学生信息至少包含:姓名、年龄、学号,除外可以适当添加自己想要的信息
必须完成系统的:添加、删除、修改、查询、退出
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("退出系统成功")