(一):程序介绍和流程图
(二):主要文件main.py
(三):基础文件basics.py
(四):管理学生信息manage.py
(五):查询学生信息query.py
(六):导入数据文件import_data.py
(七):导出数据文件export_data.py
主菜单预览图:
数据库中没有数据时打开1和4的效果,这是为了防止没有数据的时候出错,相关代码写在各自的文件的主函数里,不在main文件这里。
退出系统:
数据库: 我创建了三个表,分别是 Students, Courses, Reports。
重点: 不同文件调用数据库,cn = sqlite3.connect( db_name),我只用了 cn 作为参数传递,就不用多次连接数据库了,暂时没发现什么弊端。
def main():
“”" 用于输入数据库名,调用其他四个文件的函数 “”"
class Display():
“”" 多个显示函数的集合 “”"
def create_db( db_name):
“”" 创建数据库 “”"
import os
import sqlite3
import manage as ma
import query as qu
import import_data as jin
import export_data as chu
class Display():
"""多个显示函数的集合"""
def welcome(self):
print("************************************\n"
" 欢迎进入学生成绩管理系统!\n"
"************************************\n")
def thank(self):
print("\n**********************\n"
" 感谢您的使用!\n"
"**********************\n")
def main_show(self):
"""菜单"""
print("****************************")
print("\t 主菜单")
print("****************************")
print("\t 1:查看学生信息")
print("\t 2:管理学生信息")
print("\t 3:导入数据")
print("\t 4:导出数据")
print("\t 0:退出系统")
print("****************************\n")
def create_db( db_name):
"""创建数据库"""
cn = sqlite3.connect( db_name)
c = cn.cursor()
sql = '''CREATE TABLE Students(
Sno CHAR(10) PRIMARY KEY,
Sname NVARCHAR(4) NOT NULL,
Sgender NCHAR(1)
CHECK( Sgender='男' or Sgender='女')
default '男',
Sbirth TEXT,
Sclass NVARCHAR(8),
Snative NVARCHAR(20)
);'''#学生表
c.execute(sql)
sql = '''CREATE TABLE Courses(
Cno CHAR(8) PRIMARY KEY,
Cname NVARCHAR(20) NOT NULL,
Chours INTEGER,
Ccredit INTEGER
);'''#课程表
c.execute(sql)
sql = '''CREATE TABLE Reports(
Sno CHAR(10),
Cno CHAR(8),
Racademicyear INT,
Rterm INT,
Grade INT,
PRIMARY KEY (Sno, Cno)
);'''#成绩表
c.execute(sql)
cn.commit()
cn.close()
def main():
i = os.system("cls")
display = Display()
display.welcome()
db_name = input("请输入数据库名:")
while not db_name.endswith('.db'):
print("数据库文件命名格式错误,"
"请以'.db'结尾\n")
db_name = input("请输入数据库名:")
if not os.path.exists( db_name):
create_db( db_name)
cn = sqlite3.connect( db_name)
i = input("\n按下回车键后,将清空屏幕,"
"进入主菜单")
i = os.system("cls")
while 1:
display.main_show()
try:
m = int( input("请输入选项:"))
except ValueError:
print("请重新输入正确的数字选项")
continue
if m == 1: #查询学生信息
qu.main( cn)
elif m == 2: #管理学生信息
ma.main( cn)
elif m == 3: #导入数据文件
jin.main( cn)
elif m == 4: #导出数据文件
chu.main( cn)
elif m == 0:
q = input("\n是否确认退出(Y/N)")
if q == "y" or q == "Y":
display.thank()
return
else:
print("无效的命令,请重新输入")
cn.close()
if __name__ == '__main__':
main()
如果文章对你有帮助,点赞是对我最好的鼓励了!