1. 程式人生 > >Python學生管理系統(控制檯版)

Python學生管理系統(控制檯版)

# -*- encoding:utf-8 -*-
"""
@作者:小思
@檔名:BaseDao.py
@時間:2018/10/19  8:51
@文件說明:連線資料庫和關閉資料庫的方法
"""
import pymysql
import com.zs.entity.Student as student

s = student.Student()


# 1.查詢所有學生資訊
def getAll():
    connect = pymysql.connect(host="192.168.43.21", user="user", passwd="1234", db="zs")
    cursor =
connect.cursor() cursor.execute("select * from Student") data = cursor.fetchall() connect.close() return data # 根據學生姓名查詢學生資訊 def getStudentBySname(s): connect = pymysql.connect(host="192.168.43.21", user="user", passwd="1234", db="zs") cursor = connect.cursor() sql = "select * from Student where sname='%s'"
% (s.getSname()) cursor.execute(sql) data = cursor.fetchall() connect.close() return data # 根據sid查詢單個學生資訊 def getStudentBySid(s): connect = pymysql.connect(host="192.168.43.21", user="user", passwd="1234", db="zs") cursor = connect.cursor() sql = "select * from Student where sid=%d"
% (s.getSid()) cursor.execute(sql) data = cursor.fetchone() connect.close() return data # 新增學生資訊 def addStudent(s): connect = pymysql.connect(host="192.168.43.21", user="user", passwd="1234", db="zs") cursor = connect.cursor() sql = "insert into Student values(null,'%s','%s','%d')" % (s.getSname(), s.getSsex(), s.getSage()) cursor.execute(sql) connect.commit() connect.close() # 刪除學生資訊 def delStudent(s): connect = pymysql.connect(host="192.168.43.21", user="user", passwd="1234", db="zs") cursor = connect.cursor() sql = "delete from Student where sid=%d" % (s.getSid()) cursor.execute(sql) connect.commit() connect.close() # 修改學生資訊 def updStudent(s): connect = pymysql.connect(host="192.168.43.21", user="user", passwd="1234", db="zs") cursor = connect.cursor() sql = "update Student set sname='%s',ssex='%s',sage=%d where sid=%d" % ( s.getSname(), s.getSsex(), s.getSage(), s.getSid()) cursor.execute(sql) connect.commit() connect.close() # 測試查詢所有學生資訊 # d=getAll() # print(d) # 測試查詢單個學生資訊 # stu = student.Student() # stu.setSname("小明") # sd = getStudentBySname(stu) # print(sd) # 測試新增學生資訊 # s= student.Student() # s.setSname("小明") # s.setSsex("男") # s.setSage(19) # addStudent(s) # 測試刪除學生資訊 # stu = student.Student() # stu.setSid(9) # delStudent(stu) # 測試修改 # s= student.Student() # s.setSid(15) # s.setSname("小d") # s.setSsex("男") # s.setSage(19) # updStudent(s)

entity包的Student類:

# -*- encoding:utf-8 -*-
"""
@作者:小思
@檔名:Student.py
@時間:2018/10/19  0:43
@文件說明:學生的實體類
"""


class Student:
    __sid = 0
    __sname = ""
    __ssex = ""
    __sage = 0

    def setSid(self, sid):
        self.__sid = sid

    def getSid(self):
        return self.__sid

    def setSname(self, sname):
        self.__sname = sname

    def getSname(self):
        return self.__sname

    def setSsex(self, ssex):
        self.__ssex = ssex

    def getSsex(self):
        return self.__ssex

    def setSage(self, sage):
        self.__sage = sage

    def getSage(self):
        return self.__sage



main包下的main類

# -*- encoding:utf-8 -*-
"""
@作者:小思
@檔名:main.py
@時間:2018/10/19  11:16
@文件說明:執行的主介面
"""

import com.zs.dao.BaseDao as bd
import com.zs.entity.Student as student
import re

# 歡迎的方法
def welcome():
    print("*****************************************歡迎使用《學生資訊管理系統》******************************************")
    print("1.查詢所有學生資訊   2.查詢單個學生資訊   3.新增學生資訊  4.刪除學生資訊   5.修改學生資訊   6.退出系統")

