基于python与mysql交互的学生管理系统

"""
名片管理系统:
- 需要完成的基本功能:
  1. 添加名片
  2. 删除名片
  3. 修改名片
  4. 查询名片
  5. 退出系统
- 程序运行后,除非选择退出系统,否则重复执行功能
"""
#************************************************************************************************************
import pymysql
#函数定义
#************************************************************
#二选一选择界面函数
def func_judge2(strr):
    print("=" * 30)
    str1 = "名片"+strr
    print(str1.center(20))
    print("1.继续"+strr)
    print("2.返回主菜单")
    print("=" * 30)
#************************************************************
#三选一选择界面函数
def func_judge3(strr):
    print("=" * 30)
    str1 = "名片"+strr
    print(str1.center(20))
    print("1.确认"+strr)
    print("2.重新输入")
    print("3.返回主菜单")
    print("=" * 30)
#************************************************************
#n选项选择防用户输入错误导致报错的  操作输入函数
def num_judge1(n):
    str1 = "1"
    for i in range(n):
        str1 = str1 + str(i + 1)
    while True:
        judge1 = input("请输入要执行操作:")
        if (judge1 in str1) and (len(judge1) == 1):
            return  judge1
            break
        else:
            print("操作有误,请重新选择:")
#************************************************************
#登录函数
def denglu():
    flag = 1
    sql_select = "select name,pwd from teacher;"
    name = input("请输入用户名:")
    pwd = input("请输入密码:")
    try:
        cur.execute(sql_select)
        T = cur.fetchall()
        j = 0
        L_name = []
        for i in T:
            L_name.append(i[0])
        if name in L_name:
            for i in T:
                # print("用户名是:%s,密码是:%s"%(i[0],i[1]))
                if name == i[0]:
                    if i[1] == pwd:
                        print("登录成功!")
                        flag = 0
                        break
                    else:
                        print("密码输入错误!")
                        break
        else:
            print("用户不存在!请注册!")
    except Exception as e:
        print("操作有误,请稍后再试!")
    return flag
#************************************************************
#注册函数
def zhuce():
    aql_insert = "insert into teacher(name,pwd) VALUES(%s,%s)"
    name = input("请输入需要注册的昵称:")
    pwd = input("请输入密码:")
    pwd1 = input("请再次输入密码:")
    if pwd == pwd1:
        try:
            cur.execute(aql_insert,[name,pwd])
            conn.commit()
            print("注册成功!")
        except Exception as e:
            conn.rollback()
            print("用户已存在,请重新输入!")
    else:
        print("两次密码输入错误!")
#************************************************************
#查询函数
def chaxun(by,strr,str1):
    success = 0
    if by == "ID":
        sql_select = "select * from student where ID = %s;"
    elif by == "name":
        sql_select = "select * from student where name = %s;"
    elif by == "class1":
        sql_select = "select * from student where class1 = %s;"
    elif by == "xingshi":
        sql_select ="select * from student where name like %s;"
    try:
        cur.execute(sql_select,[strr])
        L = cur.fetchall()
        if L != ():
            success = 1
            print("你要%s的学生名片信息为:"%str1)
            print("+"+("-"*15 + "+")*3)
            print("|" + " " * 5 + "name" + " " * 6 + "|" + " " * 6 + "ID" + " " * 7 + "|" + " " * 4 + "class1" + " " * 5 + "|")
            for i in range(len(L)):
                print("|",end = "")
                for j in range(3):
                    x = 15 - len(L[i][j])
                    x1 = x // 2
                    x2 = x - x1
                    print(" " * x1 + L[i][j] + " " * x2 + "|", end="")
                print()
            print("+"+("-" * 15 + "+") * 3)
        else:
            print("该学生不存在!")
    except Exception as e:
        conn.rollback()
        print("数据调取失败,请稍后再试!")
    return success
#************************************************************
#删除函数
def shanchu(id):
    sql_delete = "delete from student where ID = %s;"
    try:
        cur.execute(sql_delete,[id])
        conn.commit()
    except Exception as e:
        conn.rollback()
        print("数据删改失败,请稍后再试!")
#************************************************************************************************************
#系统准备与介绍
print("*"*40)
print("该系统为测试系统".center(30))
print("初始用户名:zs")
print("初始用户密码:123")
print("运行前请确保有数据库:python")
print("首次使用将会自动建立:teacher 与 student表")
print("*"*40)
#************************************************************************************************************
tea = 0
stu = 0
conn = pymysql.connect(host="localhost",
                           user="root",
                           passwd="123456",
                           port=3306,
                           db="python",
                           charset="utf8")
