学生信息及成绩管理系统(Python+Sqlite)数据库版

这篇具有很好参考价值的文章主要介绍了学生信息及成绩管理系统(Python+Sqlite)数据库版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

功能模块:

运行功能演示:

 具体代码实现过程:

创建sqlite 数据库

 Python代码

引入os和sqlite3包:

初始化数据库:

连接数据库:

关闭并提交数据到数据库:

查询数据并显示:

添加并插入数据到数据库:

更新数据到数据库:

删除数据并更新数据库:

 导入和导出数据

 学生成绩统计:

 关联数据库文件:


本文为在之前学生信息及成绩管理系统(Python)完整版的基础上增加数据库功能,数据库我们直接使用并连接Sqlite。

学生信息管理系统(Python)完整版_python学生信息管理系统_李威威wiwi的博客-CSDN博客基本信息管理和学生成绩管理。基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。https://blog.csdn.net/agelee/article/details/126832608

功能模块:

核心功能模块如下:

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

运行功能演示:

学生信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

如果用户输入“info”命令,则进入学生基本信息管理子功能模块。

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

 在学生基本信息管理界面,用户通过输入相应的命令进行学生基本信息的增、删、改、显示等操作。

学生基本信息菜单

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

添加学生信息

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

删除学生信息

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

修改学生信息

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

显示学生信息

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

如果用户输入“score”命令,则进入学生成绩管理子功能模块。

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

在学生成绩管理界面用户可选择相应的功能进行成绩处理。

平均分:

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

最高分

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

最低分

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite
 

 具体代码实现过程:

创建sqlite 数据库

直接在Pycharm中创建一个sqlite 数据库,名字为StuDB。

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

 name 和File都填StuDB。

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

 成功创建数据库

学生成绩管理系统数据库,Python作业项目合集,数据库,python,学生信息管理系统,学生成绩管理系统,sqlite

 Python代码

新建 Python文件:学生信息管理(sqlite).py

引入os和sqlite3包:

import os
import sqlite3

定义一个主类:StuDB,然后在类里面实现具体的功能函数。

初始化数据库:

    def __init__(self):
        self.con = ''
        self.cur = ''

连接数据库:

    def connect(self,db):
        self.con = sqlite3.connect(db)
        self.cur = self.con.cursor()
        try:
            sql = '''
            create table student (
            no text,
            name text,
            chinese integer,
            math integer,
            english integer )
            '''
            self.cur.execute(sql)
        except:
            pass

关闭并提交数据到数据库:

    def close(self):
        self.con.commit()
        self.cur.close()
        self.con.close()

查询数据并显示:

    def show(self):
        format_head = '{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
        print(format_head.format('学号','姓名','语文','数学','英语'))
        sql = 'select * from student' 
        self.cur.execute(sql)
        rows = self.cur.fetchall()
        format_con = '{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
        for row in rows:
            print(format_con.format(row[0],row[1],row[2],row[3],row[4]))

添加并插入数据到数据库:

    def __insert(self,no,name,chinese,math,english):                   
        sql='insert into student(no,name,chinese,math,english) values(?,?,?,?,?)'
        self.cur.execute(sql,(no,name,chinese,math,english))
        if self.cur.rowcount > 0:
            print('插入成功')
        else:
            print('插入失败')   
    def insert(self):
        while True:
            no = input('学号:')
            if self.__exists(no):
                print('该学号已存在')
            else:
                name = input('姓名:')        
                chinese = self.__enterScore('语文成绩:')
                math = self.__enterScore('数学成绩:')
                english = self.__enterScore('英语成绩:')
                if no != '' and name != '':
                    self.__insert(no,name,chinese,math,english)
                else:
                    print('请将信息输入完整')
            choice = input('继续添加(y/n)?').lower()
            if choice == 'n':
                break 

