python信息管理系统实战数据_python 入门实战 - 学生管理系统

开篇

最近在家闲来无事,入门了 python 语言。因为本人一直从事的 Java 开发,所以学起来容易许多。学习完后,就顺手做了一个学生管理系统(大学课设必备~~),来巩固了一下语法,下面会主要介绍下环境部署以及管理系统(代码在文末)。

附学习教程:

正文

基本环境

Mac OS + python3 + mysql5.6 + Visual Studio Code

上面是我的开发环境,依据下方自行选择

操作系统 必备, MacOS , windows , linux 都是 ok 的

mysql 非必备, 我的管理系统用到了数据库,所以才装的

Ide 必备, 选择 vscode 单纯是个人喜好 ,你也可以选择 pycharm (跟 idea 同家公司),nodepad++ 等任意一款工具,甚至 vim 编辑器

另附 :

mac 安装 python3 的一种方式 brew install python3

安装 mysql 驱动 python3 -m pip install pymysql

(你可能还会看到下面这种, python3 -m pip install mysql-connector 一开始用的时候踩了几个坑,就放弃了这个)

学生管理系统简介

顾名思义就是对学生进行增删改查,学生信息存储在 mysql 数据库中,做这个系统主要目的是练习巩固基本语法,所以在逻辑处理上肯定不会特别严谨,甚至没怎么考虑逻辑问题。

用到的 python 语法

循环

条件分支

集合

类定义

函数定义

模块管理

打印语句

注释

代码简介

主要定义了三个类, 详情看文末代码(不要太在意 类名,变量名,函数名的命名风格,还没看过 python 代码规范)

MysqlDb 操作数据库(增删改查)

StudentInfoPrint 打印学生信息(打印单条,打印列表)

StudentSystem 学生管理 (程序入口类)

总结

有一句话说的好,语言都是相通的。当你熟悉了一门编程语言后,再去学习其他语言就会事半功倍。当然要想真正掌握一门语言需要时间的磨练。所谓入门就是掌握基本语法,python 中还有很多高级特性需要学习,比如 IO,网络编程,线程,web开发等等。另外就是只有更多的实战,才能掌握那些知识点,光看是不行的。

附: 代码及数据库脚本

数据库脚本

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

DROP TABLE IF EXISTS `tb_student`;

CREATE TABLE `tb_student` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`name` varchar(20) COLLATE utf8mb4_bin DEFAULT NULL,

`sex` varchar(2) COLLATE utf8mb4_bin DEFAULT NULL,

`birthday` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

SET FOREIGN_KEY_CHECKS = 1;

代码

from datetime import datetime

import pymysql

'''

数据库工具类,提供增删改查操作

'''

class MysqlDb:

def __init__(self, host, username, password, db_name):

self.conn = pymysql.connect(

host=host, # 数据库主机地址

user=username, # 数据库用户名

passwd=password, # 数据库密码

database=db_name # 数据库

)

self.my_cursor = self.conn.cursor()

# 插入一条数据

def insertOne(self, sql, params):

self.my_cursor.execute(sql, params)

self.conn.commit()

return self.my_cursor.rowcount

# 查询全部

# TODO self.get_cursor().execute(sql) self.get_cursor().fetchall(), 报错

def findAll(self, sql):

self.my_cursor.execute(sql)

return self.my_cursor.fetchall()

# 删除一条数据

def deletebyId(self, sql, id):

self.my_cursor.execute(sql, id)

self.conn.commit()

# 根据参数查询

def findByParams(self, sql, params):

self.my_cursor.execute(sql, params)

return self.my_cursor.fetchall()

# 更新单条数据

def updateOne(self, sql, params):

self.my_cursor.execute(sql, params)

self.conn.commit()

'''

格式化输出学生信息

可以打印单条,也可以打印多条

'''

class StudentInfoPrint:

# 打印单个学生信息

def beauty_print_one(self, stu):

print(f"\t\t{stu[0]} | {stu[1]} | {stu[2]} | {stu[3]}")

# 打印学生列表

def beauty_print_list(self, student_list):

print(f"\t\t序号| 姓名 | 性别 | 生日")

for stu in student_list:

self.beauty_print_one(stu)

'''

学生信息管理类

'''

class StudentSystem:

def __init__(self):

self.data = []

self.mysql_db = MysqlDb('localhost','root', '123456', 'student_sys')

self.my_print = StudentInfoPrint()

# 显示菜单

def show_menu(self):

print("""

-- 1.查询所有学生 --

-- 2.添加学生信息 --

-- 3.修改学生信息 --

-- 4.删除学生信息 --

-- 5.查询学生信息 --

-- 0.退出系统 --

""")

# 显示所有学生信息

def show_all(self):

student_list = self.mysql_db.findAll('select * from tb_student')

self.my_print.beauty_print_list(student_list)

# 添加学生信息

def add_student(self):

name = input('请输入姓名:')

sex = input('请输入性别:')

birthday = input('请输入生日:')

insert_sql = 'insert into tb_student(name, sex, birthday) values(%s, %s, %s)'

sql_params = (name, sex, birthday)

rowcount = self.mysql_db.insertOne(insert_sql, sql_params)

if rowcount == 1:

print("添加成功")

# 根据学生姓名查询学生信息

def find_byname(self, keyword):

select_sql = 'select * from tb_student where name like %s'

student_list = self.mysql_db.findByParams(select_sql, '%'+keyword+'%')

return student_list

# 修改学生信息

def modify_student(self):

keyword = input('请输入要修改的学生姓名:')

student_list = self.find_byname(keyword)

if student_list:

if len(student_list) == 1:

student_id = student_list[0][0]

else:

self.my_print.beauty_print_list(student_list)

student_id = input('查询出多条结果,请输入要修改的学生 id: ')

# 执行修改操作

option = input('请选择要修改的信息,1. 姓名 | 2. 性别 | 3. 生日 : ')

if option == '1':

keyword = input('请输入要修改的姓名:')

update_sql = 'update tb_student set name=%s where id=%s'

elif option == '2':

keyword = input('请输入要修改的性别:')

update_sql = 'update tb_student set sex=%s where id=%s'

elif option == '3':

keyword = input('请输入要修改的生日:')

update_sql = 'update tb_student set birthday=%s where id=%s'

sql_params = (keyword, student_id)

self.mysql_db.updateOne(update_sql, sql_params)

else:

print('查无此人')

# 删除学生信息

def del_student(self):

keyword = input('请输入要删除的学生姓名:')

student_list = self.find_byname(keyword)

if student_list:

student_id = ''

if len(student_list) == 1:

student_id = student_list[0][0]

else:

self.my_print.beauty_print_list(student_list)

student_id = input('查处多条记录,请输入要删除的学生 id: ')

# 执行删除操作

self.mysql_db.deletebyId('delete from tb_student where id=%s', student_id)

else:

print('查询结果为空!')

# 查询并打印学生列表

def find_and_print(self):

name = input('请输入要查询的学生姓名: ')

student_list = self.find_byname(name)

self.my_print.beauty_print_list(student_list)

# 执行对应的操作

def execute_operation(self, op):

if op == '1':

self.show_all()

elif op == '2':

self.add_student()

elif op == '3':

self.modify_student()

elif op == '4':

self.del_student()

elif op == '5':

self.find_and_print()

elif op == '0':

print('已退出')

exit(0)

# 启动入口函数

def start(self):

while True:

self.show_menu()

op = input("请输入要执行的操作序号: ")

self.execute_operation(op)

if __name__ == '__main__':

app = StudentSystem()

app.start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值