python学生管理系统 (数据库)

设计思路

1.添加学生时:

  1. 对每个输入项做单独判断
  2. 在每个输入项错误五次后自动返回到选择操作界面
  3. 所以数据输入完以后 添加到数据库时自动去除输入的内容的两边空格
  4. 自动检测学号是否存在数据库中,如果存在则提示重新输入

2.查询学生信息时:

  查询方式有:

  1. 查询所有
  2. 条件查询

   条件查询包括有:

  1. 学号查询
  2. 姓名查询
  3. 班级查询
  4. 性别查询
  5. 手机号查询
  6. 年龄查询

所有输入选择框或输入框时均为三次错误自动返回到选择操作界面

3.删除学生信息时:

  1. 删除指定学生信息
  2. 删除所有学生信息

       删除指定学生信息包括有:

  1. 根据学号删除
  2. 根据班级删除
  3. 根据性别删除
  4. 根据姓名删除

4.更改学生信息时:

  1. 先列出数据库中的所有学生信息
  2. 根据学号更改信息
  3. 根据姓名更改信息

5.特别功能

  1. 天气显示
  2. 导出信息
  3. 添加地址查询
  4. 添加男女查询
  5. 成绩 单独一张表
  6. 系统激活码邮箱发送
  7. 时间显示

登录管理系统特点:

  1. 单独的表格存储账号和密码  可以做到数据一对一
  2. 添加账号时,可以判断账号目前是否存在数据库中
  3. 修改账号密码时,要求输入原密码 并且三次输入错误后自动返回到选择操作界面
  4. 查询账号时 ,列出所有账号 不显示密码
  5. 删除账号时,为了防止数据库中没有任何账号 要求root账号不能被删除 只能更改密码
  6. 登录系统时自动生成四位数的包含数字和大小写字母的验证码  验证时不区分大小写
  7. 每个包含数字编号选择时自动判断合法性  字母则要求重新输入   每个输入框只能错误三次  Y/n的选择时不区分大小写
  8. 部分使用easygui

实现