更新数据到数据库:

    def __update(self,no,name,chinese,math,english):                   
        sql='update student set name=?,chinese=?,math=?,english=? where no=?'
        self.cur.execute(sql,(name,chinese,math,english,no))
        if self.cur.rowcount > 0:
            print('修改成功')
        else:
            print('修改失败')     
    def update(self):
        while True:
            no = input('请输入要修改的学号:')
            if not self.__exists(no):
                print('该学号不存在')
            else:
                name = input('姓名:')
                chinese = self.__enterScore('语文成绩:')
                math = self.__enterScore('数学成绩:')
                english = self.__enterScore('英语成绩:')              
                if no != '' and name != '' :
                    self.__update(no,name,chinese,math,english)
                else:
                    print('请将信息输入完整')
            choice = input('继续修改(y/n)?').lower()
            if choice == 'n':
                break

删除数据并更新数据库:

    def __delete(self,no):         
        sql = 'delete from student where no = ?'
        self.cur.execute(sql,(no,))
        if self.cur.rowcount > 0:
            print('删除成功')
        else:
            print('删除失败')
    def delete(self):
        while True:
            no = input('请输入要删除的学号:')
            if not self.__exists(no):
                print('该学号不存在')
            else:
                self.__delete(no)
            choice = input('继续删除(y/n)?').lower()
            if choice == 'n':
                break

 导入和导出数据

  def save(self):        
        fn = input('请输入要导出的文件名:')
        with open(fn,'w',encoding = 'utf-8') as fp:
            self.cur.execute('select * from student')
            rows = self.cur.fetchall()
            for row in rows:
                fp.write(row[0] + ',' )
                fp.write(row[1] + ',' )
                fp.write(str(row[2]) + ',' )
                fp.write(str(row[3]) + ',' )
                fp.write(str(row[4])+ '\n')
            print('导出完毕')
    

    def load(self):        
        fn = input('请输入要导入的文件名:')
        if os.path.exists(fn):
            with open(fn,'r',encoding = 'utf-8') as fp:
                while True:
                    s = fp.readline().strip('\n')
                    if s == '':
                        break
                    stu = s.split(',')
                    no = stu[0]
                    name = stu[1]
                    chinese = int(stu[2])
                    math = int(stu[3])
                    english = int(stu[4])
                    if self.__exists(no):
                        print('该学生已存在')
                    else:                        
                        self.__insert(no,name,chinese,math,english)
                print('导入完毕')
        else:
            print('要导入的文件不存在')

 学生成绩统计:

    def scoreavg(self):
        sql = 'select avg(chinese),avg(math),avg(english) from student'
        self.cur.execute(sql)
        result = self.cur.fetchone()        
        print('语文成绩平均分是:%.2f'%result[0])
        print('数学成绩平均分是:%.2f'%result[1])
        print('英语成绩平均分是:%.2f'%result[2])

    def scoremax(self):
        sql = 'select max(chinese),max(math),max(english) from student'
        self.cur.execute(sql)
        result = self.cur.fetchone()        
        print('语文成绩最高分是:%d'%result[0])
        print('数学成绩最高分是:%d'%result[1])
        print('英语成绩最高分是:%d'%result[2])

    def scoremin(self):
        sql = 'select min(chinese),min(math),min(english) from student'
        self.cur.execute(sql)
        result = self.cur.fetchone()        
        print('语文成绩最低分是:%d'%result[0])
        print('数学成绩最低分是:%d'%result[1])
        print('英语成绩最低分是:%d'%result[2])

主函数及菜单函数:

    def main(self,db):        
        while True:
            print('学生信息管理系统(数据库版)'.center(20,'='))
            print('info  -------学生基本信息管理')
            print('score -------学生成绩统计')
            print('exit  -------退出系统')
            print(''.center(32,'='))
            s = input('main>').strip().lower()
            if s == 'info':
                self.infoprocess(db)
            elif s == 'score':
                self.scoreprocess(db)
            elif s == 'exit':
                break
            else:
                print('输入错误')        

    def infoprocess(self,db):
        self.connect(db)
        print('学生基本信息管理'.center(24,'='))        
        print('load   -----------导入学生数据')
        print('insert -----------插入学生信息')
        print('delete -----------删除学生信息')
        print('update -----------修改学生信息')
        print('show   -----------显示学生信息')
        print('save   -----------导出学生数据')        
        print('return -----------返回并更新数据库')
        print(''.center(32,'='))
        while True:
            s = input('info>').strip().lower()
            if s == 'load':
                self.load()
            elif s == 'insert':
                self.insert()
            elif s == 'delete':
                self.delete()
            elif s == 'update':
                self.update()            
            elif s == 'show':
                self.show()
            elif s == 'save':
                self.save()
            elif s =='return':
                break
            else:
                print('输入错误')
        self.close()

    def scoreprocess(self,db):
        self.connect(db)
        print('学生成绩统计'.center(24,'='))
        print('avg    --------课程平均分')
        print('max    --------课程最高分')
        print('min    --------课程最低分')        
        print('return --------返回')
        print(''.center(30,'='))
        while True:
            s = input('score>').strip().lower()
            if s == 'avg':                
                self.scoreavg()
            elif s == 'max':                
                self.scoremax()
            elif s == 'min':                
                self.scoremin()
            elif s == 'return':
                break
            else:
                print('输入错误')
        self.close()

 关联数据库文件:

