建立学校新生数据管理系统

已知某校在2019年约有四千名新生,为了便于管理新生信息,今天我们就来对这四千多条数据进行处理,实现类似excel表的筛选功能.

我们先来看一看界面:
运行界面
我们可以根据用户需求创建功能:

  1. 查询所有学生信息
  2. 查询某学院所有学生信息
  3. 根据出生日期区间查找学生
  4. 退出程序
  5. ……

以上功能可以随时添加或修改.有了需求便可以开始对数据进行操作了,先给大家看一下我的数据表结构:
在这里插入图片描述

  • id double 主键
  • num varchar(255) 学号
  • name varchar(255) 姓名
  • sex varchar(255) 性别
  • idnum varchar(255) 身份证号
  • bir int(255) 出生日期
  • home varchar(255) 籍贯
  • clas varchar(255) 班级
  • aca varchar(255) 学院

关于建表的操作,大家可以查看我的博客:
抓取中国天气网当前时段所有城市的天气数据(python+xpath)
https://blog.csdn.net/zbp_12138/article/details/101617083
里面有提到如何创建数据表.

创建好数据库以后,导入即可,由于数据含有学生隐私信息,我这里不会公开,我只讲操作数据的具体方法,但是为了给大家展示一下我的数据表里,确实是有数据的,我在这里只展示未编码的部分数据:
未编码的数据表内容
好了,我们开始吧:
导入相关资源库:

from pymysql import *

我定义一个类来完成今天的项目:

class Inquire(object):
	pass

def main():
    inquire = Inquire()
    inquire.run()

if __name__ == '__main__':
    main()

pass代表我下面要讲的内容
我们先来写文章最开始时见到的4个功能:

def run(self):
	    while True:
            num = self.print_num()
            if num == "1":
                self.get_all_infors()
            elif num == "2":
                self.get_robot_infors()
            elif num == "3":
                self.find_area()
            elif num == "4":
                print("欢迎您下次继续使用!")
                break
            else:
                print("error!请重新输入!")

为了让用户知道每个数字代表什么内容,我们在前面最好加上解释说明:

@staticmethod
    def print_num():
        while True :
            print("-"*50)
            print("1:查询所有学生信息")
            print("2:查询某学院所有学生信息")
            print("3:根据出生日期区间查找学生")
            print("4:退出程序")
            num = input("请输入数字:")
            print("-"*50)
            return num

解释一下:
@staticmethod是静态方法,类或实例均可调用,是类的工具包,放在函数前,该函数不传入self或者cls,所以不能访问类属性和实例属性

好了,接下来我们只需要完善功能就可以了:

连接数据库:

ef __init__(self):
        try:
            self.conn = connect(host = '127.0.0.1',
                                port = 3306,
                                user = 'root',
                                password = 'root',
                                charset = 'utf8',
                                db = 'test')
            self.cursor = self.conn.cursor()
        except Exception as e:
            print(e)

查询所有学生信息

def get_all_infors(self):
        sql = 'SELECT * FROM buudata2019'
        try:
            self.cursor.execute(sql)
            for item in self.cursor.fetchall():
                print(item)
        except Exception as e:
            print(e)

查询某学院所有学生信息

def get_robot_infors(self):
        print("-"*50)
        print("城市轨道交通与物流学院")
        print("管理学院")
        print("机器人学院")
        print("旅游学院")
        print("师范学院")
        print("特殊教育学院")
        print("艺术学院")
        print("应用科技学院")
        print("智慧城市学院")
        print("-"*50)
        aca_name = input("请输入要查询的学院:")
        sql = 'select * FROM buudata2019 WHERE aca = "%s" '%aca_name
        try:
            self.cursor.execute(sql)
            for item in self.cursor.fetchall():
                print(item)
        except Exception as e:
            print(e)

根据出生日期区间查找学生

def find_area(self):
        print("请输入正确的生日区间(如:20191002)")
		min = int(input("请输入最小值:"))
		max = int(input("请输入最大值:"))
        sql = 'select * FROM buudata2019 WHERE bir >= %s AND bir <= %s'%(min,max)
        try:
            self.cursor.execute(sql)
            for item in self.cursor.fetchall():
                print(item)
        except Exception as e:
            print(e)

为了以防用户输入错误的信息,导致程序报错,我在这里添加了几个条件,若用户输入错误,则重新输入:

			min = 00000000
	        while min == 00000000:
            try:
                 min = int(input("请输入最小值:"))
                 while( min == 00000000 ):
                    min = int(input("请输入最小值:"))
            except Exception as e:
                print(e)

好了让我们看一看最终效果!

1:查询所有学生信息:
在这里插入图片描述
在这里插入图片描述
可以看到,一共有4014条学生信息,运行结束后不会退出程序,而是继续弹出提示框:

2:查询某学院所有学生信息
在这里插入图片描述
我选择查询 机器人学院
在这里插入图片描述

3:根据出生日期区间查找学生
在这里插入图片描述

4:退出程序
在这里插入图片描述

好了,以上就是全部内容,希望能对大家在写代码时有一定的帮助.

发布了32 篇原创文章 · 获赞 63 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zbp_12138/article/details/102132408