cur = conn.cursor()
try:
    sql_select = "create table teacher(" \
                 "name varchar(50) primary key," \
                 "pwd varchar(50)" \
                 ")CHARACTER set utf8;"
    cur.execute(sql_select)
    print("teacher表创建成功!")
    # ************************************************************
    # 用来存储用户信息:1.用户名 2.密码    并将信息存入数据库中
    dic = {
     "name": "zs", "pwd": "123"}
    str1 = dic['name']
    str2 = dic['pwd']
    sql_insert = "insert into teacher VALUE (%s,%s);"
    cur.execute(sql_insert, [str1, str2])
    tea = 1
except Exception as e:
    pass
conn.commit()
cur.close()
conn.close()
#************************************************************************************************************
conn = pymysql.connect(host="localhost",
                           user="root",
                           passwd="123456",
                           port=3306,
                           db="python",
                           charset="utf8")
cur = conn.cursor()
try:
    sql_select = "create table student(" \
                    "name varchar(50)," \
                    "ID varchar(50) primary key," \
                     "class1 varchar(50)" \
                    ")character set utf8;"
    cur.execute(sql_select)
    print("student表创建成功!")
    # ************************************************************
    # 学生信息 并将学生信息存入数据库中
    card_list = [{
     'name': 'zs', 'ID': '001', 'class1': '1701'}, {
     'name': 'ls', 'ID': '002', 'class1': '1701'},{
     'name': 'ww', 'ID': '003', 'class1': '1701'}]
    for i in range(3):
        str1 = card_list[i]['name']
        str2 = card_list[i]['ID']
        str3 = card_list[i]['class1']
        sql_insert = "insert into student VALUE (%s,%s,%s);"
        cur.execute(sql_insert, [str1, str2, str3])
    tea = 1
except Exception as e:
    pass
conn.commit()
cur.close()
conn.close()

if tea == 1 or stu == 1:
    print("欢迎首次使用名片管理系统V8.0 !")
#************************************************************************************************************
#设定用户是否成功登录的标志
flag = 1
#登录界面
while flag:
    # 登录界面
    print("=" * 40)
    print("名片管理系统 V8.0".center(30))
    print("1.登录")
    print("2.注册")
    print("=" * 40)
    caozuo = input("请输入要执行的操作:")
# ************************************************************************************************************
    #登录操作
    if caozuo == "1":
        conn = pymysql.connect(host="localhost",
                               user="root",
                               passwd="123456",
                               port=3306,
                               db="python",
                               charset="utf8")
        cur = conn.cursor()
        # *********************************************************
        flag = denglu()
        # **********************************************************
        cur.close()
        conn.close()
#************************************************************************************************************
    #注册操作
    elif caozuo == '2':
        conn = pymysql.connect(host="localhost",
                               user="root",
                               passwd="123456",
                               port=3306,
                               db="python",
                               charset="utf8")
        cur = conn.cursor()
        # *********************************************************
        zhuce()
        # **********************************************************
        cur.close()
        conn.close()
#************************************************************************************************************
# 登录之后的界面
while True:
    print("="*40)
    print("名片管理系统 V1.0".center(30))
    print("1.添加名片")
    print("2.删除名片")
    print("3.修改名片")
    print("4.查询名片")
    print("5.退出")
    print("="*40)
    caozuo = input("请输入要执行的操作:")
# ************************************************************************************************************
    #这是添加操作
    if caozuo == "1":
       judge1 = "1"
       while judge1 == "1":
            ID = input("请输入学号:")
            name = input("请输入姓名:")
            class1 = input("请输入班级:")
            # *********************************************************
            conn = pymysql.connect(host="localhost",
                                   user="root",
                                   passwd="123456",
                                   port=3306,
                                   db="python",
                                   charset="utf8")
            cur = conn.cursor()
            # ******************
            aql_insert = "insert into student(name,ID,class1) VALUES(%s,%s,%s)"
            try:
                cur.execute(aql_insert, [name,ID,class1])
                conn.commit()
                print("添加成功!")
            except Exception as e:
                conn.rollback()
                print("录入失败!该学生ID已存在!")
            # ******************
            cur.close()
            conn.close()
            # **********************************************************
            func_judge2("输入")
            judge1 = num_judge1(2)