最后单独定义函数指定本次连接的数据库的文件地址。文章来源地址https://www.toymoban.com/news/detail-765252.html

if __name__ == '__main__':
    sd = StuDB()
    sd.main('数据库文件夹路径\StuDB')

完整代码:

import os
import sqlite3



class StuDB:
    def __init__(self):
        self.con = ''
        self.cur = ''

    def connect(self,db):
        self.con = sqlite3.connect(db)
        self.cur = self.con.cursor()
        try:
            sql = '''
            create table student (
            no text,
            name text,
            chinese integer,
            math integer,
            english integer )
            '''
            self.cur.execute(sql)
        except:
            pass

    def close(self):
        self.con.commit()
        self.cur.close()
        self.con.close()

    def show(self):
        format_head = '{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
        print(format_head.format('学号','姓名','语文','数学','英语'))
        sql = 'select * from student' 
        self.cur.execute(sql)
        rows = self.cur.fetchall()
        format_con = '{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
        for row in rows:
            print(format_con.format(row[0],row[1],row[2],row[3],row[4]))

    def __enterScore(self,message):
        while True:
            try:
                score = input(message)
                if 0 <= int(score) <= 100:
                    break
                else:
                    print('输入错误,成绩应在0到100之间')
            except:
                print('输入错误,成绩应在0到100之间')        
        return int(score)

    def __exists(self,no):
        sql = 'select * from student where no = ?'
        result = self.cur.execute(sql,(no,))
        rows = result.fetchall()
        if len(rows) > 0:
            return True
        else:
            return False

    def __insert(self,no,name,chinese,math,english):                   
        sql='insert into student(no,name,chinese,math,english) values(?,?,?,?,?)'
        self.cur.execute(sql,(no,name,chinese,math,english))
        if self.cur.rowcount > 0:
            print('插入成功')
        else:
            print('插入失败')            

    def __update(self,no,name,chinese,math,english):                   
        sql='update student set name=?,chinese=?,math=?,english=? where no=?'
        self.cur.execute(sql,(name,chinese,math,english,no))
        if self.cur.rowcount > 0:
            print('修改成功')
        else:
            print('修改失败')        

    def __delete(self,no):         
        sql = 'delete from student where no = ?'
        self.cur.execute(sql,(no,))
        if self.cur.rowcount > 0:
            print('删除成功')
        else:
            print('删除失败')

    def insert(self):
        while True:
            no = input('学号:')
            if self.__exists(no):
                print('该学号已存在')
            else:
                name = input('姓名:')        
                chinese = self.__enterScore('语文成绩:')
                math = self.__enterScore('数学成绩:')
                english = self.__enterScore('英语成绩:')
                if no != '' and name != '':
                    self.__insert(no,name,chinese,math,english)
                else:
                    print('请将信息输入完整')
            choice = input('继续添加(y/n)?').lower()
            if choice == 'n':
                break

    def delete(self):
        while True:
            no = input('请输入要删除的学号:')
            if not self.__exists(no):
                print('该学号不存在')
            else:
                self.__delete(no)
            choice = input('继续删除(y/n)?').lower()
            if choice == 'n':
                break

    def update(self):
        while True:
            no = input('请输入要修改的学号:')
            if not self.__exists(no):
                print('该学号不存在')
            else:
                name = input('姓名:')
                chinese = self.__enterScore('语文成绩:')
                math = self.__enterScore('数学成绩:')
                english = self.__enterScore('英语成绩:')              
                if no != '' and name != '' :
                    self.__update(no,name,chinese,math,english)
                else:
                    print('请将信息输入完整')
            choice = input('继续修改(y/n)?').lower()
            if choice == 'n':
                break

    def save(self):        
        fn = input('请输入要导出的文件名:')
        with open(fn,'w',encoding = 'utf-8') as fp:
            self.cur.execute('select * from student')
            rows = self.cur.fetchall()
            for row in rows:
                fp.write(row[0] + ',' )
                fp.write(row[1] + ',' )
                fp.write(str(row[2]) + ',' )
                fp.write(str(row[3]) + ',' )
                fp.write(str(row[4])+ '\n')
            print('导出完毕')
    

    def load(self):        
        fn = input('请输入要导入的文件名:')
        if os.path.exists(fn):
            with open(fn,'r',encoding = 'utf-8') as fp:
                while True:
                    s = fp.readline().strip('\n')
                    if s == '':
                        break
                    stu = s.split(',')
                    no = stu[0]
                    name = stu[1]
                    chinese = int(stu[2])
                    math = int(stu[3])
                    english = int(stu[4])
                    if self.__exists(no):
                        print('该学生已存在')
                    else:                        
                        self.__insert(no,name,chinese,math,english)
                print('导入完毕')
        else:
            print('要导入的文件不存在')
        

    def scoreavg(self):
        sql = 'select avg(chinese),avg(math),avg(english) from student'
        self.cur.execute(sql)
        result = self.cur.fetchone()        
        print('语文成绩平均分是:%.2f'%result[0])
        print('数学成绩平均分是:%.2f'%result[1])
        print('英语成绩平均分是:%.2f'%result[2])

    def scoremax(self):
        sql = 'select max(chinese),max(math),max(english) from student'
        self.cur.execute(sql)
        result = self.cur.fetchone()        
        print('语文成绩最高分是:%d'%result[0])
        print('数学成绩最高分是:%d'%result[1])
        print('英语成绩最高分是:%d'%result[2])

    def scoremin(self):
        sql = 'select min(chinese),min(math),min(english) from student'
        self.cur.execute(sql)
        result = self.cur.fetchone()        
        print('语文成绩最低分是:%d'%result[0])
        print('数学成绩最低分是:%d'%result[1])
        print('英语成绩最低分是:%d'%result[2])

    def main(self,db):        
        while True:
            print('学生信息管理系统(数据库版)'.center(20,'='))
            print('info  -------学生基本信息管理')
            print('score -------学生成绩统计')
            print('exit  -------退出系统')
            print(''.center(32,'='))
            s = input('main>').strip().lower()
            if s == 'info':
                self.infoprocess(db)
            elif s == 'score':
                self.scoreprocess(db)
            elif s == 'exit':
                break
            else:
                print('输入错误')        

    def infoprocess(self,db):
        self.connect(db)
        print('学生基本信息管理'.center(24,'='))        
        print('load   -----------导入学生数据')
        print('insert -----------插入学生信息')
        print('delete -----------删除学生信息')
        print('update -----------修改学生信息')
        print('show   -----------显示学生信息')
        print('save   -----------导出学生数据')        
        print('return -----------返回并更新数据库')
        print(''.center(32,'='))
        while True:
            s = input('info>').strip().lower()
            if s == 'load':
                self.load()
            elif s == 'insert':
                self.insert()
            elif s == 'delete':
                self.delete()
            elif s == 'update':
                self.update()            
            elif s == 'show':
                self.show()
            elif s == 'save':
                self.save()
            elif s =='return':
                break
            else:
                print('输入错误')
        self.close()

    def scoreprocess(self,db):
        self.connect(db)
        print('学生成绩统计'.center(24,'='))
        print('avg    --------课程平均分')
        print('max    --------课程最高分')
        print('min    --------课程最低分')        
        print('return --------返回')
        print(''.center(30,'='))
        while True:
            s = input('score>').strip().lower()
            if s == 'avg':                
                self.scoreavg()
            elif s == 'max':                
                self.scoremax()
            elif s == 'min':                
                self.scoremin()
            elif s == 'return':
                break
            else:
                print('输入错误')
        self.close()

                
