You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
StuSystem/X1/StuSys_X1_3.py

86 lines
3.8 KiB

1 year ago
# encoding: utf8
import time
import pymysql
import random
last_names = "李,王,张,刘,陈,杨,黄,赵,周,吴,徐,孙,朱,马,胡,郭,林,何,高,梁,郑,罗,宋,谢,唐,韩,曹,许,邓,萧,冯,曾,程,蔡,彭,潘,袁,于,董,余,苏,叶,吕,魏,蒋,田,杜,丁,沈,姜,范,江,傅,钟,卢,汪,戴,崔,任,陆,廖,姚,方,金,邱,夏,谭,韦,贾,邹,石,熊,孟,秦,阎,薛,侯,雷,白,龙,段,郝,孔,邵,史,毛,常,万,顾,赖,武,康,贺,严,尹,钱,施,牛,洪,龚"
last_names_list = last_names.split("")
course_names = "语文、数学、外语、历史、思想政治、地理、 化学、物理、生物、体育、美术、音乐、技术、微积分、体育、毛泽东思想概论、思想道德修养、高等数学、线性代数、概率论与数理统计、离散数学、计算机原理、人工智能、程序设计基础、面向对象程序设计、数字逻辑电路、电路电子技术、数据结构与算法、WEB程序设计、计算机组成与结构、操作系统、数据库系统原理、编译原理、计算机网络"
course_names_list = course_names.split("")
5 months ago
# 随机生成10000条学生表数据
def student_random_record(conn, cursor):
1 year ago
"""
# 随机生成10000条学生表数据
:return:
"""
year = time.localtime().tm_year # 获取当前系统时间的年份
num = 1
class_num = 1
class_id = 1
for i in range(10000):
sid = "%d" % year + "%04d" % num
sname = random.choice(last_names_list) + sid
ssex = random.choice(["", ""])
sage = random.randint(15, 35)
sclass = "%d" % year + "%02d" % class_id
sql = f"INSERT INTO student VALUES ('{sid}', '{sname}', '{ssex}', {sage}, '{sclass}')"
cursor.execute(sql)
sid_list.append(sid)
5 months ago
if num == 2500: # 每年学生数2500
1 year ago
year += 1
num = 1
class_id = 1
5 months ago
if class_num == 30: # 班级学生数30
1 year ago
class_id += 1
class_num = 1
num += 1
class_num += 1
conn.commit()
5 months ago
def course_random_record(conn, cursor):
1 year ago
"""
随机生成1000条课程表数据
:return:
"""
hours = [i for i in range(8, 192 + 1, 8)]
for i in range(1000):
cid = "%03d" % (i + 1)
5 months ago
cname = random.choice(course_names_list)# course_names_list为样例课程名列表
1 year ago
hour = random.choice(hours)
credit = round(hour / 16, 2)
sql = f"INSERT INTO course (cid, cname, credit, chours) VALUES ('{cid}', '{cname}', {credit}, {hour})"
cursor.execute(sql)
cid_list.append(cid)
conn.commit()
5 months ago
def sc_random_record(conn, cursor):
1 year ago
"""
随机生成10000 * 30条以上选课表数据
:return:
"""
for sid in sid_list:
year = int(sid[:4]) # 取sid的前四位学年
5 months ago
for i in range((year - time.localtime().tm_year + 1) * 16): # 学习课程按学年有16、32、48、64门按学年递增分布
1 year ago
cid = random.choice(cid_list)
score = random.randint(0, 101)
sql = f"INSERT INTO sc(sid, cid, score) VALUES ('{sid}', '{cid}', {score})"
cursor.execute(sql)
conn.commit()
if __name__ == '__main__':
5 months ago
# 创建mysql连接
conn = pymysql.connect(user="root", password="Wyz010810", database="SCT", host="127.0.0.1", port=3306)
# 创建游标
cursor = conn.cursor()
sid_list = [] # 用于存储生成的sid
cid_list = [] # 用于存储生成的cid
student_random_record(conn, cursor)
course_random_record(conn, cursor)
sc_random_record(conn, cursor)
# 关闭数据库连接
cursor.close()
conn.close()