python用数据库(sqlite)的简易学生成绩管理系统

Python数据库学生成绩管理系统 

开发语言:Python

开发工具:pycharm

开发时间:2021年4月13号

一、 导入相关包

import sqlite3 #要先在pycharm里面下载好
import time

    二、创建并打开数据库在数据库里创建一张学生表

def open_db():
    con = sqlite3.connect("E:\\stu_db.db")
    cur = con.execute('''create table if not exists score_table(userid integer primary key,username varchar(128),
yuwen_score integer,math_score integer,english_score integer,sum_score integer)''')
    return cur, con

   

 三、各功能方法

#输入学生信息方法
def info():
    # userid = int(input("请输入学号:"))
    username = input("请输入姓名:")
    yuwen_score = int(input("请输入语文成绩:"))
    math_score = int(input("请输入数学成绩:"))
    english_score = int(input("请输入英语成绩:"))
    sum_score = yuwen_score + math_score + english_score
    return username, yuwen_score, math_score, english_score, sum_score


#是否继续此操作(用在其他功能方法中)
def is_continue():
    yn_choose = input("是否继续,请按Y or N:")
    if yn_choose == "y" or yn_choose == "Y":
        return 1
    elif yn_choose == "n" or yn_choose == "N":
        return 0


#插入学生信息
def add_db():
    # student = info()
    userid = int(input("请输入学号:"))
    a = open_db()
    if is_id(userid, a) == 0:
        student = info()
        a[1].execute(
            "insert into score_table(userid, username, yuwen_score, math_score, english_score, sum_score)\
            values(?,?,?,?,?,?)", (userid, student[0], student[1], student[2], student[3], student[4]))
        a[1].commit()
        print("插入完成")
        print("数据更新中.....")
        time.sleep(2)
        show_db()
        a[1].close()
        if is_continue() == 1:#调用是否继续功能函数
            add_db()#用递归的思想
        else:
            print("此功能已退出,欢迎下次使用")
            return
        return
    else:
        print("插入失败,已有此学生学号")
        if is_continue() == 1:
            print("请重新输入!!")
            add_db()
        else:
            print("此功能已退出,欢迎下次使用")
            return
        return


#判断学生学号是否存在
def is_id(ids, a):
    # a = open_db()
    flag = 0
    cur = a[1].cursor()
    cur.execute("select * from score_table")
    a[1].commit()
    for i in cur:
        if ids == i[0]:
            flag = 1
            cur.close()
            return 1
    if flag == 0:
        cur.close()
        return 0

#删除学生信息方法
def del_db():
    del_id = input("请输入想要删除的学号:")
    del_ids = int(del_id)
    a = open_db()
    # cur = a[1].cursor()
    if is_id(del_ids, a) == 1:
        a[1].execute("delete  from score_table where userid=" + del_id)
        a[1].commit()
        a[1].close()
        print("恭喜你删除成功")
        print("数据更新中......")
        time.sleep(2)
        print("                            删除之后的数据")
        show_db()
        return
    else:
        print("没有此学号,删除失败")
        return

#展现学生表里的所有信息
def show_db():
    print("----------------------------------------------------------------")
    a = open_db()
    cur = a[1].cursor()
    cur.execute("select * from score_table")
    print_p(cur)
    return

#查询某个学生的信息
def search_db():
    ids = input("请输入学号:")
    id = int(ids)
    a = open_db()
    if is_id(id, a) == 1:
        cur = a[1].cursor()
        cur.execute("select *  from score_table where userid=" + ids)
        a[1].commit()
        print("学号\t\t   姓名\t\t语文成绩\t\t数学成绩\t\t英语成绩\t\t  总分")
        print("----------------------------------------------------------------")
        for row in cur:
            for h in row:
                print(" ", end="")
                print(h, end="\t\t ")
            print("")
        cur.close()
        a[1].close()
        if is_continue() == 1:
            search_db()
        else:
            print("此功能已退出,欢迎下次使用")
            return
        return
    else:
        print("查找失败,没有此人")
        if is_continue() == 1:
            search_db()
        else:
            print("此功能已退出,欢迎下次使用")
            return
        return

