2018-09-05 學(xué)生管理系統(tǒng)

1.01-mainpage.py

import file_manager

# 全局變量
file_name = 'user_info.json'  # 保存所有用戶的信息的文件

key_user_name = 'user_name'
key_password = 'password'
# ==========================注冊=================
"""
為了下次打開系統(tǒng)的時(shí)候能夠正常登錄,注冊成功的信息需要保存。保存用戶名和密碼
一個(gè)系統(tǒng)可以注冊多個(gè)用戶,可以用列表保存多個(gè)用戶式撼。通過字典來保存每個(gè)用戶名和密碼
[
    {'user_name':'用戶名','password':'密碼'}
]
保存到userinfo.json中
"""
def is_register(user_name):
    """
    判斷指定用戶名是否已經(jīng)注冊過
    :param user_name:
    :return:
    """
    all_user = file_manager.read_json_file(file_name)
    if not all_user:
        return False
    for user in all_user:
        if user[key_user_name] == user_name:
            return True
    return False

def get_all_user():
    """
    獲取所有的用戶
    :return:
    """
    all_user =  file_manager.read_json_file(file_name)
    if all_user:
        return all_user
    return []

def register():
    # 1.輸入用戶名
    while True:
        user_name = input('請輸入一個(gè)用戶名(3-10位):')
        # 判斷是否符合格式要求
        if not 3 <= len(user_name) <= 10:
            print('輸入有誤,請重新輸入!')
            continue
        # 判斷是否已經(jīng)注冊過
        if is_register(user_name):
            print('%s,已經(jīng)注冊過易猫,請重新輸入!'% user_name)
            continue
        print('用戶名可用具壮!')
        break

    # 2.輸入密碼
    while True:
        password = input('請輸入密碼(6-16):')
        if not 6 <= len(password) <= 16 :
            print('輸入密碼有誤准颓,請重新輸入!')
            continue
        re_password = input('確認(rèn)密碼:')
        if password != re_password:
            print('和第一次輸入的密碼不一樣嘴办,請重新輸入瞬场!')
            continue
        break
    #3. 保存用戶名和密碼
    all_user = get_all_user()
    all_user.append({key_user_name:user_name,key_password:password})
    re = file_manager.write_json_file(file_name,all_user)
    if re:
        print('注冊成功!')
    else:
        print('注冊失斀Ы肌贯被!')
# =====================登錄=====================
def login():
    """
    登錄
    :return:
    """
    user_name = input('請輸入用戶名:')
    password = input('請輸入密碼:')
    #1.看輸入的用戶名是否已經(jīng)注冊過
    all_user = get_all_user()
    for user in all_user:
        if user[key_user_name] == user_name:
            if user[key_password] == password:
                print('登錄成功!')
                return user_name
            else:
                print('密碼錯(cuò)誤妆艘,登錄失斖睢!')
                return
    print('沒有注冊批旺,登錄失敾仙隆!')
    return None


# =========================主頁==================
import student_system
def show_main_page():
    while True:
        print(file_manager.read_text_file('login.txt'))
        value = input('請選擇(1-3):')
        # 1.退出
        if value == '3':
            break
        #2.注冊
        elif value == '2':
            register()

        elif value == '1':
            user_name = login()
            if user_name:
                # 如果登錄成功就進(jìn)入管理系統(tǒng)
                student_system.user_name = user_name
                student_system.main_page()


        else:
            print('輸入有誤汽煮,重新選擇!')

# 1.顯示登錄界面(主界面)
if __name__ == '__main__':
    #1.顯示登錄界面(主界面)
    show_main_page()

2.file_manager.py

import json

def write_json_file(file_name,content):
    """
    將內(nèi)容寫入json文件中
    :param file_name: 文件名
    :param content: 要寫的內(nèi)容
    :return: 是否寫入成功
    """
    try:
        with open('./files/'+file_name,'w',encoding='utf-8') as f:
            json.dump(content,f,ensure_ascii=False,indent=2)
            return True
    except:
        return False

def read_json_file(file_name):
    """
    讀取json文件的內(nèi)容
    :param file_name: 文件名
    :return: 文件內(nèi)容
    """
    try:
        with open('./files/'+file_name,encoding='utf-8') as f:
            return json.load(f)
    except:
        return None

