python做一个管理系统_用python写一个简单的学生管理系统

python编程语言对于新手来说极其友好,利用少量的代码就可以开发出一些极具实用性的小程序来,本期作者带大家用python写一个命令端的python学生管理系统。

写完这个简单的学生管理系统,你将掌握比如导包、函数的使用、简单的循环判断语句、列表和字典的用法、读取文件、Json等知识点。

一、最终运行效果

运行程序进入学生管理系统菜单界面,输入不同的数字进行不同的功能操作,比如输入2查询系统学生名单。本系统主要具有添加学生学生名单查询学生保存退出这四个功能。运行效果如下视频所示:

二、文件结构

在编写代码的时候,为了使得程序结构层次比较清晰,一般会将功能函数打包封装到单独的一个工具类中,这样使得主程序结构简单清晰,在拓展程序功能时也方便修改维护,本程序主要分为主程序和工具类两个部分。

主程序文件

cards_main.py

工具类文件

cards_tools.py

三、主函数

主函数主要进行菜单无线循环,当用户输入对应的功能的数字,便执行对应的功能函数,直到用户输入退出菜单对应的数字后,整个程序退出循环,程序运行结束。

cards_main.py

#! /usr/bin/python3import cards_toolsdef main():    """主函数,程序入口"""    # 无限循环,由用户主动决定什么时候退出循环!    while True:        # 显示功能菜单        cards_tools.show_menu()        action_str = input("请选择希望执行的操作:")        print("您选择的操作是【%s】" % action_str)        # 1,2,3 针对名单的操作        if action_str in ["1", "2", "3"]:            # 新增学生信息            if action_str == "1":                cards_tools.new_card()            # 显示全部名单            elif action_str == "2":                cards_tools.show_all()            # 查询学生信息            elif action_str == "3":                cards_tools.search_card()        # 0 退出系统        elif action_str == "0":            save = cards_tools.saveToJson()            if save:              print("数据保存到本地成功,欢迎再次使用学生管理系统!")              break            else:                print("数据保存到本地失败,程序终止!")                break        # 其他内容输入错误,需要提示用户        else:            print("您输入的不正确,请重新选择")if __name__ == '__main__':    main()

四、工具类

工具类中主要封装着主程序需要的各种功能函数,例如读取本地Json文件到程序、显示菜单、添加学习名片、显示所有学生名单、查询某个学生并修改其值,最后退出程序时将系统中的名单保存到本地Json文件。

4.1 定义下面的几个全局变量

# 记录所有的学生列表card_list = []# 统一查询所有学生,每一项占用的长度,主要使输出对齐gLen = 15# 保存在本地的学生Json数据名称filename = "stdent.json"

4.2 将本地Json文件读取到程序

def GetFromJson():    """读取本地json文件到列表"""    # 判断文件是否存在,不存在直接退出函数    if not os.path.exists(filename):        return    # 异常处理,读取文件出错抛出异常    try:        file = open(filename, 'r')        list = json.load(file)        flag = True    except:        print("从%s读取取json数据出错!" % (filename))    finally:            file.close()            # print(type(list))    return list

4.3 显示菜单

def show_menu():    """显示菜单"""    print("*" * 60)    print("学生管理系统 -- 【版本:1.0】")    print("1. 添加学生")    print("2. 学生名单")    print("3. 查询学生")    print("0. 保存退出")    print("*" * 60)

4.4 新增学生

def new_card():    """新增学生"""    print("-" * 60)    print("添加学生信息")    # 1. 提示用户输入学生的详细信息    name_str = input("请输入姓名:")    num_str = input("请输入学号:")    sex_str = input("请输入性别:")    age_str = input("请输入年龄:")    # 2. 使用用户输入的信息建立一个名单字典    card_dict = {"name": name_str,                 "num": num_str,                 "sex": sex_str,                 "age": age_str}    # 3. 将名单字典添加到列表中    card_list.append(card_dict)    # 4. 提示用户添加成功    print("成功添加 %s 同学的信息!" % name_str)

4.5 显示所有学生名单

为了在显示学生信息时,保证每一个字段对齐,必须判断是否输入了有中文,一个汉字=2个英文字母=2字节,故将每个每项输出固定为15个字节,多余的用空格补齐。显示效果如下:

python做一个管理系统_用python写一个简单的学生管理系统_第1张图片

