用Python實(shí)現(xiàn)職工信息管理系統(tǒng)

想要實(shí)現(xiàn)一個(gè)職工管理系統(tǒng)
首先我們看一下想要實(shí)現(xiàn)什么功能
最基礎(chǔ)的增刪改查肯定要實(shí)現(xiàn)的
然后增加一下數(shù)據(jù)顯示、數(shù)據(jù)排序、數(shù)據(jù)統(tǒng)計(jì)功能
下面直接上代碼

  1. 增加職工數(shù)據(jù)
# 接收用戶收入
id = input('請輸入職工號')
name = input('請輸入姓名')
sex = input('請輸入性別')
age = input('請輸入年齡')
education = input('請輸入學(xué)歷')
address = input('請輸入住址')
photonumber = input('請輸入電話')
money = input('請輸入工資')
# 向列表中添加數(shù)據(jù)
data.append([id, name, sex, age, education, address, photonumber, money])
print('添加成功')
# 調(diào)用保存函數(shù) 保存數(shù)據(jù)
save()
  1. 刪除職工數(shù)據(jù)
id = input('請輸入你要修改的職工編號')
ids = [i[0] for i in data]
if id not in ids:
    print('您查詢的職工不存在')
    return
else:
    del data[ids.index(id)]
    print('刪除成功')
save()
  1. 查詢職工數(shù)據(jù)
# 選擇查詢目標(biāo)
flag = int(input('1.按照職工編號查詢  2.按照職工姓名查詢'))
if flag == 1:
    id = input('輸入職工編號')
    # 職工編號列表
    ids = [i[0] for i in data]
    # 判斷輸入的編號是否存在
    if id not in ids:
        print('您查詢的職工不存在')
        return
    else:
        print('職工號 姓名 性別 年齡 學(xué)歷 住址 電話 工資')
        # 打印該編號的信息
        for i in data[ids.index(id)]:
            print(i, end=' ')
        print()
else:
    name = input('輸入職工姓名')
    # 職工姓名列表
    names = [i[1] for i in data]
    # 判斷輸入的姓名是否存在
    if name not in names:
        print('您查詢的職工不存在')
        return
    else:
        print('職工號 姓名 性別 年齡 學(xué)歷 住址 電話 工資')
        # 同上
        for i in data[names.index(name)]:
            print(i, end=' ')
        print()
  1. 修改職工信息
id = input('請輸入你要修改的職工編號')
ids = [i[0] for i in data]
if id not in ids:
    print('您查詢的職工不存在')
    return
else:
    # 輸入要修改的數(shù)據(jù)
    name = input('請輸入姓名')
    sex = input('請輸入性別')
    age = input('請輸入年齡')
    education = input('請輸入學(xué)歷')
    address = input('請輸入住址')
    photonumber = input('請輸入電話')
    money = input('請輸入工資')
    # 修改數(shù)據(jù)
    data[ids.index(id)] = [id, name, sex, age, education, address, photonumber, money]
    print('修改成功')
save()

)

  1. 排序函數(shù)
global data
data = sorted(data, key=lambda x: x[1])
  1. 統(tǒng)計(jì)函數(shù)
counts = {}
# 統(tǒng)計(jì)每個(gè)工資的人數(shù)
for i in data:
   counts[int(i[-1])] = counts.get(i[-1], 0) + 1
# 按照人數(shù)多少排序
counts = dict(sorted(counts.items(), key=lambda x: x[1], reverse=True))
# 將結(jié)果打印
for money, count in counts.items():
   print('{0:<10}{1:>5}'.format(money, count))
print('工資最多的是:', max(counts))
print('工資最少的是:', min(counts))
  1. 顯示函數(shù)
# 打印標(biāo)題
print('職工號 姓名 性別 年齡 學(xué)歷 住址 電話 工資')
# 遍歷數(shù)據(jù)列表 然后打印數(shù)據(jù)
for i in data:
    for j in i:
        print(j, end=' ')
    print()
  1. 讀取保存函數(shù)
def save():  # 保存函數(shù)
    # 打開文件,寫入數(shù)據(jù)
    with open('數(shù)據(jù).csv','w') as j:
        for i in data:
            j.write(','.join(i)+'\n')
    j.close()


def load():  # 讀取函數(shù)
    # 讀取文件
    with open('數(shù)據(jù).csv','r') as j:
        # 讀取每行數(shù)據(jù)
        for i in j.readlines():
            # 清洗掉換行符 然后以逗號為間隔符分割
            data.append(i.replace('\n','').split(','))
    j.close()

總結(jié)整體代碼:

def add():  # 添加數(shù)據(jù)函數(shù)
    # 接收用戶收入
    id = input('請輸入職工號')
    name = input('請輸入姓名')
    sex = input('請輸入性別')
    age = input('請輸入年齡')
    education = input('請輸入學(xué)歷')
    address = input('請輸入住址')
    photonumber = input('請輸入電話')
    money = input('請輸入工資')
    # 向列表中添加數(shù)據(jù)
    data.append([id, name, sex, age, education, address, photonumber, money])
    print('添加成功')
    # 調(diào)用保存函數(shù) 保存數(shù)據(jù)
    save()


def show():  # 顯示函數(shù)
    # 打印標(biāo)題
    print('職工號 姓名 性別 年齡 學(xué)歷 住址 電話 工資')
    # 遍歷數(shù)據(jù)列表 然后打印數(shù)據(jù)
    for i in data:
        for j in i:
            print(j, end=' ')
        print()


