python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~

这篇具有很好参考价值的文章主要介绍了python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学生信息管理系统

1、系统说明

python 编写的学生信息管理系统+MySQL数据库,实现了增删改查的基本功能。

2、数据库说明

本人使用的是 MySQL8.0 版本
数据库端口号为:3306
数据库用户名是:root
数据库名称是:practice
建立的表是:students

3、系统功能

  • 增加学生信息
  • 删除学生信息
  • 修改学生信息
  • 查询学生信息
  • 展示所有学生信息
  • 保存学生信息到 .txt 文件中
  • 退出系统

4、功能实现

本程序有两个功能文件 project.py 和 database.py,首先介绍 database.py 中的函数。
程序需要导入 pymysql 包,在运行代码前请先确定编程软件(本人使用的是pycharm)是否安装了 pymysql。

(1)condatabase():连接数据库函数,调用 pymysql 的方法 Connect(),其中参数包括数据库用户名,数据库密码,数据库 ip,数据库名称,数据库端口号以及字符集。其中需要用户手动输入数据库用户名,数据库密码,其他几项参数根据自己的信息写入代码中即可。如果用户输入的账户及密码有误则函数返回 False。
(2)add_student():向数据库中添加学生信息,操作数据库的固定流程:连接数据库,写 sql 语句,游标执行 sql 语句,关闭游标对象和数据库连接。不同之处在于根据不同的需求编写不同的 sql 语句。
(3)delete_student():删除数据库中的学生信息,具体实现同添加学生信息函数类似。
(4)select_student():查询数据库中的学生信息函数,注意该函数体中调用了 fetchone() 函数,若查询结果为空,该函数会返回 None。
(5)modify_student():修改数据库的学生信息,具体实现同添加学生信息函数类似。
(6)determine_student():判断学号是否已经在数据库中存在。
(7)show_student():输出学生信息,其中调用了 fetchall() 函数,会将查询结果以嵌套元组的方式返回。
(8)save_student():保存学生信息至 .txt 文件中,函数先判断系统中是否有学生信息,若系统为空,则提示错误信息无法保存;否则利用open()函数打开指定 .txt 文件利用 for 循环依次写入学生信息,最后记得关闭文件。

接下来是 project.py 中的函数介绍。

(1)menu():打印系统菜单函数,定义为类的静态方法。
(2)ui():用户登录函数,保存用户的数据库名称和数据库密码。
(3)add_student():增加学生信息函数,该函数可以一次增加任意数量的学生信息,而非每次只能添加一名学生;通过 for 循环依次由用户输入待添加的学生信息,若系统中不存在相同学号即可添加成功,若学号已存在,则提示错误信息无法添加。利用 database.py 中 DataBase 类中的 determine_student() 函数查询数据库中是否已经存在待添加学号学生信息。利用 DataBase 类中的 add_student() 函数向数据库中添加学生信息。
(4)delete_student():删除学生信息函数,同样利用 DataBase 类中的 determine_student() 函数查询数据库中是否存在待删除学号学生信息。若存在则利用 DataBase 类中的 delete_student() 函数删除数据库中的学生信息,否则返回无法删除提示。
(5)modify_student():修改学生信息函数,具体实现同删除学生信息函数类似,不同之处在于修改部分学生信息功能的实现,本程序中定义了一个 user_input() 方法,实现学生的信息可以不全部修改,若用户输入回车则对应项信息保持原值。
(6)select_student():查询学生信息函数,具体实现同删除学生信息函数类似。
(7)show_students():展示所有学生信息函数,调用 DataBase 类中的 show_student() 函数实现。
(8)data():保存学生信息函数,调用 DataBase 类中的 save_student() 函数实现。
(9)退出系统功能由 python 内置函数 exit() 实现。
(10)run():程序运行函数,在无限循环中判断用户输入为哪个功能代码相应地调用对应实现函数即可。若用户输入代码错误则系统给出错误提示。

5、程序源码

(1)database.py 文件

import pymysql