def read_text_file(file_name):
    """
    獲取文本文件的內(nèi)容
    :param file_name:文件名
    :return:文件中的內(nèi)容
    """
    try:
        with open('./files/'+file_name,encoding='utf-8') as f:
            return f.read()
    except FileNotFoundError:
        print('文件不存在')
        return None

3.student_system.py

import file_manager
user_name = ''
# =========================添加學(xué)生=======

"""
一個(gè)賬戶對應(yīng)管理不同的學(xué)生---不同的用戶對應(yīng)不同的json文件
json文件中的格式:
{
    'name':'',
    'number':個(gè)數(shù),
    'all_students':[
        {'name':,'age':,'tel':,'id':}
    ]

}
"""
key_number = 'number'
key_all_students = 'all_students'
key_name = 'name'
key_age = 'age'
key_tel = 'tel'
key_id = 'id'
def get_system_info():
    """獲取系統(tǒng)文件內(nèi)容"""
    system_info = file_manager.read_json_file(user_name+'.json')
    if system_info:
        return system_info
    return {}
def creat_id():
    """產(chǎn)生學(xué)號"""
    system_info = get_system_info()
    number = system_info.get(key_number,0)
    number += 1
    id = 'stu' + str(number).rjust(4,'0')
    return id,number



def add_student():
    while  True:

        # 1.輸入信息
        name = input('姓名:')
        age = input('年齡:')
        tel = input('電話:')
        # 2.產(chǎn)生id
        id, number = creat_id()

        # 3.創(chuàng)建學(xué)生
        stu = {key_name: name, key_age: age, key_tel: tel, key_id: id}

        # 4.保存學(xué)生信息
        system_info = get_system_info()
        all_student = system_info.get(key_all_students,[])
        all_student.append(stu)
        # 5.保存到文件中
        system_info[key_all_students] = all_student
        system_info[key_number] = number
        re = file_manager.write_json_file(user_name + '.json', system_info)
        if re:
            print('添加成功搏熄!')
        else:
            print('添加失敗')

        print('1.繼續(xù)添加')
        print('2.返回')
        value = input('請選擇(1/2):')
        if value == '1':
            continue
        else:
            break
#===================查找學(xué)生==============
def find_student():
    all_students = get_system_info().get(key_all_students,[])
    if not all_students:
        print('目前還沒有學(xué)生!')
        return
    print('1.查看所有的學(xué)生')
    print('2.根據(jù)姓名查找學(xué)生')
    print('3.根據(jù)學(xué)號查找學(xué)生')
    value = input('請選擇(1-3):')

    if value == '1':
        for stu in all_students:
            print('姓名:%s 學(xué)號:%s 年齡:%s 電話:%s'%(stu[key_name],stu[key_id],stu[key_age],stu[key_tel]))
    if value == '2':
        name = input('姓名:')
        for stu in all_students:
            if stu[key_name] == name:
                print('姓名:%s 學(xué)號:%s 年齡:%s 電話:%s' % (stu[key_name], stu[key_id], stu[key_age], stu[key_tel]))
                break
        else:
            print('沒有該學(xué)生O境唷心例!')
    if value == '3':
        id = input('學(xué)號:')
        for stu in all_students:
            if stu[key_id] == id:
                print('姓名:%s 學(xué)號:%s 年齡:%s 電話:%s' % (stu[key_name], stu[key_id], stu[key_age], stu[key_tel]))
                break
        else:
            print('沒有該學(xué)生!')
#=================================刪除學(xué)生============================
def delete_student():
    print('1.按姓名刪除學(xué)生')
    print('2.按學(xué)號刪除學(xué)生')
    system_info = get_system_info()
    all_students = get_system_info().get(key_all_students,[])
    if not all_students:
        print('目前還沒有學(xué)生鞋囊!')
        return
    value = input('請選擇(1-2):')
    if value == '1':
        name = input('請輸入你要刪除學(xué)生的姓名:')
        for stu in all_students[:]:
            if stu[key_name] == name:
                all_students.remove(stu)
                print('該學(xué)生已刪除')
                break
        system_info[key_all_students] = all_students
        file_manager.write_json_file(user_name+'.json',system_info)
    elif value == '2':
        id = input('請輸入你要刪除學(xué)生的學(xué)號:')
        for stu in all_students[:]:
            if stu[key_id] == id:
                all_students.remove(stu)
                print('該學(xué)生已刪除')
                break
        system_info[key_all_students] = all_students
        file_manager.write_json_file(user_name+'.json',system_info)

