结合sqlite3的学生信息成绩管理系统(二):主要文件main.py

目录

  • 一、系列文章链接
  • 二、实现效果
  • 三、main.py的函数简介
  • 四、代码

一、系列文章链接

(一):程序介绍和流程图
(二):主要文件main.py
(三):基础文件basics.py
(四):管理学生信息manage.py
(五):查询学生信息query.py
(六):导入数据文件import_data.py
(七):导出数据文件export_data.py

二、实现效果

录入数据库名即判断对错
结合sqlite3的学生信息成绩管理系统(二):主要文件main.py_第1张图片

主菜单预览图:
数据库中没有数据时打开1和4的效果,这是为了防止没有数据的时候出错,相关代码写在各自的文件的主函数里,不在main文件这里。
结合sqlite3的学生信息成绩管理系统(二):主要文件main.py_第2张图片
结合sqlite3的学生信息成绩管理系统(二):主要文件main.py_第3张图片
退出系统:
结合sqlite3的学生信息成绩管理系统(二):主要文件main.py_第4张图片

三、main.py的函数简介

数据库: 我创建了三个表,分别是 Students, Courses, Reports。

重点: 不同文件调用数据库,cn = sqlite3.connect( db_name),我只用了 cn 作为参数传递,就不用多次连接数据库了,暂时没发现什么弊端。

  1. def main():
    “”" 用于输入数据库名,调用其他四个文件的函数 “”"

  2. class Display():
    “”" 多个显示函数的集合 “”"

  3. 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()


如果文章对你有帮助,点赞是对我最好的鼓励了!

你可能感兴趣的:(python)