class DataBase:
    # 定义连接数据库对象和游标对象
    db=None
    cursor=None

    # 连接数据库
    def condatabase(self,user,password):
        try:
            self.db=pymysql.Connect(
                user=user,
                password=password,
                host="localhost",
                database="practice",
                port=3306,
                charset="utf8"
            )
            self.cursor=self.db.cursor()
            return True
        except:
            return False

    # 添加学生信息
    def add_student(self,user,password,sno,sname,sex,birthday,phone,dorm):
        self.condatabase(self,user,password)
        sql="insert into students values(%s,%s,%s,%s,%s,%s)"
        add_data=[sno,sname,sex,birthday,phone,dorm]
        try:
            self.cursor.execute(sql,add_data)
            self.db.commit()
        except:
            self.db.rollback()
        finally:
            self.cursor.close()
            self.db.close()

    # 删除学生信息
    def delete_student(self,user,password,sno):
        self.condatabase(self,user,password)
        sql="delete from students where sno=%s"
        del_data=[sno]
        try:
            self.cursor.execute(sql,del_data)
            self.db.commit()
        except:
            self.db.rollback()
        finally:
            self.cursor.close()
            self.db.close()

    # 查询指定学生信息
    def select_student(self,user,password,sno):
        self.condatabase(self,user,password)
        sql="select * from students where sno=%s"
        sel_data=sno
        try:
            self.cursor.execute(sql,sel_data)
            result=self.cursor.fetchone()
            print("学号:%s  姓名:%s  性别:%s  年龄:%s  电话:%s  宿舍号:%s" % (result[0],result[1],result[2],result[3],result[4],result[5]))
            return result[0],result[1],result[2],result[3],result[4],result[5]
        except:
            self.db.rollback()
        finally:
            self.cursor.close()
            self.db.close()

    # 修改学生信息,学号不可修改
    def modify_student(self,user,password,sno,sname,sex,birthday,phone,dorm):
        self.condatabase(self,user,password)
        sql="update students set sname=%s,sex=%s,birthday=%s,phone=%s,dorm=%s where sno=%s"
        mod_data=[sname,sex,birthday,phone,dorm,sno]
        try:
            self.cursor.execute(sql,mod_data)
            self.db.commit()
        except:
            self.db.rollback()
        finally:
            self.cursor.close()
            self.db.close()

    # 判断学号是否存在
    def determine_student(self, user, password, sno):
        self.condatabase(self, user, password)
        sql = "select * from students where sno = %s"
        sel_data=sno
        try:
            self.cursor.execute(sql,sel_data)
            row = self.cursor.fetchone()
            if row is not None:
                return True
        except:
            self.db.rollback()
            return False
        finally:
            self.cursor.close()
            self.db.close()

    # 输出学生信息
    def show_student(self, user, password):
        self.condatabase(self, user, password)
        sql = "select * from students"
        try:
            self.cursor.execute(sql)
            students = self.cursor.fetchall()
            if len(students)==0:
                print("系统中没有学生信息,请先添加!")
            else:
                for row in students:
                    print("学号:%s  姓名:%s  性别:%s  年龄:%s  电话:%s  宿舍号:%s" % (row[0], row[1], row[2], row[3], row[4], row[5]))
        except:
            self.db.rollback()
        self.db.close()

    # 另存学生信息
    def save_student(self,user,password):
        self.condatabase(self,user,password)
        sql="select * from students"
        try:
            self.cursor.execute(sql)
            result=self.cursor.fetchall()
            if len(result)==0:
                print("系统中没有学生信息,请先添加!")
            else:
                file=open("学生信息.txt","a")
                for row in result:
                    file.write("学号:%s\t姓名:%s\t性别:%s\t年龄:%s\t电话:%s\t宿舍号:%s\n" % (row[0], row[1], row[2], row[3], row[4], row[5]))
        except:
            self.db.rollback()
        finally:
            self.cursor.close()
            self.db.close()
            file.close()

(2)project.py 文件

from database import DataBase