# ************************************************************************************************************
    #删除操作
    elif caozuo == "2":
        while True:
            id = input("请输入要删除学生名片的学号:")
            judge5 = "4"
            judge4 = "1"  # 1继续执行
            # *********************************************************
            conn = pymysql.connect(host="localhost",
                                   user="root",
                                   passwd="123456",
                                   port=3306,
                                   db="python",
                                   charset="utf8")
            cur = conn.cursor()
            # ******************
            success = chaxun("ID",id,"删除")    #先查询
            # ******************
            cur.close()
            conn.close()
            # **********************************************************
            if success == 1:
                func_judge3("删除")
                judge5 = num_judge1(3)
            else:
                func_judge2("删除")
                judge4 = num_judge1(2)
            if judge5 == "1":
                # *********************************************************
                conn = pymysql.connect(host="localhost",
                                       user="root",
                                       passwd="123456",
                                       port=3306,
                                       db="python",
                                       charset="utf8")
                cur = conn.cursor()
                # ******************
                shanchu(id)  #后删除
                # ******************
                cur.close()
                conn.close()
                # **********************************************************
                print("学生信息删除成功!")
                func_judge2("删除")
                judge4 = num_judge1(2)
            elif judge5 == "3":
                break
            if judge4 == "2":
                break
# ************************************************************************************************************
    #修改操作
    elif caozuo == "3":
        while True:
            id = input("请输入要修改学生名片的学号:")
            judge5 = "4"
            judge4 = "1"  # 1继续执行
            # *********************************************************
            conn = pymysql.connect(host="localhost",
                                   user="root",
                                   passwd="123456",
                                   port=3306,
                                   db="python",
                                   charset="utf8")
            cur = conn.cursor()
            # ******************
            success = chaxun("ID",id,"修改")    #先查询
            # ******************
            cur.close()
            conn.close()
            # **********************************************************
            if success == 1:
                func_judge3("修改")
                judge5 = num_judge1(3)
            else:
                func_judge2("修改")
                judge4 = num_judge1(2)
            if judge5 == "1":
                name = input("请输入姓名:")
                class1 = input("请输入班级:")
                # *********************************************************
                conn = pymysql.connect(host="localhost",
                                       user="root",
                                       passwd="123456",
                                       port=3306,
                                       db="python",
                                       charset="utf8")
                cur = conn.cursor()
                # ******************
                #后修改
                sql_update = "update student set name = %s,class1 = %s where ID = %s;"
                cur.execute(sql_update, [name,class1,id])
                conn.commit()
                # ******************
                cur.close()
                conn.close()
                # **********************************************************
                print("学生信息修改成功!")
                func_judge2("修改")
                judge4 = num_judge1(2)
            elif judge5 == "3":
                break
            if judge4 == "2":
                break
# ************************************************************************************************************
    #查询操作
    elif caozuo == "4":
        judge7 = "1"
        while judge7 == "1":
            judge10 = 1
            print("=" * 30)
            print("名片查询".center(20))
            print("1.学生信息一览")
            print("2.按姓名查询")
            print("3.按学号查询")
            print("4.按班级查询")
            print("5.按姓氏查询")
            print("6.返回主菜单")
            print("=" * 30)
            caozuo1 = input("请输入你要执行的操作:")
            # *********************************************************
            conn = pymysql.connect(host="localhost",
                                   user="root",
                                   passwd="123456",
                                   port=3306,
                                   db="python",
                                   charset="utf8")
            cur = conn.cursor()
            # ******************
            if caozuo1 == "1":
                sql_select = "select * from student;"
                cur.execute(sql_select)
                L = cur.fetchall()
                print("+"+("-" * 15 + "+") * 3)
                print("|"+" "*5+"name"+" "*6+"|"+" "*6+"ID"+" "*7+"|"+" "*4+"class1"+" "*5+"|")
                for i in range(len(L)):
                    print("|", end="")
                    for j in range(3):
                        x = 15 - len(L[i][j])
                        x1 = x//2
                        x2 = x - x1
                        print(" "*x1+L[i][j]+" "*x2+"|",end = "")
                    print()
                print("+"+("-" * 15 + "+") * 3)
            elif caozuo1 == "2":
                name = input("请输入查询学生姓名:")
                success = chaxun("name", name, "查询")
            elif caozuo1 == "3":
                ID = input("请输入查询学生学号:")
                success = chaxun("ID", ID, "查询")
            elif caozuo1 == "4":
                class1 = input("请输入查询学生班级:")
                success = chaxun("class1", class1, "查询")
            elif caozuo1 == "5":
                xingshi = input("请输入学生的姓氏:")
                success = chaxun("xingshi", xingshi+"%", "查询")
            elif caozuo1 == "6":
                break
            else:
                print("请输入正确操作!")
            # ******************
            cur.close()
            conn.close()
            # **********************************************************
            func_judge2("查询")
            judge7 = num_judge1(2)
# ************************************************************************************************************
    elif caozuo == "5":
        print("谢谢使用,已成功退出!")
        break
    else:
         print("操作指令有误,请重新输入!")

你可能感兴趣的:(python整体项目,python,mysql,学生管理系统,源代码)