import sqlite3
import datetime
import random
import easygui as g
import pandas as pd
def tuichu():xz=input('继续操作,回车即继续:')if xz!=' ':xz=' '
def yzm():while True:s = 'qazwsxedcrfvtgbyhnujmiklopQAZWSXEDCRFVTGBYHNUJMIKOLP0123456789'code = ''for i in range(4):ran = random.randint(0, len(s) - 1)code += s[ran]print('验证码', code)user_input = str(input('请输入验证码(区分大小写):'))if user_input == code:print('验证码输入正确')breakelse:print('很遗憾,验证码输入错误,请重新输入!')continue
def glysz(ks):g.msgbox(msg="""欢迎使用学生管理系统注意事项:1.每个选项,输入对应序号进行选择2.输入信息时需要退出或者取消,请输入“@”进行退出取消3.输入信息时一定要按照提示进行输入4.每次选择时请仔细阅读提示5.此项目为lingxuanbai教学使用6.本程序最终解释权归lingxuanbai所有""", title="""使用说明""", ok_button="我知道了")print("正在初始化中........")for i in range(9):print(i)print("初始化成功")print("第一次启动,请先输入激活码(激活码会发送到你的邮箱)")import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrmy_sender = ''my_pass = ''sjr = input("请输入你的邮箱:")my_user = sjrret = Truetry:s = 'QAZWSXEDCRFVTGBYHNUJMIKOLP0123456789'code = ''for i in range(8):ran = random.randint(0, len(s) - 1)code += s[ran]msg = MIMEText(f'激活码为:{code}', 'plain', 'utf-8')msg['From'] = formataddr(["学生管理系统", my_sender])msg['To'] = formataddr(["FK", my_user])msg['Subject'] = "验证码"server = smtplib.SMTP_SSL("smtp.qq.com", 465)server.login(my_sender, my_pass)server.sendmail(my_sender, [my_user, ], msg.as_string())server.quit()except Exception:ret = Falseif ret == False:print("邮件发送失败")else:print("发送成功")yzmyx = input("请输入激活码:")while yzmyx != code:yzmyx = str(input("激活码输入错误请重新输入:"))print("激活码正确,激活成功")name_1= str(input("请先创建一个管理员账号:"))while len(name_1)==0:name_1=input("管理员账号不能为空,请重新输入:")mima_1 = str(input('请设置管理员密码:'))while len(mima_1)==0:mima_1=input("密码不能为空,请重新输入:")while len(mima_1) < 6:mima_1 = input("密码长度不够,至少6位,请重新输入:")while mima_1.isdigit():mima_1=str(input("你的密码过于简单,请重新输入:"))while len(mima_1) < 6:mima_1 = input("密码长度不够,至少6位,请重新输入:")yzm()ks.execute("insert into gly(name,mima)values ('%s','%s')"%(name_1,mima_1))print("添加成功")tuichu()return
def glyxg(ks,gl):while True:print("\033[1;30;47m==========欢迎进入管理员界面========\033[0m")print("---------------选择选项------------")print("\t\t1.修改管理员账号密码")print("\t\t2.进入学生管理系统")xzsz=input("请选择:")while len(xzsz)==0:xzsz = input("选择不能为空,请重新选择:")if xzsz=="1":name_1=str(input("请输入新账号(输入@退出):"))if name_1=="@":tuichu()returnwhile len(name_1)==0:name_1=str(input("账号不能为空,请重新输入(输入@退出):"))if name_1 == "@":tuichu()returnmima_1=str(input("请输入新密码(输入@退出):"))if mima_1=="@":tuichu()returnwhile len(mima_1)==0:mima_1=str(input("密码不能为空,请重新输入(输入@退出):"))if mima_1 == "@":tuichu()returnif 04 or len(rxnf_1)<4:rxnf_1 = str(input("输入格式错误(年份为4位数)请重新输入:(输入@退出):"))if rxnf_1 == "@":tuichu()returnclass_1=str(input("请输入该学生所在班级(输入@退出):"))if class_1=="@":tuichu()returnwhile len(class_1)==0:class_1=str(input("学生班级不能为空,请重新输入(输入@退出):"))if class_1 == "@":tuichu()returnage_1=input("请输入学生的年龄(输入@退出):")if age_1=="@":tuichu()returnwhile len(age_1)==0 :age_1=input("学生年龄不能为空,请重新输入(输入@退出):")if age_1 == "@":tuichu()returnwhile age_1.isdigit()==False:age_1 = str(input("学生年龄必须是数字,请重新输入(输入@退出):"))if age_1 == "@":tuichu()returnsex_1=str(input("请输入学生性别(输入@退出):"))if sex_1=="@":tuichu()returnwhile len(sex_1)==0:sex_1=str(input("学生性别不能为空,请重新输入(输入@退出):"))if sex_1 == "@":tuichu()returnwhile sex_1.isdigit()!=False:sex_1=str(input("学生性别不能为数字,请重新输入(输入@退出):"))if sex_1=="@":tuichu()returnphone_1=str(input("请输入学生的电话号码,内容可以为空(输入@退出):"))if phone_1=="@":tuichu()returnwhile phone_1.isdigit()==False and len(phone_1)<=11 and len(phone_1)!=0:phone_1=str(input("电话号码必须为数字,请重新输入内容可以为空(输入@退出):"))if phone_1 == "@":tuichu()returnwhile len(phone_1)>11:phone_1=str(input("电话号码超过了11位,请重新输入内容可以为空(输入@退出):"))if phone_1 == "@":tuichu()returnwhile phone_1.isdigit()==False and len(phone_1)<=11 and len(phone_1)!=0:phone_1=str(input("电话号码必须为数字,请重新输入内容可以为空(输入@退出):"))if phone_1 == "@":tuichu()returnsfzhm_1=str(input("请输入学生身份证号码(输入@退出):"))if sfzhm_1 == "@":tuichu()returnwhile len(sfzhm_1)==0:sfzhm_1 = str(input("学生身份证号码不能为空,请输入(输入@退出):"))if sfzhm_1=="@":tuichu()returnwhile len(sfzhm_1)>18 or len(sfzhm_1)<18:sfzhm_1 = str(input("格式错误(身份证号码为18位)请重新输入(输入@退出):"))if sfzhm_1 == "@":tuichu()returnselect_sql = "select * from xs where sfzhm='%s'" % sfzhm_1leanno1 = cursor.execute(select_sql).fetchone()while leanno1 != None:sfzhm_1 = str(input("身份证号码不能为重复,请重新输入(输入@退出):"))select_sql = "select * from xs where leanNo='%s'" % sfzhm_1leanno1 = cursor.execute(select_sql).fetchone()if leanno == "@":tuichu()returnwhile len(sfzhm_1)==0:sfzhm_1 = str(input("学生身份证号码不能为空,请输入(输入@退出):"))if sfzhm_1=="@":tuichu()returnjtzz_1=str(input("请输入学生家庭地址(输入@退出):"))while len(jtzz_1)==0:jtzz_1=str(input("学生家庭地址不能为空请重新输入(输入@退出):"))if jtzz_1 == "@":tuichu()returnif jtzz_1 == "@":tuichu()returncursor.execute("insert into xs(leanNo,name,rxnf,classroom,age,sex,phone,sfzhm,jtzz)values('%s','%s','%s','%s','%s','%s','%s','%s','%s')" %(leanno,name_2,rxnf_1,class_1,age_1,sex_1,phone_1,sfzhm_1,jtzz_1))print("添加成功")tuichu()return
def xgxs(xh):while True:print('-----请选择你要修改的内容----')print('------1.修改该学生姓名-------')print('------2.修改该学生班级-------')print('------3.修改该学生年龄-------')print('------4.修改该学生性别-------')print('------5.修改该学生电话号码----')print('------6.修改该学生身份证号码--')print('------7.修改该学生入学年份----')print('------8.修改该学生家庭地址----')print('------9.退出修改-------------')xgxz=str(input("请根据序号进行选择(输入@退出):"))if xgxz=="@":tuichu()breakwhile len(xgxz)==0:xgxz=str(input("选择不能为空,请重新选择:"))if xgxz=="1":xgxsxm=str(input("请输入正确姓名(输入@退出):"))if xgxsxm=='@':tuichu()continuewhile len(xgxsxm)==0:xgxsxm = str(input("姓名不能为空,请重新输入姓名(输入@退出):"))if xgxsxm=='@':tuichu()breakwhile xgxsxm.isdigit() != False:xgxsxm = str(input("学生姓名不能为数字,请重新输入(输入@退出):"))if xgxsxm == '@':tuichu()breakupdate_sql = "update xs set name='%s' where leanNo='%s'"%(xgxsxm,xh)cursor.execute(update_sql)print('修改成功')tuichu()elif xgxz=="2":xgxsbj = str(input("请输入正确班级(输入@退出):"))while len(xgxsbj) == 0:xgxsbj = str(input("班级不能为空,请重新输入班级(输入@退出):"))if xgxsbj=='@':tuichu()continueupdate_sql = "update xs set classroom='%s' where leanNo='%s'" % (xgxsbj, xh)cursor.execute(update_sql)print('修改成功')tuichu()elif xgxz=="3":xgxsnl= str(input("请输入正确年龄(输入@退出):"))if xgxsnl=='@':tuichu()continuewhile len(xgxsnl)==0:xgxsnl = str(input("年龄不能为空请重新输入年龄(输入@退出):"))if xgxsnl=='@':tuichu()breakupdate_sql = "update xs set age='%s' where leanNo='%s'" % (xgxsnl, xh)cursor.execute(update_sql)print('修改成功')tuichu()elif xgxz=="4":xgxsxb = str(input("请输入正确性别(输入@退出):"))while len(xgxsxb)==0:xgxsxb = str(input("性别不能为空,请重新输入性别(输入@退出):"))if xgxsxb=='@':tuichu()breakwhile xgxsxb.isdigit() != False:xgxsxb = str(input("学生性别不能为数字,请重新输入(输入@退出):"))if xgxsxb == "@":tuichu()breakupdate_sql = "update xs set sex='%s' where leanNo='%s'" % (xgxsxb, xh)cursor.execute(update_sql)print('修改成功')tuichu()elif xgxz=="5":xgxsdh = str(input("请输入正确手机号码内容可以为空(输入@退出):"))if xgxsdh=='@':tuichu()continuewhile xgxsdh.isdigit() == False and len(xgxsdh) <= 11 and len(xgxsdh) != 0:xgxsdh = str(input("电话号码必须为数字,请重新输入内容可以为空(输入@退出):"))if xgxsdh == "@":tuichu()breakwhile len(xgxsdh) > 11:xgxsdh = str(input("电话号码超过了11位,请重新输入内容可以为空(输入@退出):"))if xgxsdh == "@":tuichu()breakwhile xgxsdh.isdigit() == False and len(xgxsdh) <= 11 and len(xgxsdh) != 0:xgxsdh = str(input("电话号码必须为数字,请重新输入内容可以为空(输入@退出):"))if xgxsdh == "@":tuichu()breakupdate_sql = "update xs set phone='%s' where leanNo='%s'" % (xgxsdh, xh)cursor.execute(update_sql)print('修改成功')tuichu()elif xgxz=="6":sfzhm_1 = str(input("请输入正确学生身份证号码(输入@退出):"))if sfzhm_1 == "@":tuichu()continuewhile len(sfzhm_1) == 0:sfzhm_1 = str(input("学生身份证号码不能为空,请输入(输入@退出):"))if sfzhm_1 == "@":tuichu()breakwhile len(sfzhm_1) > 18 or len(sfzhm_1) < 18:sfzhm_1 = str(input("格式错误(身份证号码为18位)请重新输入(输入@退出):"))if sfzhm_1 == "@":tuichu()breakselect_sql = "select * from xs where sfzhm='%s'" % sfzhm_1leanno1 = cursor.execute(select_sql).fetchone()while leanno1 != None:sfzhm_1 = str(input("身份证号码不能为重复,请重新输入(输入@退出):"))if zfzhm_1 == "@":tuichu()breakselect_sql = "select * from xs where leanNo='%s'" % sfzhm_1leanno1 = cursor.execute(select_sql).fetchone()while len(sfzhm_1) == 0:sfzhm_1 = str(input("学生身份证号码不能为空,请输入(输入@退出):"))if sfzhm_1 == "@":tuichu()breakupdate_sql = "update xs set sfzhm='%s' where leanNo='%s'" % (sfzhm_1, xh)cursor.execute(update_sql)print('修改成功')tuichu()elif xgxz=="7":rxnf_1 = str(input("请输入正确学生入学年份(输入@退出):"))while len(rxnf_1) == 0:rxnf_1 = str(input("学生入学年份不能为空,请重新输入(输入@退出):"))if rxnf_1 == "@":tuichu()returnif rxnf_1 == "@":tuichu()continuewhile rxnf_1.isdigit() == False:rxnf_1 = str(input("学生入学年份必须是数字,请重新输入(输入@退出):"))if rxnf_1 == "@":tuichu()returnwhile len(rxnf_1) > 4 or len(rxnf_1) < 4:rxnf_1 = str(input("输入格式错误(年份为4位数)请重新输入:(输入@退出):"))if rxnf_1 == "@":tuichu()returnupdate_sql = "update xs set rxnf='%s' where leanNo='%s'" % (rxnf_1, xh)cursor.execute(update_sql)print('修改成功')tuichu()elif xgxz=="8":jtzz_1 = str(input("请输入正确学生家庭地址(输入@退出):"))while len(jtzz_1) == 0:jtzz_1 = str(input("学生家庭地址不能为空请重新输入(输入@退出):"))if jtzz_1 == "@":tuichu()returnif jtzz_1 == "@":tuichu()continueupdate_sql = "update xs set jtzz='%s' where leanNo='%s'" % (jtzz_1, xh)cursor.execute(update_sql)print('修改成功')tuichu()elif xgxz=="9":tuichu()breakelse:print('输入有误,请重新输入:')continue
def scxs():while True:select_sql = "select count(*) from xs"count = cursor.execute(select_sql).fetchone()[0]if count==0:print("当前没有学生信息,无法删除")tuichu()breakelse:print('------欢迎进入删除选项-----')print('--------选项如下-----------')print('\t1.根据学号删除学生信息')print('\t2.删除全部学生信息')print("\t3.根据班级删除学生信息")print('\t4.根据入学年份删除学生信息')print('\t5.退出')xzscxs=str(input("请根据序号进行选择:"))while len(xzscxs)==0:xzscxs=str(input("选择不能为空,请重新选择:"))if xzscxs=="1":while True:xhxss = str(input("请输入该学生的学号(输入@退出):"))if xhxss=="@":tuichu()returnselect_sql = "select * from xs where leanNo='%s'" % xhxssname4 = cursor.execute(select_sql).fetchone()while name4 == None:xhxss = str(input("该学生不存在,请重新输入(输入@退出):"))if xhxss == "@":tuichu()returnselect_sql = "select * from xs where leanNo='%s'" % xhxssname4 = cursor.execute(select_sql).fetchone()xzsc2 = str(input("你确定要删除该学生的信息吗?(y/n)"))if xzsc2 == "y" or xzsc2 == "Y":delete_sql = "delete from xs where leanNo='%s'" % xhxsscursor.execute(delete_sql)print("该学生的信息,已被删除")tuichu()breakelif xzsc2 == "n" or xzsc2 == "N":breakelse:print('输入有误,请重新输入')continueelif xzscxs=="2":xzml=str(input("你确定要删除所有学生信息吗?(y/n)"))if xzml=="y" or xzml=="Y":delete_sql = "delete from xs"cursor.execute(delete_sql)print("删除成功")tuichu()breakelse:continueelif xzscxs=="3":while True:xhxs = str(input("请输入要删除的班级(输入@退出):"))if xhxs=="@":tuichu()breakselect_sql = "select * from xs where classroom='%s'" % xhxsname3 = cursor.execute(select_sql).fetchone()while name3 == None:xhxs = str(input("该班级不存在,请重新输入(输入@退出):"))if xhxs=="@":tuichu()breakselect_sql = "select * from xs where classroom='%s'" % xhxsname3 = cursor.execute(select_sql).fetchone()xzsc1 = str(input("你确定要删除该班级的信息吗?(y/n)"))if xzsc1 == "y" or xzsc1 == "Y":delete_sql = "delete from xs where classroom='%s'" % xhxscursor.execute(delete_sql)print("该班级的信息,已被删除")tuichu()breakelif xzsc1=="n" or xzsc1=="N":breakelse:print('输入有误,请重新输入')continueelif xzscxs=="4":while True:rxnfsc = str(input("你要删除哪一年入学的学生请输入(输入@退出):"))if rxnfsc=="@":tuichu()breakselect_sql = "select * from xs where rxnf='%s'" % rxnfscname5 = cursor.execute(select_sql).fetchone()while name5 == None:rxnfsc = str(input("该班级不存在,请重新输入(输入@退出):"))if rxnfsc == "@":tuichu()returnselect_sql = "select * from xs where rxnf='%s'" % rxnfscname5 = cursor.execute(select_sql).fetchone()xzsc1 = str(input("你确定要删除该班级的信息吗?(y/n)"))if xzsc1 == "y" or xzsc1 == "Y":delete_sql = "delete from xs where rxnf='%s'" % rxnfsccursor.execute(delete_sql)print("该年入学的学生的信息,已被删除")tuichu()breakelif xzsc1 == "n" or xzsc1 == "N":tuichu()breakelse:print('输入有误,请重新输入')continueelif xzscxs=="5":tuichu()breakelse:print("输入有误,请重新输入")continue
def xiou(xh):xgxsxm = str(input("请输入正确姓名(输入@退出):"))if xgxsxm=="@":tuichu()returnwhile len(xgxsxm) == 0:xgxsxm = str(input("姓名不能为空,请重新输入姓名(输入@退出):"))if xgxsxm == '@':tuichu()returnwhile xgxsxm.isdigit()!=False:xgxsxm=str(input("学生姓名不能为数字,请重新输入(输入@退出):"))if xgxsxm == '@':tuichu()returnrxnf_1 = str(input("请输入正确学生入学年份(输入@退出):"))while len(rxnf_1) == 0:rxnf_1 = str(input("学生入学年份不能为空,请重新输入(输入@退出):"))if rxnf_1 == "@":tuichu()returnif rxnf_1 == "@":tuichu()returnwhile rxnf_1.isdigit() == False:rxnf_1 = str(input("学生入学年份必须是数字,请重新输入(输入@退出):"))if rxnf_1 == "@":tuichu()returnwhile len(rxnf_1) > 4 or len(rxnf_1) < 4:rxnf_1 = str(input("输入格式错误(年份为4位数)请重新输入:(输入@退出):"))if rxnf_1 == "@":tuichu()breakxgxsbj = str(input("请输入正确班级(输入@退出):"))while len(xgxsbj) == 0:xgxsbj = str(input("班级不能为空,请重新输入班级(输入@退出):"))if xgxsbj == '@':tuichu()returnxgxsnl = str(input("请输入正确年龄(输入@退出):"))while len(xgxsnl) == 0:xgxsnl = str(input("年龄不能为空请重新输入年龄(输入@退出):"))if xgxsnl == '@':tuichu()returnwhile xgxsnl.isdigit()==False:xgxsnl = str(input("学生年龄必须是数字,请重新输入(输入@退出):"))if xgxsnl == "@":tuichu()returnxgxsxb = str(input("请输入正确性别(输入@退出):"))while len(xgxsxb) == 0:xgxsxb = str(input("性别不能为空,请重新输入性别(输入@退出):"))if xgxsxb == '@':tuichu()returnwhile xgxsxb.isdigit()!=False:xgxsxb=str(input("学生性别不能为数字,请重新输入(输入@退出):"))if xgxsxb=="@":tuichu()returnwhile xgxsxb.isalpha()==True:xgxsxb=str(input("学生性别不能为字母,请重新输入(输入@退出):"))if xgxsxb=="@":tuichu()returnxgxsdh = str(input("请输入正确手机号码内容可以为空(输入@退出):"))if xgxsdh == '@':tuichu()returnwhile xgxsdh.isdigit()==False and len(xgxsdh)<=11 and len(xgxsdh)!=0:xgxsdh=str(input("电话号码必须为数字,请重新输入内容可以为空(输入@退出):"))if xgxsdh == "@":tuichu()returnwhile len(xgxsdh)>11:xgxsdh=str(input("电话号码超过了11位,请重新输入内容可以为空(输入@退出):"))if xgxsdh == "@":tuichu()returnwhile xgxsdh.isdigit()==False and len(xgxsdh)<=11 and len(xgxsdh)!=0:xgxsdh=str(input("电话号码必须为数字,请重新输入内容可以为空(输入@退出):"))if xgxsdh == "@":tuichu()returnsfzhm_1=str(input("请输入正确学生身份证号码(输入@退出):"))while len(sfzhm_1)==0:sfzhm_1 = str(input("学生身份证号码不能为空,请输入(输入@退出):"))if sfzhm_1=="@":tuichu()returnif sfzhm_1 == "@":tuichu()returnwhile len(sfzhm_1)>18 or len(sfzhm_1)<18:sfzhm_1 = str(input("格式错误(身份证号码为18位)请重新输入(输入@退出):"))if sfzhm_1 == "@":tuichu()returnjtzz_1=str(input("请输入正确学生家庭地址(输入@退出):"))while len(jtzz_1)==0:jtzz_1=str(input("学生家庭地址不能为空请重新输入(输入@退出):"))if jtzz_1 == "@":tuichu()returnif jtzz_1 == "@":tuichu()returnupdate_sql = "update xs set name='%s',classroom='%s',rxnf='%s',age='%s',sex='%s',phone='%s',sfzhm='%s',jtzz='%s' where leanNo='%s'" % (xgxsxm,xgxsbj,rxnf_1,xgxsnl,xgxsxb,xgxsdh,sfzhm_1,jtzz_1,xh)cursor.execute(update_sql)print("修改成功")tuichu()
def xsdc():xszlcx = xszl()if xszlcx != 0:select_sql = "select * from xs"result_list = cursor.execute(select_sql)a = pd.DataFrame(columns=["id", "学号", "姓名", "入学年份", "班级", "年龄", "性别", "电话号码", "身份证号码", "家庭地址"])for id,leanNo,name,rxnf,classroom,age,sex,phone,sfzhm,jtzz in result_list:a.loc[id]=(id,leanNo,name,rxnf,classroom,age,sex,phone,sfzhm,jtzz)select_sql = "select count(*) from xs"count = cursor.execute(select_sql).fetchone()[0]print("导出成功")print('一共导出了', count, '名学生')resu = r"D:\学生信息汇总.xlsx"print("文件导出在D分区根目录下(文件名称:学生信息汇总)")a.to_excel(resu, sheet_name="sheet1", index=False, header=True)tuichu()returnelse:print('学生信息为空,无法导出!')tuichu()
def dcbj():while True:bjcxx = str(input("请输入要导出的班级(输入@退出):"))if bjcxx=='@':tuichu()breakselect_sql = "select * from xs where classroom='%s'" % bjcxxr_1 = cursor.execute(select_sql).fetchone()while r_1!=None:select_sql = "select * from xs where classroom='%s'" % bjcxxresult_list = cursor.execute(select_sql)a = pd.DataFrame(columns=["学号", "姓名", "入学年份", "班级", "年龄", "性别", "电话号码", "身份证号码", "家庭地址"])for id, leanNo, name, rxnf, classroom, age, sex, phone, sfzhm, jtzz in result_list:a.loc[leanNo] = (leanNo, name, rxnf, classroom, age, sex, phone, sfzhm, jtzz)select_sql = "select count(*) from xs where classroom='%s'" % bjcxxcount = cursor.execute(select_sql).fetchone()[0]print("导出成功")print('一共导出了', count, '名学生')resu = r"D:\班级学生信息汇总.xlsx"print("文件导出在D分区根目录下(文件名称:班级学生信息汇总)")a.to_excel(resu, sheet_name="sheet1", index=False, header=True)tuichu()returnelse:print('该班级不存在,请重新输入')tuichu()continue
def xsxxdc():while True:print("-------欢迎进入导出界面-------")print("-----------选择菜单-----------")print("-------1.导出全部学生信息-----")print("-------2.导出指定班级---------")print("-------3.返回-----------------")dcxz=str(input('请根据序号进行选择:'))if dcxz=="1":xsdc()elif dcxz=="2":dcbj()elif dcxz=="3":tuichu()breakelse:print("输入错误,请重新输入")continue
def xgxsxz():xh = input("请输入该学生学号(输入@退出):")if xh=='@':tuichu()returnselect_sql = "select * from xs where leanNo='%s'" % xhname2 = cursor.execute(select_sql).fetchone()while name2 == None:xh = input("该学生不存在,请重新输入(输入@退出):")if xh=="@":tuichu()returnselect_sql = "select * from xs where leanNo='%s'" % xhname2 = cursor.execute(select_sql).fetchone()while True:print("-------欢迎进入修改学生信息界面------")print('-------------选项菜单---------------')print('-------1.修改该学生所有信息----------')print('-------2.修改该学生单项信息----------')print('-------3.退出----------')xsxgxzxx = str(input("请根据序号进行选择:"))while len(xsxgxzxx)==0:xsxgxzxx = str(input("输入不能为空,请根据序号进行选择:"))if xsxgxzxx=="1":xiou(xh=xh)if xsxgxzxx=="2":xgxs(xh=xh)if xsxgxzxx=="3":breakelse:print('输入有误,请重新输入')continue
def ckxsxx():while True:print("------欢迎进入查询学生界面------")print('-----------选项菜单-------------')print('------1.查询所有学生信息--------')print('------2.根据学号查询学生信息-----')print('------3.根据姓名查询学生信息-----')print('------4.根据班级查询学生信息-----')print("------5.根据入学年份查询---------")print('------6.根据身份证号码查询-------')print("------7.根据性别查询-------------")print('------8.退出--------------------')cxxzxx = str(input("请根据序号进行选择:"))if cxxzxx == "1":xscx()elif cxxzxx == "2":xhcx()elif cxxzxx == "3":xmcx()elif cxxzxx == "4":bjcx()elif cxxzxx=="5":nfcx()elif cxxzxx=="6":sfzhmcx()elif cxxzxx=="7":xbcx()elif cxxzxx == "8":breakelse:print("输入有误,请重新输入")continue
import requests
import json
#api 获取天气 "%E9%83%91%E5%B7%9E"为郑州,可更换任意城市,也可以利用ip地址更换任意城市
#"key":"申请的AppKey", # 在api接口网站个人中心->我的数据,接口名称上方查看
url1 = 'http://apis.juhe.cn/simpleWeather/query?city=' +"%E9%83%91%E5%B7%9E" +"&key=xxxxxxxxxxxxx"
req = requests.get(url1)
dict_weather = json.loads(req.text)
wd=dict_weather['result']['future'][0]['temperature']
fx=dict_weather['result']['future'][0]['direct']
tq=dict_weather['result']['future'][0]['weather']
print("\033[1;30;47m\t……………………欢迎进入学生管理系统……………………\033[0m")
datetime_dt=datetime.datetime.now()
print('当前时间为:',datetime_dt)
print("当前天气为:",wd,fx,tq)
print("请先登录管理员账户")
glydlzc()
while True:print("\033[1;30;47m===========欢迎进入学生管理操作界面=========\033[0m")print("----------------功能菜单-------------------")print('\t\t\t1.查看学生信息')print('\t\t\t2.添加学生信息')print('\t\t\t3.修改学生信息')print('\t\t\t4.删除学生信息')print('\t\t\t5.导出学生信息')print('\t\t\t@.进入管理员界面')print('\t\t\t0.退出管理系统')print('----------------------------------------------')connect = sqlite3.connect("gly")cursor = connect.cursor()create_sql = "create table if not exists xs(id integer primary key,leanNo text,name text,rxnf text,classroom text,age text,sex text,phone text,sfzhm text,jtzz text)"cursor.execute(create_sql)xz=str(input("请根据序号进行选择:"))while len(xz)==0:xz=str(input("选择不能为空,请重新选择:"))if xz=="1":ckxsxx()elif xz=="2":tjxs()elif xz=="3":xgxsxz()elif xz=="4":scxs()elif xz=="5":xsxxdc()elif xz=="@":glydlzc()elif xz=="0":print("\033[1;30;47m已退出,欢迎下次使用,再见!!!\033[0m")breakelse:xz=str(input("输入错误,请重新输入:"))connect.commit()cursor.close()connect.close()

激活码也可以使用随机数或者固定,以上代码实现中都有使用例子

天气api  :天气预报查询接口_免费天气API接口_免费API数据接口 - 聚合数据 (juhe.cn)

ip地址查询api:IP地址查询接口_IP归属地查询接口_免费API数据接口 - 聚合数据 (juhe.cn)

邮箱实现参考python---使用QQ邮箱发送邮件_python qq邮箱发邮件_晚风吹儿的博客-CSDN博客


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部