class Student(object):
    # 定义用户名和密码
    user = None
    password = None

    # 添加学生信息
    def add_student(self):
        student_number = int(input("请输入添加的学生人数:"))
        for i in range(student_number):
            sno = input("请输入学号:")
            if not DataBase.determine_student(DataBase, self.user, self.password, sno):
                sname = input("请输入姓名:")
                sex = input("请输入性别:")
                birthday = input("请输入出生日期:")
                phone = input("请输入电话:")
                dorm = input("请输入宿舍号:")
                DataBase.add_student(DataBase, self.user, self.password, sno, sname, sex, birthday, phone, dorm)
                print("成功添加学号为【%s】的学生!\n"%sno)
            else:
                print("系统已存在学号为【%s】的学生信息,请勿重复添加!"%sno)

    # 删除学生信息
    def delete_student(self):
        sno=input("请输入需要删除的学生学号:")
        if DataBase.determine_student(DataBase,self.user,self.password,sno):
            DataBase.delete_student(DataBase,self.user,self.password,sno)
            print("成功删除学号为【%s】的学生!"%sno)
        else:
            print("系统中不存在学号为【%s】的学生,无法删除!"%sno)

    # 实现修改学生信息时,用户不输入则学生属性不发生改变的功能
    def user_input(self,message,info):
        s=input(message)
        if s=="":
            return info
        else:
            return s

    # 修改学生信息,学号不可修改
    def modify_student(self):
        sno=input("请输入需要修改的学生学号:")
        if DataBase.determine_student(DataBase,self.user,self.password,sno):
            sno, sname, sex, birthday, phone, dorm = DataBase.select_student(DataBase, self.user, self.password, sno)
            sname=self.user_input("请输入学生姓名:【回车不修改】",sname)
            sex = self.user_input("请输入学生性别:【回车不修改】",sex)
            birthday = self.user_input("请输入学生出生日期:【回车不修改】",birthday)
            phone = self.user_input("请输入学生电话:【回车不修改】",phone)
            dorm = self.user_input("请输入学生宿舍号:【回车不修改】",dorm)
            DataBase.modify_student(DataBase,self.user,self.password,sno,sname,sex,birthday,phone,dorm)
            print("成功修改学号为【%s】的学生信息!"%sno)
        else:
            print("系统中不存在学号为【%s】的学生,无法修改!"%sno)

    # 查询学生信息
    def select_student(self):
        sno = input("请输入需要查询的学生学号:")
        if DataBase.determine_student(DataBase, self.user, self.password, sno):
            DataBase.select_student(DataBase,self.user,self.password,sno)
        else:
            print("系统中不存在学号为【%s】的学生!" % sno)

    # 输出学生信息
    def show_students(self):
        DataBase.show_student(DataBase,self.user,self.password)

    # 保存学生信息
    def data(self):
        DataBase.save_student(DataBase, self.user, self.password)
        print("保存成功!")

    # 功能菜单打印
    @staticmethod
    def menu():
        print("**************************")
        print("**  输入:0  --退出程序--  **")
        print("**  输入:1  --添加学生--  **")
        print("**  输入:2  --输出学生--  **")
        print("**  输入:3  --删除学生--  **")
        print("**  输入:4  --查询学生--  **")
        print("**  输入:5  --修改学生--  **")
        print("**  输入:6  --另存学生--  **")
        print("**************************")

    # 登录界面
    def ui(self):
        print("*********************************")
        print("**     欢迎使用学生信息管理系统    **")
        print("**   请输入用户名和密码以进入系统   **")
        print("*********************************")
        self.user = input("请输入用户名(用户名输入 exit 则退出程序):")
        self.password = input("请输入密码:")
        print("-"*33)

    # 程序调用
    def run(self):
        while True:
            self.ui()
            if DataBase.condatabase(DataBase, self.user, self.password):
                print("登陆成功!!!")
                while True:
                    self.menu()
                    number = input("请输入功能前面的代码:")
                    if number == "1":
                        self.add_student()
                    elif number == "2":
                        self.show_students()
                    elif number == "3":
                        self.delete_student()
                    elif number == "4":
                        self.select_student()
                    elif number == "5":
                        self.modify_student()
                    elif number == "6":
                        self.data()
                    elif number == "0":
                        print("感谢使用,欢迎下次登陆!")
                        exit()
                    else:
                        print("您输入的序号不对,请重新输入!")

            elif self.user == "exit":
                exit()
            else:
                print("-"*33)
                print("用户名或密码错误,请重新输入!")

(3)main.py 文件

from project import Student

s=Student()
s.run()

6、运行结果

(1)输入用户名和密码登陆系统
python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~
(2)增加学生信息
python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~
python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~
(3)输出学生信息
python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~
(4)删除学生信息
python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~
(5)查询学生信息和修改学生信息
python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~
(6)保存学生信息
python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~
(7)退出系统
python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~


若有任何问题欢迎各位小伙伴评论区留言交流呀~
希望大家都走在开满鲜花的路上呀~


版权说明

原文作者:早知晓
博文链接:Click here
转载请注明出处,谢谢合作~文章来源地址https://www.toymoban.com/news/detail-501513.html


