基于python的学生管理系统(含数据库版本)

这次支持连接到后台的数据库,直接和数据库进行交互,实现基本的增删查改

  1 #!/usr/bin/python3
  2 # coding=utf-8
  3 """
  4 ***********************help document****************************************
  5 Usage:
  6     this is a simple student grades system,now is simple
  7     when start the programming,you can do following operations
  8     enter ‘a‘ is to insert data into database
  9     enter ‘b‘ is to display all data in database
 10     enter ‘c‘ is to query the specify info in database
 11     enter ‘h‘ is to see this help dacument
 12     enter ‘d‘ is to delete someone student‘s info
 13     enter nothing is to do nothing,you can enter again
 14     simple help document is: "a--insert/b--display/c--query/h--help/d--delete/‘‘--default"
 15 Example:
 16     please enter the OPcode: a  then [enter]
 17 *****************************************************************************
 18
 19 """
 20
 21 #引入pymysql这个库用来连接数据据
 22 import pymysql
 23
 24 #打印帮助文档
 25 def help_document():
 26     print(__doc__)
 27
 28 #在已有的数据库上创建数据库的表
 29 def create_database():
 30     #在mysql中创建数据库student_db
 31     db = pymysql.connect(‘localhost‘, ‘root‘, ‘root‘)
 32     name = ‘student_db‘
 33     cursor = db.cursor()
 34     cursor.execute(‘drop database if exists ‘ + name)
 35     cursor.execute(‘create database if not exists ‘ + name)
 36     db.close()
 37     #在数据库student_db中创建数据表student_table
 38     db = pymysql.connect(‘localhost‘, ‘root‘, ‘root‘, ‘student_db‘)
 39     cursor = db.cursor()
 40     name = ‘student_table‘
 41     cursor.execute(‘drop table if exists ‘ + name)
 42     sql = """create table student_table(
 43     name varchar(30) primary key not null,
 44     age  varchar(10),
 45     id   varchar(20),
 46     grade  varchar(10))"""
 47     cursor.execute(sql)
 48     db.commit()
 49     db.close()
 50
 51 #数据库的插入
 52 def insert_db(name,age,id,grade):
 53     db = pymysql.connect(‘localhost‘, ‘root‘, ‘root‘,‘student_db‘)
 54     cursor = db.cursor()
 55     sql = "insert into student_table (name,age,id,grade) values (‘%s‘,‘%s‘,‘%s‘,‘%s‘)" %  56           (name,age,id,grade)
 57     cursor.execute(sql)
 58     db.commit()
 59     db.close()
 60
 61 #打印数据库中所有数据
 62 def display_db():
 63     db = pymysql.connect(‘localhost‘, ‘root‘, ‘root‘, ‘student_db‘)
 64     cursor = db.cursor()
 65     sql = "select * from student_table"
 66     try:
 67         cursor.execute(sql)
 68         result = cursor.fetchall()
 69         for row in result:
 70             name = row[0]
 71             age = row[1]
 72             id = row[2]
 73             grade = row[3]
 74             print("name: ‘%s‘,age: ‘%s‘,id: ‘%s‘,grade: ‘%s‘" % (name,age,id,grade))
 75         print("that‘s all diaplayed!")
 76     except:
 77         print(‘nothing has been displayed...‘)
 78     db.close()
 79
 80 #数据库的查找
 81 def query_db(name):
 82     db = pymysql.connect(‘localhost‘, ‘root‘, ‘root‘, ‘student_db‘)
 83     cursor = db.cursor()
 84     sql = "select * from student_table where name = ‘%s‘ " % name
 85     try:
 86         cursor.execute(sql)
 87         result = cursor.fetchall()
 88         for row in result:
 89             name1 = row[0]
 90             age1 = row[1]
 91             id1 = row[2]
 92             grade1 = row[3]
 93         print("name: ‘%s‘,age: ‘%s‘,id: ‘%s‘,grade: ‘%s‘" %  94               (name1,age1,id1,grade1))
 95         print(‘the query is over!‘)
 96     except:
 97         print(‘can not query data!‘)
 98     db.close()
 99
