我们知道Python的功能是很强大的,能够实现多种管理系统,这篇就给大家分享用python怎样实现学生选课系统,下文有详细的实现过程及代码,感兴趣的朋友可以参考看看,接下来我们一起来了解一下吧。
一、实验目的
实现学生选课系统
二、实验环境
Python3.6
pymysql(Python连接MySQL)
xlrd(操作Excel)
三、程序结构
1.首先运行First_run.py:
功能:创建数据库、表等信息
2.运行seconnd_run.py:
功能: 实现学生选课
3.账号密码.xlsx:
存放学生信息(可以存班级花名册)
如:
``
四、数据库结构
表之间的联系
五、各表功能
student_login:存放学生账号信息(直接导入班级花名册,具体看代码)
字段:
s_no:学生学号,
s_name:学生姓名,
s_login:学生账号,
s_pd:学生密码
course:存放课程信息
字段:
c_id:课程编号
c_name:课程名称
student_class:学生选课表,存放学生选课信息
字段:
s_no:学生学号(设置外键与student_login表s_no连接)
c_id:课程编号(设置外键与course表c_id连接)
admin_login:管理员信息表,存放管理员账号
字段:
a_no: 管理员编号
a_name: 管理员姓名
a_login: 管理员账号
a_pd: 管理员密码
六、代码部分
First_run.py代码如下:
import pymysql
import xlrd
def create_all():
try:
password = input('请输入mysql密码(root用户):')
db = pymysql.connect(host='localhost', user='root', password=password)
cursor = db.cursor()
except pymysql.err.OperationalError:
print('密码输入错误!')
else:
try:
sql = 'create database student charset utf8;'
cursor.execute(sql)
except pymysql.err.ProgrammingError:
print("Can't create database 'student' database exists!")
else:
sql0 = 'use student;'
# 创建课程表
sql1 = "CREATE TABLE course (c_id int(10) PRIMARY KEY AUTO_INCREMENT, c_name VARCHAR ( 30 ) NOT NULL)default charset utf8;"
# 创建学生账号表
sql2 = "create table student_login(s_no char(10), s_name varchar(30), s_login char(20), s_pd char(20) not null, primary key(s_no))
default charset utf8;"
# 创建学生选课表
sql3 = "CREATE TABLE student_class (s_no CHAR(10),c_id INT,CONSTRAINT FOREIGN KEY (s_no) REFERENCES student_login (s_no),CONSTRAINT
FOREIGN KEY (c_id) REFERENCES course (c_id),unique(s_no,c_id)) default charset utf8;" # unique(s_no,c_id))联合唯一,确保选课唯一
# 创建管理员账号表
sql4 = "create table admin_login(a_no char(10), a_name varchar(30), a_login char(10) unique, a_pd char(10) not null, primary key(a_no))
default charset utf8;"
cursor.execute(sql0)
cursor.execute(sql1)
cursor.execute(sql2)
cursor.execute(sql3)
cursor.execute(sql4)
db.commit()
print('Successful!')
def insert_student_login(db):
def open_excel():
try:
book = xlrd.open_workbook("账号密码.xlsx") # 文件名,把文件与py文件放在同一目录下
except:
print("Open excel file failed!")
else:
try:
sheet = book.sheet_by_name("Sheet1") # execl里面的sheet1
except:
print('No Sheet1')
else:
print('Yes')
return sheet
def insert_data():
sheet = open_excel()
cursor = db.cursor()
for i in range(1, sheet.nrows): # 第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1
s_no = str(sheet.cell(i, 0).value)[0:10] # 取第i行第0列
s_name = sheet.cell(i, 1).value # 取第i行第1列,下面依次类推
s_login = str(sheet.cell(i, 2).value)[0:10]
s_pd = str(sheet.cell(i, 3).value)[0:10]
# print(name)
# print(data)
# value = (name,data)
# print(value)
sql = "INSERT INTO student_login VALUES('%s','%s','%s','%s')" % (s_no, s_name, s_login, s_pd)
cursor.execute(sql) # 执行sql语句
db.commit()
insert_data()
# cursor.close() # 关闭连接
# db.close()#关闭数据
print("插入成功!")
def insert_admin_login(db):
try:
cursor = db.cursor()
sql = 'insert into admin_login values("1","admin","1","1")'
cursor.execute(sql)
db.commit()
except:
print('Insert admin_login Failed!!!')
else:
print('Successful!')
def insert_into_course(db):
try:
cursor = db.cursor()
sql = 'insert into course values(1,"高数"),(2,"大学英语");' # 默认插入两个课程供选择
cursor.execute(sql)
db.commit()
except:
print('Insert course Failed!')
else:
print('Successful!')
def main():
create_all()
try:
passwd = input('请输入MySQL密码:')
db = pymysql.connect(host="localhost", user="root", passwd=passwd, db="student", charset='utf8')
except:
print("Could not connect to mysql server!")
else:
insert_student_login(db)
insert_admin_login(db)
insert_into_course(db)
if __name__ == '__main__':
main()
second_run.py代码如下:
import pymysql
# 创建游标函数
def get_db():
try:
passwd = input('请输入MySQL密码:')
db = pymysql.connect('127.0.0.1', 'root', passwd, 'student')
except pymysql.err.OperationalError:
print('密码输入错误!Go Die!')
else:
return db
def get_cursor(db):
cursor = db.cursor()
return cursor
# 选择身份
def login(db, cursor):
menu_login()
i = 0
while True:
i += 1 # 设置循环,超过三次退出系统
login_select = input('请输入你的选项:')
if login_select == '1': # 这里数字为字符串类型,记得要引号!
student_login(db, cursor) # 跳入学生登录页面
elif login_select == '2':
admin_login(db, cursor) # 跳入管理员登录页面
else:
print('请输入正确的选项!>>>>>>>>请擦擦眼睛再重选--*--(^_^)--*-- :')
if i >= 3:
print('GoodBye了您啊!')
break
# 学生登录认证
def student_login(db,cursor):
print(' -----------------****----------^_^|-欢迎进入学生系统-|^_^----------****---------------------------- ')
l = 0
while True:
login = input('请输入你的账号:')
sql = "SELECT * FROM student_login where student_login.s_login='%s'" % login
cursor.execute(sql)
login_id = cursor.fetchall()
if len(login_id) == 0:
l += 1
print('账号不存在,请重新输入:')
if l >= 3:
print()
print('账号不存在,请联系管理员申请账号!')
exit()
大型站长资讯类网站! https://www.nzzz.com.cn