# 判断是否有中文def isChinese(ch):    if ch >='\u4e00' and ch <= '\u9fa5':        return True    else:        return False# 统计中英文字符串长度def lenStr(string):    count = 0    for line in string:        if isChinese(line):            count = count + 2        else:            count = count + 1    return count# 显示所有学生信息def show_all():    """显示所有名单"""    print("-" * 60)    print("显示所有学生名单")    # 判断是否存在名单记录,如果没有,提示用户并且返回    if len(card_list) == 0:        print("当前系统没有任何学生信息,请选择 1.添加学生!")        return    # 打印表头    headList = ["姓名", "学号", "性别", "年龄"]    headStr = "".join([x + " " * (gLen - lenStr(x)) for x in headList])    print(headStr)    # 打印分隔线    print("=" * 60)    # 遍历名片列表依次输出字典信息    for card_dict in card_list:        lineList = [card_dict["name"], card_dict["num"], card_dict["sex"], card_dict["age"]]        lineStr = "".join([x + " " * (gLen - lenStr(x)) for x in lineList])        print(lineStr)

4.6 搜索学生

搜索到对应学生后再进行修改或删除操作,这里单独将修改删除封装成deal_card函数

def search_card():    """搜索名片"""    print("-" * 60)    print("搜索名片")    # 1. 提示用户输入要搜索的姓名    find_name = input("请输入要搜索的姓名:")    # 2. 遍历名单列表,查询要搜索的姓名,如果没有找到,需要提示用户    for card_dict in card_list:        if card_dict["name"] == find_name:            print("姓名\t\t学号\t\t性别\t\t年龄")            print("=" * 60)            print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],                                            card_dict["num"],                                            card_dict["sex"],                                            card_dict["age"]))            # 针对找到的名单记录执行修改和删除的操作            deal_card(card_dict)            break    else:        print("抱歉,没有找到 %s" % find_name)
4.6.1 deal_card函数

为了简化函数,将输入学生功能input_card_info单独封装

def deal_card(find_dict):    """处理查找到的学生    :param find_dict: 查找到的学生    """    action_str = input("请选择要执行的操作 "                       "[1] 修改 [2] 删除 [0] 返回上级菜单")    if action_str == "1":        find_dict["name"] = input_card_info(find_dict["name"], "姓名:")        find_dict["num"] = input_card_info(find_dict["num"], "学号:")        find_dict["sex"] = input_card_info(find_dict["sex"], "性别:")        find_dict["age"] = input_card_info(find_dict["age"], "年龄:")        print("修改学生信息成功!")    elif action_str == "2":        card_list.remove(find_dict)        print("删除学生信息成功!")
4.6.2 inputcardinfo函数
def input_card_info(dict_value, tip_message):    """输入学生信息    :param dict_value: 字典中原有的值    :param tip_message: 输入的提示文字    :return: 如果用户输入了内容,就返回内容,否则返回字典中原有的值    """    # 1. 提示用户输入内容    result_str = input(tip_message)    # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果    if len(result_str) > 0:        return result_str    # 3. 如果用户没有输入内容,返回 `字典中原有的值`    else:        return dict_value

4.7 保存数据到本地Json文件

def saveToJson():    """将列表card_list写入到JSON文件中"""    # 设立标志位,只运行转换list到json数据类型    flag = False    if type(card_list) != list:        return flag    try:        file = open(filename, 'w')        json.dump(card_list, file, ensure_ascii=False)        flag = True    except:        print("往%s写数据出错!" % (filename))    finally:        if flag:            file.close()    return flag

4.8 最后不要忘记再程序运行时将读取到的本地文件到程序列表中

# 读取json文件不为空,将函数返回值赋值给card_listif GetFromJson():    card_list = GetFromJson()

五、总结

到这里整个学生管理系统就写完了,虽然程序比较简单,但是能学到很多的基础知识点:比如导包、函数的使用、简单的循环判断语句、列表和字典的用法、读取文件、Json等知识点。同时也通过这个程序初步了解程序开发模型等思想等。往往单纯的学习编程语法枯燥又无趣,小编觉得学习编程最好的方式就是多练,把学到的知识与实践开发结合起来,这样才会对知识点记忆深刻,理解通透!

e4ae51151bc3171cdc722e876ad9f844.gif

加星标不错过每一篇好文

python做一个管理系统_用python写一个简单的学生管理系统_第2张图片

python做一个管理系统_用python写一个简单的学生管理系统_第3张图片

python做一个管理系统_用python写一个简单的学生管理系统_第4张图片

python做一个管理系统_用python写一个简单的学生管理系统_第5张图片扫码关注更多精彩 python做一个管理系统_用python写一个简单的学生管理系统_第6张图片

你可能感兴趣的:(python做一个管理系统)