程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

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

发布于2019-10-11 13:38     阅读(612)     评论(0)     点赞(11)     收藏(2)


已知某校在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 *
  • 1

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

class Inquire(object):
	pass

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

if __name__ == '__main__':
    main()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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!请重新输入!")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

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

解释一下:
@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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

查询所有学生信息

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

查询某学院所有学生信息

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

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

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

			min = 00000000
	        while min == 00000000:
            try:
                 min = int(input("请输入最小值:"))
                 while( min == 00000000 ):
                    min = int(input("请输入最小值:"))
            except Exception as e:
                print(e)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

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

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

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

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

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



所属网站分类: 技术文章 > 博客

作者:听爸爸的话

链接:https://www.pythonheidong.com/blog/article/134201/074811ed168a4251523b/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)