def quety():  # 查詢函數(shù)
    # 選擇查詢目標(biāo)
    flag = int(input('1.按照職工編號查詢  2.按照職工姓名查詢'))
    if flag == 1:
        id = input('輸入職工編號')
        # 職工編號列表
        ids = [i[0] for i in data]
        # 判斷輸入的編號是否存在
        if id not in ids:
            print('您查詢的職工不存在')
            return
        else:
            print('職工號 姓名 性別 年齡 學(xué)歷 住址 電話 工資')
            # 打印該編號的信息
            for i in data[ids.index(id)]:
                print(i, end=' ')
            print()
    else:
        name = input('輸入職工姓名')
        # 職工姓名列表
        names = [i[1] for i in data]
        # 判斷輸入的姓名是否存在
        if name not in names:
            print('您查詢的職工不存在')
            return
        else:
            print('職工號 姓名 性別 年齡 學(xué)歷 住址 電話 工資')
            # 同上
            for i in data[names.index(name)]:
                print(i, end=' ')
            print()


def modify():  # 修改函數(shù)
    # 原理同上
    id = input('請輸入你要修改的職工編號')
    ids = [i[0] for i in data]
    if id not in ids:
        print('您查詢的職工不存在')
        return
    else:
        # 輸入要修改的數(shù)據(jù)
        name = input('請輸入姓名')
        sex = input('請輸入性別')
        age = input('請輸入年齡')
        education = input('請輸入學(xué)歷')
        address = input('請輸入住址')
        photonumber = input('請輸入電話')
        money = input('請輸入工資')
        # 修改數(shù)據(jù)
        data[ids.index(id)] = [id, name, sex, age, education, address, photonumber, money]
        print('修改成功')
    save()


def sort():  # 排序函數(shù)
    global data
    data = sorted(data, key=lambda x: x[1])


def statistics():  # 統(tǒng)計(jì)函數(shù)
    counts = {}
    # 統(tǒng)計(jì)每個(gè)工資的人數(shù)
    for i in data:
        counts[int(i[-1])] = counts.get(i[-1], 0) + 1
    # 按照人數(shù)多少排序
    counts = dict(sorted(counts.items(), key=lambda x: x[1], reverse=True))
    # 將結(jié)果打印
    for money, count in counts.items():
        print('{0:<10}{1:>5}'.format(money, count))
    print('工資最多的是:', max(counts))
    print('工資最少的是:', min(counts))


def delete():  # 刪除函數(shù)
    # 原理同上
    id = input('請輸入你要修改的職工編號')
    ids = [i[0] for i in data]
    if id not in ids:
        print('您查詢的職工不存在')
        return
    else:
        del data[ids.index(id)]
        print('刪除成功')
    save()


def save():  # 保存函數(shù)
    # 打開文件董虱,寫入數(shù)據(jù)
    with open('數(shù)據(jù).csv','w') as j:
        for i in data:
            j.write(','.join(i)+'\n')
    j.close()


def load():  # 讀取函數(shù)
    # 讀取文件
    with open('數(shù)據(jù).csv','r') as j:
        # 讀取每行數(shù)據(jù)
        for i in j.readlines():
            # 清洗掉換行符 然后以逗號為間隔符分割
            data.append(i.replace('\n','').split(','))
    j.close()


if __name__ == '__main__':
    data = []  # 數(shù)據(jù)保存列表
    # 讀取文件 如果文件不存在 報(bào)錯(cuò)跳過 無視
    try:
        load()
    except FileNotFoundError:
        pass
    while True:
        # 根據(jù)玩家的輸入 選擇相應(yīng)的功能
        choice = int(input('1.添加職工數(shù)據(jù)\n2.顯示職工數(shù)據(jù)\n3.查詢職工數(shù)據(jù)\n4.修改職工數(shù)據(jù)\n5.刪除職工數(shù)據(jù)\n6.保存職工數(shù)據(jù)\n7.排序職工數(shù)據(jù)\n8.統(tǒng)計(jì)職工工資數(shù)據(jù)\n9.退出'))
        if choice == 1:
            add()
        elif choice == 2:
            show()
        elif choice == 3:
            quety()
        elif choice == 4:
            modify()
        elif choice == 5:
            delete()
        elif choice == 6:
            save()
        elif choice == 7:
            sort()
        elif choice == 8:
            statistics()
        elif choice == 9:
            print('退出程序')
            break

免費(fèi)領(lǐng)取python資料
python知識分享

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子惩坑,更是在濱河造成了極大的恐慌掉盅,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件以舒,死亡現(xiàn)場離奇詭異趾痘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)稀轨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門扼脐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奋刽,你說我怎么就攤上這事瓦侮。” “怎么了佣谐?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵肚吏,是天一觀的道長。 經(jīng)常有香客問我狭魂,道長罚攀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任雌澄,我火速辦了婚禮斋泄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镐牺。我一直安慰自己炫掐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布睬涧。 她就那樣靜靜地躺著募胃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畦浓。 梳的紋絲不亂的頭發(fā)上痹束,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機(jī)與錄音讶请,去河邊找鬼祷嘶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛秽梅,可吹牛的內(nèi)容都是我干的抹蚀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼企垦,長吁一口氣:“原來是場噩夢啊……” “哼环壤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钞诡,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤郑现,失蹤者是張志新(化名)和其女友劉穎湃崩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體接箫,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攒读,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辛友。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薄扁。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖废累,靈堂內(nèi)的尸體忽然破棺而出邓梅,到底是詐尸還是另有隱情,我是刑警寧澤邑滨,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布日缨,位于F島的核電站,受9級特大地震影響掖看,放射性物質(zhì)發(fā)生泄漏匣距。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一哎壳、第九天 我趴在偏房一處隱蔽的房頂上張望毅待。 院中可真熱鬧,春花似錦归榕、人聲如沸恩静。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至邑飒,卻和暖如春循签,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疙咸。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工县匠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撒轮。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓乞旦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親题山。 傳聞我的和親對象是個(gè)殘疾皇子兰粉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

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