解析用python实现学生选课系统及过程
发布时间:2022-01-11 18:51:58 所属栏目:语言 来源:互联网
导读:我们知道Python的功能是很强大的,能够实现多种管理系统,这篇就给大家分享用python怎样实现学生选课系统,下文有详细的实现过程及代码,感兴趣的朋友可以参考看看,接下来我们一起来了解一下吧。 一、实验目的 实现学生选课系统 二、实验环境 Python3.6 pym
我们知道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() (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |