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)