1. 程式人生 > >python實現簡單學生管理系統

python實現簡單學生管理系統

使用python實現了一個簡單的學生管理系統,包含註冊,登陸,修改密碼和簡單查詢資訊等簡單功能,後續感興趣可以自己新增上其他資訊或與已有的學生資訊表相關聯。註冊後存入資料庫對應表格中,並對密碼進行加密,表格比較簡單,只有id,姓名,密碼和is_delete四個欄位,程式碼使用時其實還應該加上異常捕捉,由於程式碼比較簡單這裡就沒有使用。下面上程式碼:
from pymysql import connect


class Userlogin(object):
    def __init__(self):
        self.conn = connect(host='localhost', port=3306, user='root', password='mysql',
                            database='students', charset='utf8')
        self.cur = self.conn.cursor()
        self.is_login = 0
        self.login_name = ''

    def __del__(self):
        self.cur.close()
        self.conn.close()

    def reg(self):
        '''使用者註冊'''
        uname = input('請輸入要註冊的使用者名稱:')
        sql = '''select count(*) from users where uname = %s;'''
        self.cur.execute(sql, uname)
        res = self.cur.fetchall()[0][0]
        print(res)
        if res:
            print('使用者名稱已存在')
            return
        while True:
            upwd = input('請輸入要註冊的密碼:')
            if not (len(upwd) >= 6 and len(upwd) <= 20):
                print('密碼長度需為6-20位!!!')
                continue
            upwd_1 = input('請再輸一次:')
            if upwd_1 == upwd:
                break
            else:
                print('兩次輸入不一致,請重新輸入!!!')

        sql = '''insert into users(uname, upwd) value(%s, password(%s));'''
        param = [uname, upwd]
        self.cur.execute(sql, param)
        self.conn.commit()

    def login(self):
        '''使用者登陸'''
        uname = input('請輸入要登入的使用者名稱:')
        upwd = input('請輸入密碼:')
        sql = '''select count(*) from users where uname = %s and upwd = password(%s) and is_delete = 0;'''
        param = [uname, upwd]
        self.cur.execute(sql, param)
        res = self.cur.fetchall()[0][0]
        if not res:
            print('使用者名稱或密碼錯誤,請重新登陸')
        else:
            print('登陸成功')
            self.is_login = 1
            self.login_name = uname

    def select(self):
        '''查詢所有學生'''
        sql = '''select * from users where is_delete = 0;'''
        self.cur.execute(sql)
        table_data = self.cur.fetchall()
        for data in table_data:
            print(data)

    def change_pwd(self):
        '''更改密碼'''
        while True:
            new_pwd = input('請輸入新密碼:')
            if not (len(new_pwd) >= 6 and len(new_pwd) <= 20):
                print('密碼長度需為6-20位!!!')
                continue
            new_pwd1 = input('請再輸一次:')
            if new_pwd != new_pwd1:
                print('兩次輸入不一致!!!')
            else:
                break
        sql = '''update users set upwd = password(%s) where uname = %s'''
        params = [new_pwd, self.login_name]
        self.cur.execute(sql, params)
        print('修改成功,請重新登陸')
        self.is_login = 0

    def logoff(self):
        '''使用者登出'''
        if self.is_login == 0:
            print('當前沒有使用者登陸')
            return
        self.is_login = 0
        print('登出成功')

    def run(self):
        while True:
            if self.is_login == 0:
                print('1.註冊')
                print('2.登陸')
                print('3.退出')
                commond = input('請輸入要操作的數字:')
                if commond == '1':
                    self.reg()
                elif commond == '2':
                    self.login()
                elif commond == '3':
                    break
                else:
                    print('請輸入正確的運算元!!!')
            elif self.is_login == 1:
                print('1.查詢')
                print('2.修改密碼')
                print('3.登出登陸')
                commond = input('請輸入要操作的數字:')
                if commond == '1':
                    self.select()
                elif commond == '2':
                    self.change_pwd()
                elif commond == '3':
                    self.logoff()
                else:
                    print('請輸入正確的指令!!!')
            else:
                self.is_login = 0


def main():
    reglogin = Userlogin()
    reglogin.run()


if __name__ == '__main__':
    main()