到了这里,关于python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Python毕业设计】基于Python+Flask+MySQL的学生信息管理系统(附完整源码)

    1、项目说明 基于python+Flask+mysql的学生信息管理系统项目实战 项目需要安装pycharm专业版,mysql数据库以及项目所需的所有模块 创建数据库名称db_online_notes,然后执行sql文件生成数据表和数据 项目需要安装 flask,pymysql以及其他的一些模块 安装命令如下: pip install -i https://pypi

    2023年04月18日
    浏览(40)
  • 基于python的学生信息管理系统的设计与实现

    小白学python,做了一个基础小系统,给大家分享一下(欢迎大神指导) 目录 步骤 1.设计要求 2.设计步骤 (1)导入os模块,创建一个文件夹用于存储数据  (2)定义一个菜单函数 (3)实现学生信息的录入功能 (4)定义了一个save函数用于录入功能的调用 (5)查询功能的实现

    2024年02月09日
    浏览(61)
  • Python实现学生信息管理系统V3.0(GUI界面)

    关于“学生信息管理系统”的基本思路和详细过程,请看V1.0版本: Python实现学生信息管理系统V1.0_︶ㄣ释然的博客-CSDN博客 本文是关于学生信息管理系统的简易版以及具体内容具体思路的详细讲解,简单易理解、纯逻辑实现、没有复杂的第三方库,适合新手小白练手 https:/

    2024年02月09日
    浏览(42)
  • 基于Python guI的学生信息管理系统的设计与实现

            讲述的是一个使用Python GUI的学习资料管理工具。通过使用Python的Tkinter库和mysql数据库,这个工具可以方便地记录、检索、更新学习资料。本文详细描述了系统的架构设计和实现过程,并对系统进行了功能测试和性能测试。结果表明,该系统具有良好的用户界面和

    2024年02月03日
    浏览(40)
  • [Python+Django]Web学生信息管理系统数据库设计及系统实现

    本文我们完成数据的设计,并通过Django框架完成数据库构建同时利用Django框架模式实现学生信息管理系统的功能。 简单的包装下毕设应该没问题了。 Python,Mysql,Pycharm的安装本文就不做特别介绍了,有需要的同学请参考如下博文。 Python + Django4 搭建个人博客(二):准备开

    2024年02月03日
    浏览(64)
  • python实现手机通讯录和学生信息管理系统(4种方法)

    1.手机通讯录: 通讯录是记录了联系人姓名和联系方式的名录,手机通讯录是最常见的通讯录之一,人们可以在通讯录中通过姓名查看相关联系人的联系方式、邮箱、地址等信息,也可以在其中新增联系人,或修改、删除联系人信息。下面是一个常见通讯录的功能菜单,如图

    2024年02月09日
    浏览(70)
  • Python学生信息管理系统【GUI界面版 + 期末报告书 + 功能实现讲解】

    🥝 课程设计说明:     GUI 使用的是Python自带的 tkinter 模块,无需配置,Python自带的模块直接导包使用即可,包含了增删改查+保存文件,满足  90%  大学生期末课程设计需求!!!运行时在main.py文件右键运行即可 ------- 完整文件关注私聊获取 ------   文章目录: 🥥 一:

    2024年02月11日
    浏览(35)
  • mysql 学生信息管理系统

    一、分析 ①业务分析: 学生信息管理系统是面向学生和学校教师的一个多功能数据管理平台 ②系统分析: 本系统所涉及到的用户有学校学生和教师,对于不同的用户系统所提供的功能也有所不同,其中对于学生来说,学生可以提供该系统进行自身数据的查询,教师可以通过

    2024年02月10日
    浏览(35)
  • (解析+源码)基于JAVA Swing+MySQL实现学生信息管理系统(增、删、改、查)数据库/文件存储

    本文适合 有一定JAVA编程基础(听过一点课的同学) 的同学“食用”,源代码都在文末 源代码(点击跳转) ,第四部分是各个模块的实现,新建一个工程把下面代码添加进去,然后在数据库里按id-username-password和id-name-sex-telephone-number-birthday-note创建两个表,在Connect.java里面将us

    2024年02月04日
    浏览(53)
  • mysql练习-学生信息管理系统

    1.1业务分析 学生信息管理系统是面向学生和学校教师的一个多功能数据管理平台,学生信息管理是高等教学管理系统中很重要的功能之一,该系统主要满足教师和学生用户需求。 1.2分析系统 系统面向的用户、系统的功能 本系统面向的用户有学校在校学生、教师以及系统管理

    2024年02月09日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包