def revise_student():
    print('1.按姓名修改學(xué)生')
    print('2.按學(xué)號修改學(xué)生')
    system_info = get_system_info()
    all_students = get_system_info().get(key_all_students, [])
    if not all_students:
        print('目前還沒有學(xué)生止后!')
        return
    value = input('請選擇(1-2):')
    if value == '1':
        name = input('請輸入你要修改學(xué)生的姓名:')
        for stu in all_students[:]:
            if stu[key_name] == name:
                age = input('年齡:')
                tel = input('電話:')
                stu[key_age] = age
                stu[key_tel] = tel
                print('修改學(xué)生信息成功')
        system_info[key_all_students] = all_students
        file_manager.write_json_file(user_name + '.json', system_info)
    if value == '2':
        id = input('請輸入你要修改學(xué)生的學(xué)號:')
        for stu in all_students[:]:
            if stu[key_id] == id:
                name = input('名字:')
                age = input('年齡:')
                tel = input('電話:')
                stu[key_name] = name
                stu[key_age] = age
                stu[key_tel] = tel
                print('修改學(xué)生信息成功')
        system_info[key_all_students] = all_students
        file_manager.write_json_file(user_name + '.json', system_info)

# ==========================主頁=========
def main_page():
    while True:
        print(file_manager.read_text_file('system.txt'))
        value = input('請選擇(1-5):')

        if value == '5':
            break
        elif value == '1':
            add_student()

        elif value == '2':
            find_student()


        elif value == '3':
            delete_student()


        elif value == '4':
            revise_student()

        else:
            print('輸入有誤,重新輸入')

用戶注冊與登錄

===============================
==  ==  ==  ==  ==  ==  ==  ==
===========學(xué)生管理系統(tǒng)=========
            1.登 錄
            2.注 冊
            3.退 出
==  ==  ==  ==  ==  ==  ==  ==
===============================
請選擇(1-3):2
請輸入一個(gè)用戶名(3-10位):hyc
用戶名可用!
請輸入密碼(6-16):123456
確認(rèn)密碼:123456
注冊成功译株!
===============================
==  ==  ==  ==  ==  ==  ==  ==
===========學(xué)生管理系統(tǒng)=========
            1.登 錄
            2.注 冊
            3.退 出
==  ==  ==  ==  ==  ==  ==  ==
===============================
請選擇(1-3):1
請輸入用戶名:hyc
請輸入密碼:123456
登錄成功瓜喇!

添加學(xué)生與查看學(xué)生

+++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                   +
       welcome aaa inter student manager system
+                                                   +
+                  1. Add Student                   +
+                  2. Find Student                  +
+                  3. Delete Student                +
+                  4. Revise StudentInfo            +
+                  5. Back                          +
+                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++
請選擇(1-5):1
姓名:江秀成
年齡:23
電話:123456
添加成功!
1.繼續(xù)添加
2.返回
請選擇(1/2):2
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                   +
       welcome aaa inter student manager system
+                                                   +
+                  1. Add Student                   +
+                  2. Find Student                  +
+                  3. Delete Student                +
+                  4. Revise StudentInfo            +
+                  5. Back                          +
+                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++
請選擇(1-5):2
1.查看所有的學(xué)生
2.根據(jù)姓名查找學(xué)生
3.根據(jù)學(xué)號查找學(xué)生
請選擇(1-3):1
姓名:江秀成 學(xué)號:stu0001 年齡:23 電話:123456
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                   +
       welcome aaa inter student manager system
+                                                   +
+                  1. Add Student                   +
+                  2. Find Student                  +
+                  3. Delete Student                +
+                  4. Revise StudentInfo            +
+                  5. Back                          +
+                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++
請選擇(1-5):1
姓名:袁學(xué)斌
年齡:24
電話:345
添加成功歉糜!
1.繼續(xù)添加
2.返回
請選擇(1/2):1
姓名:王渠江
年齡:78
電話:2345
添加成功乘寒!
1.繼續(xù)添加
2.返回
請選擇(1/2):2
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                   +
       welcome aaa inter student manager system
+                                                   +
+                  1. Add Student                   +
+                  2. Find Student                  +
+                  3. Delete Student                +
+                  4. Revise StudentInfo            +
+                  5. Back                          +
+                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++
請選擇(1-5):2
1.查看所有的學(xué)生
2.根據(jù)姓名查找學(xué)生
3.根據(jù)學(xué)號查找學(xué)生
請選擇(1-3):1
姓名:江秀成 學(xué)號:stu0001 年齡:23 電話:123456
姓名:袁學(xué)斌 學(xué)號:stu0002 年齡:24 電話:345
姓名:王渠江 學(xué)號:stu0003 年齡:78 電話:2345