100 #更新数据库
101 def update_db(name,age,id,grade):
102     db = pymysql.connect(‘localhost‘, ‘root‘, ‘root‘, ‘student_db‘)
103     cursor = db.cursor()
104     sql = "update student_table set age = ‘%s‘,id = ‘%s‘,grade = ‘%s‘ where name = ‘%s‘" % 105           (age,id,grade,name)
106     try:
107         cursor.execute(sql)
108         db.commit()
109         print(‘updated successfully!‘)
110     except:
111         print(‘can not update data!‘)
112     db.close()
113
114
115 #数据库的删除
116 def delete_db(name):
117     db = pymysql.connect(‘localhost‘, ‘root‘, ‘root‘, ‘student_db‘)
118     cursor = db.cursor()
119     sql = "delete from student_table where name = ‘%s‘" % name
120     try:
121         cursor.execute(sql)
122         db.commit()
123         print(‘delete the student info successfully!‘)
124     except:
125         print(‘delete failed...‘)
126     db.close()
127
128 # 实现switch-case语句
129 class switch(object):
130     def __init__(self, value):
131         self.value = value
132         self.fall = False
133
134     def __iter__(self):
135         """Return the match method once, then stop"""
136         yield self.match
137         raise StopIteration
138
139     def match(self, *args):
140         """Indicate whether or not to enter a case suite"""
141         if self.fall or not args:
142             return True
143         elif self.value in args:  # changed for v1.5, see below
144             self.fall = True
145             return True
146         else:
147             return False
148
149 #建立一个学生类
150 class student:
151     #构造函数
152     def __init__(self, name, age, id, grade):
153         self.next = None
154         self.name = name
155         self.age = age
156         self.id = id
157         self.grade = grade
158     #每个学生可以输出自己的信息
159     def show(self):
160         print(‘name:‘, self.name, ‘ ‘, ‘age:‘, self.age, ‘ ‘, ‘id:‘, self.id, ‘ ‘, ‘grade:‘, self.grade)
161
162 #建立一个学生列表类
163 class stulist:
164     #构造函数
165     def __init__(self):
166         self.head = student(‘‘, 0, 0, 0)
167     #输出数据库中所有的数据
168     def display(self):
169         display_db()
170     #新增学生数据
171     def insert(self):
172         print(‘please enter:‘)
173         name = input(‘name:‘)
174         age = input(‘age:‘)
175         id = input(‘id:‘)
176         grade = input(‘grade:‘)
177         insert_db(name, age, id, grade)
178
179     #查询学生数据
180     def query(self):
181         name = input(‘please enter the name you want to query:‘)
182         query_db(name)
183
184     #删除学生数据
185     def delete(self):
186         name = input("please enter the student‘name you want to delete:")
187         delete_db(name)
188
189 #主函数,程序的入口
190 def main():
191     stulist1 = stulist()
192     user_input = input(‘please enter the OPcode:‘)
193     while user_input:
194         print("a--insert/b--display/c--query/h--help/d--delete/‘‘--default")
195         for case in switch(user_input):
196             if case(‘a‘): #按下‘a‘键
197                 stulist1.insert()
198                 user_input = input(‘please enter the OPcode:‘)
199                 break
200             if case(‘b‘):  #按下‘b‘键
201                 stulist1.display()
202                 user_input = input(‘please enter the OPcode:‘)
203                 break
204             if case(‘c‘):  #按下‘c‘键
205                 stulist1.query()
206                 user_input = input(‘please enter the OPcode:‘)
207                 break
208             if case(‘d‘):  #按下‘d‘键
209                 stulist1.delete()
210                 user_input = input(‘please enter your OPcode:‘)
211                 break
212             if case(‘h‘):  #按下‘h‘键
213                 help_document()
214                 user_input = input(‘please enter your OPcode:‘)
215                 break
216             if case():  # default
217                 print(‘please enter the OPcode...‘)
218                 user_input = input(‘please enter the OPcode:‘)
219                 break
220
221
222 if __name__ == "__main__":
223     #第一次运行程序需要建立新的数据库,需要运行下面注释的一行代码,下次运行得将其注释掉
224     #create_database()
225     main()

结果效果图:

输入‘h‘查看帮助文档

输入‘b‘来查询数据库数据:

这个版本还是很粗糙,访问速度也很慢,如果以后还有时间的话,我会做一个界面出来,改进下和数据库的交互方式。

原文地址:https://www.cnblogs.com/jeavenwong/p/8439016.html

时间: 2024-11-05 11:57:21

基于python的学生管理系统(含数据库版本)的相关文章

基于模态对话框 学生管理系统

前端: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta harset="UTF-8"> 5 <title>模态对话框</title> 6 <script src="/static/zhanggen.js"></script> 7 </head> 8 <body> 9 &

准备用C51做个学生管理系统(1)