def main():
    try:
        while True:
            welcome()
            # 接收使用者填寫的序號進行功能判斷
            key = int(input("請輸入操作編號:"))
            if key == 1:
                students1 = bd.getAll()
                print('*' * 40)
                print("學號       姓名         性別        年齡")
                print("-" * 40)
                for s1 in students1:
                    print(s1[0], '        ', s1[1], '        ', s1[2], '       ', s1[3])
                    print("-"*40)
                print('*' * 40)
            elif key == 2:
                sname2 = input("請輸入要查詢的學生姓名:")
                # 判斷是否有該學生的資訊
                contain = 0
                s2 = student.Student()
                s2.setSname(sname2)
                students2 = bd.getStudentBySname(s2)
                for ss2 in students2:
                    # 不能寫ss2.getSname()
                    if ss2[1] == s2.getSname():
                        contain = 1
                if contain == 0:
                    print("查詢失敗,沒有此學生的資訊,請重新輸入!")
                else:
                    print('*' * 40)
                    print("學號       姓名         性別        年齡")
                    print("-" * 40)
                    for f in students2:
                        print(int(f[0]), '        ', f[1], '        ', f[2], '       ', f[3])
                        print("-" * 40)
                    print('*' * 40)


            elif key == 3:
                sname3 = input("請輸入學生姓名:")
                ssex3 = input("請輸入學生性別:")
                sage3 = int(input("請輸入學生年齡:"))
                print('*' * 40)
                print("姓名         性別        年齡")
                print("-" * 40)
                print(sname3, '        ',ssex3, '       ', sage3)
                print('*' * 40)
                isAdd = input("確認要將此資訊新增嗎?Y/N")
                if isAdd == 'Y':
                    s3 = student.Student()
                    s3.setSname(sname3)
                    s3.setSsex(ssex3)
                    s3.setSage(sage3)
                    bd.addStudent(s3)
                    print("新增成功")
                elif isAdd == 'N':
                    print("您已取消新增")
                else:
                    print("您輸入有誤,請重新輸入")
                print('*' * 40)
                print("學號       姓名         性別        年齡")
                print("-" * 40)
                for st in bd.getAll():
                    print(st[0], '        ', st[1], '        ', st[2], '       ', st[3])
                    print("-" * 40)
                print('*' * 40)

            elif key == 4:
                sid = int(input("請輸入要刪除學生的編號:"))
                s4 = student.Student()
                s4.setSid(sid)
                # 查詢是否有該學生
                r=bd.getStudentBySid(s4)
                if r==None:
                    print("沒有查詢到該學生的資訊,無法進行刪除!")
                else:
                    isTure = input("確認要刪除該學生資訊嗎?Y/N")
                    students4 = bd.getAll()
                    if isTure == 'Y':
                        bd.delStudent(s4)
                        print("刪除成功")
                        print('*' * 40)
                        print("學號       姓名         性別        年齡")
                        print("-" * 40)
                        for ss4 in bd.getAll():
                            print(ss4[0], '        ', ss4[1], '        ', ss4[2], '       ', ss4[3])
                            print("-" * 40)
                        print('*' * 40)
                    elif isTure == 'N':
                        print("您已取消刪除")
                        print('*' * 40)
                        print("學號       姓名         性別        年齡")
                        print("-" * 40)
                        for ss4 in students4:
                            print(ss4[0], '        ', ss4[1], '        ', ss4[2], '       ', ss4[3])
                            print("-" * 40)
                        print('*' * 40)
                    else:
                        print("您輸入有誤,請重新輸入")



            elif key == 5:
                sid=int(input("請輸入要修改學生的編號:"))
                s5 = student.Student()
                s5.setSid(sid)
                # 查詢是否有該學生
                t = bd.getStudentBySid(s5)
                if t == None:
                    print("沒有查詢到該學生的資訊,無法進行修改!")
                else:
                    print('*' * 40)
                    print("學號       姓名         性別        年齡")
                    print("-" * 40)
                    print(t[0], '        ', t[1], '        ', t[2], '       ', t[3])
                    print('*' * 40)
                    sname5=input("名字修改後為:")
                    ssex5= input("性別修改後為:")
                    sage5=int(input("年齡修改後為:"))
                    s5.setSname(sname5)
                    s5.setSsex(ssex5)
                    s5.setSage(sage5)
                    bd.updStudent(s5)
                    print('*' * 40)
                    print("學號       姓名         性別        年齡")
                    print("-" * 40)
                    print(sid, '        ', sname5, '        ', ssex5, '       ', sage5)
                    print('*' * 40)
                    isTure=input("確認要修改嗎?Y/N")
                    if isTure=="Y":
                        upd = bd.getStudentBySid(s5)
                        print("修改成功")
                        print('*' * 40)
                        print("學號       姓名         性別        年齡")
                        print("-" * 40)
                        for stu5 in bd.getAll():
                            print("-" * 40)
                            print(stu5[0], '        ', stu5[1], '        ', stu5[2], '       ', stu5[3])
                        print('*' * 40)
                    elif isTure=="N":
                        print("您已取消修改")
                        print('*' * 40)
                        print("學號       姓名         性別        年齡")
                        print("-" * 40)
                        for stu5 in bd.getAll():
                            print("-" * 40)
                            print(stu5[0], '        ', stu5[1], '        ', stu5[2], '       ', stu5[3])
                        print('*' * 40)
                    else:
                        print("您輸入有誤,請重新輸入")

            elif key == 6:
                sel=input("您確定要離開我了嗎?Y/N")
                if sel=="Y":
                    print("感謝您的使用!")
                    break
                elif sel=="N":
                    main()
                else:
                    print("您輸入有誤,請重新輸入")

            else:
                print("沒有此操作,請輸入正確編號!")
    except ValueError:
        print("您的操作可能存在錯誤,原因如下:\n(1)請您輸入操作之後再進行回車\n(2)您輸入的值欄位值不匹配,請重新輸入!")
        main()

# 主頁面呼叫主方法
main()

在主介面執行即可
專案執行介面圖:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
說在最後的話:編寫實屬不易,若喜歡或者對你有幫助記得點贊+關注或者收藏哦~