刪除學(xué)生

+++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                   +
       welcome aaa inter student manager system
+                                                   +
+                  1. Add Student                   +
+                  2. Find Student                  +
+                  3. Delete Student                +
+                  4. Revise StudentInfo            +
+                  5. Back                          +
+                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++
請選擇(1-5):3
1.按姓名刪除學(xué)生
2.按學(xué)號刪除學(xué)生
請選擇(1-2):1
請輸入你要刪除學(xué)生的姓名:江秀成
該學(xué)生已刪除
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                   +
       welcome aaa inter student manager system
+                                                   +
+                  1. Add Student                   +
+                  2. Find Student                  +
+                  3. Delete Student                +
+                  4. Revise StudentInfo            +
+                  5. Back                          +
+                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++
請選擇(1-5):2
1.查看所有的學(xué)生
2.根據(jù)姓名查找學(xué)生
3.根據(jù)學(xué)號查找學(xué)生
請選擇(1-3):1
姓名:袁學(xué)斌 學(xué)號:stu0002 年齡:24 電話:345
姓名:王渠江 學(xué)號:stu0003 年齡:78 電話:2345

修改學(xué)生

+++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                   +
       welcome aaa inter student manager system
+                                                   +
+                  1. Add Student                   +
+                  2. Find Student                  +
+                  3. Delete Student                +
+                  4. Revise StudentInfo            +
+                  5. Back                          +
+                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++
請選擇(1-5):4
1.按姓名修改學(xué)生
2.按學(xué)號修改學(xué)生
請選擇(1-2):1
請輸入你要修改學(xué)生的姓名:袁學(xué)斌
年齡:56
電話:678
修改學(xué)生信息成功
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+                                                   +
       welcome aaa inter student manager system
+                                                   +
+                  1. Add Student                   +
+                  2. Find Student                  +
+                  3. Delete Student                +
+                  4. Revise StudentInfo            +
+                  5. Back                          +
+                                                   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++
請選擇(1-5):2
1.查看所有的學(xué)生
2.根據(jù)姓名查找學(xué)生
3.根據(jù)學(xué)號查找學(xué)生
請選擇(1-3):1
姓名:袁學(xué)斌 學(xué)號:stu0002 年齡:56 電話:678
姓名:王渠江 學(xué)號:stu0003 年齡:78 電話:2345
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市现恼,隨后出現(xiàn)的幾起案子肃续,更是在濱河造成了極大的恐慌,老刑警劉巖叉袍,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件始锚,死亡現(xiàn)場離奇詭異,居然都是意外死亡喳逛,警方通過查閱死者的電腦和手機(jī)瞧捌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來润文,“玉大人姐呐,你說我怎么就攤上這事〉潋颍” “怎么了曙砂?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長骏掀。 經(jīng)常有香客問我鸠澈,道長,這世上最難降的妖魔是什么截驮? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任笑陈,我火速辦了婚禮,結(jié)果婚禮上葵袭,老公的妹妹穿的比我還像新娘涵妥。我一直安慰自己,他們只是感情好坡锡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布蓬网。 她就那樣靜靜地躺著,像睡著了一般鹉勒。 火紅的嫁衣襯著肌膚如雪帆锋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天贸弥,我揣著相機(jī)與錄音,去河邊找鬼海渊。 笑死绵疲,一個(gè)胖子當(dāng)著我的面吹牛哲鸳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盔憨,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼徙菠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了郁岩?” 一聲冷哼從身側(cè)響起婿奔,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎问慎,沒想到半個(gè)月后萍摊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡如叼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年冰木,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笼恰。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踊沸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出社证,到底是詐尸還是另有隱情逼龟,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布追葡,位于F島的核電站腺律,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辽俗。R本人自食惡果不足惜疾渣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崖飘。 院中可真熱鬧榴捡,春花似錦、人聲如沸朱浴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翰蠢。三九已至项乒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梁沧,已是汗流浹背檀何。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人频鉴。 一個(gè)月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓栓辜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親垛孔。 傳聞我的和親對象是個(gè)殘疾皇子藕甩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容