#修改学生的信息
def alter_db():
    id1 = input("请输入你想要修改学生的学号:")
    ids = int(id1)
    a = open_db()
    if is_id(ids, a) == 1:
        # cur = a[1].cursor()
        student = info()
        a[1].execute(
            "update score_table set username=?, yuwen_score=?, math_score=?, english_score=?, sum_score=?\
             where userid=" + id1, (student[0], student[1], student[2], student[3], student[4]))
        a[1].commit()
        print("修改成功")
        print("数据更新中......")
        time.sleep(2)
        print("                            更新成功")
        time.sleep(0.5)
        show_db()
        a[1].close()
        if is_continue() == 1:
            alter_db()
        else:
            print("此功能已退出,欢迎下次使用!!")
            return
        return
    else:
        print("修改失败,没有此学生")
        if is_continue() == 1:
            alter_db()
        else:
            print("此功能已退出,欢迎下次使用!!")
            return
        return


#对学生按照总成绩排序,然后打印出来
def sort_db():
    a = open_db()
    cur = a[1].cursor()
    cur.execute("select * from score_table order by sum_score desc")
    print_p(cur)
    return


#打印每一行的学生信息
def print_p(cur):
    res = cur.fetchall()
    print("学号\t\t   姓名\t\t语文成绩\t\t数学成绩\t\t英语成绩\t\t  总分")
    print("----------------------------------------------------------------")
    for line in res:
        for h in line:
            print(" ", end="")
            print(h, end="\t\t ")
        print("")
    cur.close()
    return

四、菜单显示(主函数)

#菜单显示(主函数:类似与C语言的的main())
while True:
    print("*****************************************")
    print("**   增加学生信息——————————————————————1  **")
    print("**   查找学生信息——————————————————————2  **")
    print("**   删除学生信息----------------------3  **")
    print("**   更改学生信息----------------------4  **")
    print("**   输出学生信息----------------------5  **")
    print("**   按总分成绩排名---------------------6  **")
    print("*******************************************")
    choose = input("请输入你的选择:")
    if choose == "1":
        add_db()
    elif choose == "2":
        search_db()
    elif choose == "3":
        del_db()
    elif choose == "4":
        alter_db()
    elif choose == "5":
        show_db()
    elif choose == "6":
        sort_db()

   

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
学生信息管理系统是一种用于管理学生信息的软件,利用Qt和SQLite数据库可以很方便地编写出一个简易学生信息管理系统。 首先,我们需要创建一个Qt项目,并引入SQLite数据库的支持。在Qt Creator中,可以通过点击“文件”菜单,然后选择“新建文件或项目”来创建一个新的Qt项目。在项目创建向导中选择适当的项目类型和目标平台,然后在项目中的.pro文件中添加以下语句来引入SQLite库: ``` QT += sql ``` 接下来,我们需要设计学生信息的数据库表结构。一般来说,学生信息包括学号、姓名、性别、年龄等字段。我们可以使用Qt的QSqlDatabase类来连接数据库,并通过QSqlQuery类来执行SQL语句进行数据库操作。 在主窗口界面中,可以设计一个表格控件用于显示学生信息,通过SQL查询语句从数据库中读取学生信息并显示在表格中。同时,可以设计添加、修改和删除学生信息的功能按钮,并在对应的按钮点击事件中执行相应的SQL语句来实现对数据库的增删改操作。 另外,可以设计一个搜索框来实现根据学号或姓名等关键字进行学生信息的模糊查询。 对于学生信息的保存和加载,可以使用SQLite数据库的文件功能来实现。通过QSqlDatabase类的静态函数addDatabase()来进行数据库的连接,并指定数据库文件的路径。 在编写完业务逻辑之后,要记得在程序退出的时候,调用QSqlDatabase类的静态函数removeDatabase()来关闭数据库连接,以避免内存泄漏。 综上所述,利用Qt和SQLite数据库编写一个简易学生信息管理系统可以通过设计数据库表结构、使用QSqlDatabase和QSqlQuery类进行数据库操作,以及设计主窗口界面来显示和操作学生信息。通过合理的设计和代码实现,可以使得学生信息管理系统更加方便、高效和易用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值