学生管理系统

Published on with 0 views and 0 comments

python,以目前的能力编写一套实现学生信息增删改查的数据库系统。或许后续会不断提升不断完整的搞出这一套简单的系统(增删改查功能),还差得很多。加油……

  • 创建数据库和数据表;
mysql> create database student;
Query OK, 1 row affected (0.01 sec)
mysql> use student;
Database changed
mysql> create table students(id int primary key auto_increment,name varchar(30),sex varchar(30),num int) charset='utf8';
Query OK, 0 rows affected (0.00 sec)

学生管理系统

学生管理系统 v1.1

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @File  : mysqlinfo.py
# @Author: cuijianzhe
# @Date  : 
# @Desc  :

'''
基于数据库进行学生信息增删改查
学生管理系统V1.2
2019年8月3日15:13:57
编写者:QQ:598941324-读书
'''
import pymysql
import time
conInfo = '''
host='192.168.51.202', 
user='root', 
password='598941324', 
database='student', 
charset='utf8'
'''
class Student_Manager():
    def __init__(self):
        self.datainfo = conInfo
    @staticmethod
    # 内部方法,调用数据库
    def mysql_db(sql):
        #连接数据库参数
        db = pymysql.connect(
            host='192.168.51.202',
            user='root',
            password='598941324',
            database='student',
            charset='utf8'
        )
        #创建sql语句操作对象
        cursor = db.cursor()
        #执行 使用execute方法执行sql语句,相当于操作都在mysql命令中输入sql语句并回车
        cursor.execute(sql)
        #获取返回信息
        data = cursor.fetchall()
        #提交事务
        db.commit()
        #关闭连接
        cursor.close()
        db.close()
        return data

    def add_database(self):
        sql = '''create table students(
        id int primary key auto_increment,
        name varchar(30),
        age int,
        classroom int)'''
        Student_Manager.mysql_db(sql)

    def add(self):
        try:
            s_name = input('请输入你的名字:')
            s_sex = input('请输入你的年龄:')
            s_num = input('请输入你的学生(必须为int类型):')
            sql = "insert into students(name,age,classroom)value('%s','%s','%s')" % (s_name, s_sex, int(s_num))
            Student_Manager.mysql_db(sql)
            print(('''添加信息成功
                    学生姓名:{}
                    学生性别:{}
                    学生学号: {}''').format(s_name, s_sex, s_num))
        except ValueError:
            print('学生id输入有误(重新输入),请输入数字id。')

    def cha(self):
        try:
            s_name = input('请输入你的名字:')
            sql = "select * from students where name like'%s'"%(s_name)
            data = Student_Manager.mysql_db(sql)
            print(''' 
            你的相关信息如下: 
            id 姓名 年龄 学号''')
            xinxi = (''.join(str(i) for i in data)).replace('(','').replace(')','').replace(',','').replace('\'','').center(40)
            print(xinxi)
        except:
            print('输入有误或者账号不存在')

    def gai(self):
        while True:
            try:
                s_name = input('请输入你的名字:')
                sql = "select * from students where name like'%s'" % (s_name)
                data = Student_Manager.mysql_db(sql)[0]
                dat = ((''' 
                       你的当前信息为: 
                       id:%s 
                       姓名:%s 
                       年龄:%s 
                       学号:%s ''') % (data[0], data[1], data[2], data[3]))
                print(dat)
                choose = input('你是否要更改信息,是(Y|y)/否(N|n)')
                if choose == 'Y' or choose == 'y':
                    try:
                        last_name = input('请输入你的名字:')
                        last_sex = input('输入年龄:')
                        last_num = input('输入学号:')
                        str_id = data[0]
                        sql = "update students set name='%s',age='%s',classroom='%s' where id='%s'" % (
                            last_name, last_sex, last_num, str_id)
                        Student_Manager.mysql_db(sql)
                        dat2 = ('''修改信息成功,如下:
                        更新后学生姓名:%s
                        更新后学生性别:%s
                        更新后学生学号:%s''') % (last_name, last_sex, last_num)

                        print(dat2)
                        break
                    except:
                        print('输入有误或账号不存在')
                if choose == 'N' or choose == 'n':
                    break
                else:
                    print('输入有误,将退出……')
                    time.sleep(2)
                    break
            except:
                print('账号不存在或输入有误')
                break

    def shan(self):
        while True:
            try:
                s_name = input('请输入你的名字:')
                sql = "select * from students where name like'%s'" % (s_name)
                data = Student_Manager.mysql_db(sql)[0]
                dat = ((''' 
                你的当前信息为: 
                id:%s 
                姓名:%s 
                年龄:%s 
                学号:%s ''') % (data[0], data[1], data[2], data[3]))
                print(dat)
            except:
                print('输入有误或账号不存在,退出系统')
                break
            choose = input('你是否要删除信息,是(Y|y)/否(N|n)')
            if choose == 'Y' or choose == 'y':
                str_id = data[0]
                sql = "delete from students where id='%s'" % (str_id)
                Student_Manager.mysql_db(sql)
                print('信息删除成功,即将推出……')
                time.sleep(1)
                break
            if choose == 'N' or choose == 'n':
                break
            else:
                print('输入有误,将退出……')
                time.sleep(2)
                break

    def all(self):
        try:
            sql = "select * from students"
            data = Student_Manager.mysql_db(sql)
            xinxi = ('\n'.join(str(i) for i in data)).replace('(', '').replace(')', '').replace(',', '').replace('\'',
                                                                                                                 '')
            print(('''id 姓名 性别 学号\n{}''').format(xinxi))

        except:
            print('输入有误,账号不存在')

if __name__ == "__main__":
    manager = Student_Manager()
    while True:
        print(""" 
               到达主页,请选择对应序号: 
               1.添加学生信息 
               2.删除学生信息 
               3.修改学生信息 
               4.查询个人信息 
               5.显示所有学生信息 
               6.退出系统""")
        num = str(input('你输入的是:'))
        if num == '1':
            manager.add()
        if num == '2':
            manager.shan()
        if num == '3':
            manager.gai()
        if num == '4':
            manager.cha()
        if num == '5':
            manager.all()
        if num == '6':
            break

标题:学生管理系统
作者:cuijianzhe
地址:https://cuijianzhe.github.io/articles/2019/08/02/1564728341878.html