为了做这个看起来很容易,做起来很麻烦的基于51的学生管理系统,我得准备很多的知识,首先是51单片机的一些IO.定时器差不多就可以了,硬件方面还要有数码管.LCD1602.矩阵键盘等知识,至于代码就需要数据结构双向链表的知识就差不多了,用到的软件无非也就是protues.keil.protel这三剑客了. 1.为什么要用到数码管呢,因为很少做这些硬件的东西,用数码管主要是为了验证我的矩阵键盘功能有没有用罢了,数码管的abcdefg对应那几根“杠杠”的亮否可以直接显示亮的数据,因为矩阵键盘是8X8的

控制台的学生管理系统---结对编程

需求分析: 学生管理系统定义: 基于控制台的学生管理系统,对基本的学生信息通过控制台打印输出进行管理 学生管理系统: 功能: 进行学生的基本注册. 进行学生登陆. 对学生的基本信息进行查询. 结对编程概述: 定义: 结对编程技术是指两位程序员坐在同一工作台前开发软件.与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码. 概述: 结对编程技术是一个非常简单和直观的概念,能达到事半功倍的工作效果.但是,人与人之间的合作不是一件简单的事情——尤其当人们都早已习惯了独自工作的时候.实施结对编程

学生管理系统(用中间件)-------基于FORM组件

x学生管理系统(用中间件)-------基于FORM组件 目的:实现学生,老师,课程的增删改查 models.py from django.db import models # Create your models here. class UserInfo(models.Model): """ 用户表:既有班主任也有老师 """ username = models.CharField(max_length=32) password = model

学生信息管理系统1(数据库设计篇)

1.系统概述 本次是做一个学生管理系统,在学了数据库之后,希望通过这个系统把所学知识应用与实际项目中去.加强自己的熟练程度. 开发背景:具备数据库,C#的相关知识储备,掌握基本的html知识. 用途:仅作练习用.通过一门语言,将数据库展现出来. 2.功能需求分析 系统概念层设计:功能用例图如下 1. 登录功能:用于身份认证 2. 数据操作:信息查询,数据的增删改.a) 数据操作里,管理员具备所有的操作权限.学生具有选课和查看的功能.以及可以修改自己的个人信息.3. UI设计 3.数据库设计 E-

【乱写代码坑人系列】ZJUT数据库大型实验 - 学生管理系统(二):项目规划

学生管理系统(二)项目规划 学生管理系统(一)建立项目 好吧这部分应该放在第一的,但是我忘了(逃.其实也差不多啦,反正上一篇也没说什么啊哈哈. 先说项目要求.项目要求的是建立一个管理系统,用来对本地的数据库进行增删查改,把.mdf 文件直接拿来改会被老师打的,所以还是要有一个图形界面. 图形界面要有几个页面:登录,主窗口,学院.老师.学生.课程.成绩的管理,要能看到详细信息,能够批量删除什么的.为了装逼可以考虑加入与Office的连接,不过这个是后话,做好基础功能再玩. 数据库要这么几个表:学院

基于双向循环链表的学生管理系统

基于双向循环链表实现的学生管理系统,包括初始化,插入,删除,查抄,保存,自动按照姓名排序功能,退出并保存功能. 实现思想是将程序的各个部分划分为三个层次.主函数为界面层,即客户端层:其中后缀为Student的一般是某个功能的调度函数,属于逻辑层的内容:在调度函数之下有相应的被调度的函数,也就是相应功能的实现函数,一般后缀名为Node,意思就是这个函数直接操作链表中的结点,可以简单的划分为实现层: 这样分层实现呢有利于代码维护和个功能之间对包含或者重叠功能的直接调用,从而提高代码重用度,而降低代码

学生管理系统——基于双向循环链表

基于双向循环链表实现的学生管理系统,包括初始化,插入,删除,查抄,保存,自动按照姓名排序功能,退出并保存功能. 实现思想是将程序的各个部分划分为三个层次.主函数为界面层,即客户端层:其中后缀为Student的一般是某个功能的调度函数,属于逻辑层的内容:在调度函数之下有相应的被调度的函数,也就是相应功能的实现函数,一般后缀名为Node,意思就是这个函数直接操作链表中的结点,可以简单的划分为实现层: 这样分层实现呢有利于代码维护和个功能之间对包含或者重叠功能的直接调用,从而提高代码重用度,而降低代码

JDBC应用、控制台连MySQL接数据库实现学生管理系统的登录注册、增删改查

**=====================连接数据库=====================** package com.sore.jdbc; import java.sql.*; public class Jdbc { static Connection conn=null; //创建连接桥 public static void main(String[] args) { try{ Class.forName("com.mysql.jdbc.Driver"); //加载驱动 S