if __name__ == '__main__':
    sd = StuDB()
    sd.main('数据库所在文件夹\StuDB')

        
        
    

到了这里,关于学生信息及成绩管理系统(Python+Sqlite)数据库版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言学生成绩信息管理系统(超详细版)

    主题:一个简易成绩管理系统 功能介绍: 1.以文本形式存储学生信息 2.对以存信息进行   1. 插入 2. 修改3. 删除  4.查询  5.成绩数字特征 目录 一:分析 二:查询  三:菜单 四:初始化函数 五:插入函数 六:修改函数 七:删除函数 八:数字特征 九:显示函数 要进行 插入

    2024年02月12日
    浏览(28)
  • 基于mysql+jdbc+java swing的学生成绩信息管理系统

    来csdn也有两年了,在这期间学了很多的知识,也跟着许多的大神做了几个小项目。但自己也在想什么时候能够有个自己的项目,之前在学校做过一个基于集合存储数据的学生信息管理系统,现在想着改进一下,于是趁着暑假做了一个小项目吧(基于mysql+jdbc+java swing的学生成绩

    2024年02月04日
    浏览(37)
  • 用C语言实现一个学生信息管理系统,学生基本信息包括学号、姓名、三门课成绩以及个人平均成绩,有不超过70个学生的数据,要求能够建立学生基本信息(结构体数组)、按学号查询学生基本信息、计算学生个人平均成绩...

    下面是一种使用 C 语言实现学生信息管理系统的方案: 首先,定义结构体存储学生的基本信息,其中包括学号、姓名、三门课成绩和平均成绩。例如: 然后,定义结构体数组来存储最多70个学生的信息。 接下来,可以编写函数来实现各种功能。例如,可以定义函数来建立学

    2024年02月03日
    浏览(47)
  • C语言课程设计:学生成绩信息管理系统(排序、平均分、总分)详解

    1、需求分析 利用C语言编写一个可以对学生成绩信息进行管理的系统 0、退出系统 1、录入学生信息和成绩 2、打印学生信息 3、统计学生人数 4、查找学生信息 5、修改学生信息 6、删除学生信息 7、排序学生成绩 8、生成学生信息文件 9、读取文件学生信息 10、输出各科成绩不

    2024年02月11日
    浏览(36)
  • Python学生成绩管理系统

    根据项目要求,学生系统成绩管理系统应该具备以下几个功能: (1)系统的登录与注册: (2)学生成绩添加: (3)学生成绩修改: (4)学生成绩删除: (5)学生成绩查询: (6)学生成绩排序及显示: (7)系统退出: 系统主要功能分为三大模块,分别为:系统的登录

    2024年02月03日
    浏览(35)
  • 计算机毕业设计 基于JavaWeb的学生成绩信息管理系统(源码+论文)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 基于JavaWeb的学生成绩信息管理系统 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:3分 项目获取: https://gitee.com/sin

    2024年02月10日
    浏览(48)
  • 基于Python的学生成绩管理系统

    末尾获取源码 开发语言:python 后端框架:django 数据库:MySQL5.7 开发软件:Pycharm 是否Maven项目:是 目录 一、项目简介 二、系统功能 三、系统项目截图 四、核心代码 4.1登录相关 4.2文件上传 4.3封装 网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种

    2024年02月05日
    浏览(37)
  • 使用Python实现学生成绩管理系统

     学生成绩管理系统是一种非常普遍的管理系统 使用Python创建该系统,步骤如下: 使用os 模块 json模块,for 循环, if语句 函数,实现代码的编程,本系统主要由登录,注册,增删改查的功能  代码如下: 希望对大家有所帮!

    2024年02月11日
    浏览(35)
  • python--字典版学生成绩管理系统

    目录 全局变量定义 菜单方法 添加学生信息  删除学生信息  修改学生成绩  查找学生信息  统计学生最高分、平均分、最低分 主运行函数  全部源代码 实现对学生信息的添加、删除、修改、查询操作 全局变量定义 import math 定义一个空字典存放学生学号和成绩 stu_dict = {}

    2024年02月04日
    浏览(27)
  • 【python课程作业】python学生成绩管理系统

    功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。给舍友做的课程作业。 功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_score 演示地址 http:/

    2024年03月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包