Python程序设计之 —— 简易学生信息管理系统_用python做信息管理系统


前言

Python 简介

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
  • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
  • **Python 是初学者的语言:**Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python 特点

  • **1.易于学习:**Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  • **2.易于阅读:**Python代码定义的更清晰。
  • **3.易于维护:**Python的成功在于它的源代码是相当容易维护的。
  • **4.一个广泛的标准库:**Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
  • **5.互动模式:**互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
  • **6.可移植:**基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
  • **7.可扩展:**如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
  • **8.数据库:**Python提供所有主要的商业数据库的接口。
  • **9.GUI编程:**Python支持GUI可以创建和移植到许多系统调用。
  • **10.可嵌入:**你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

一、项目来源及背景

学生信息管理系统是学生在每学年记录学生升学,转学,退学等的主要应用,具有较强的实用性,贴近实际,便于完成系统的分析与设计,适用于多用户。


二、功能设计

实现一个学生信息的管理系统:主要功能有:

  1. 添加学生信息
  2. 删除学生信息
  3. 查询学生信息
  4. 统计学生总人数
  5. 显示所有学生信息
  6. 排序(以总成绩分数)
  7. 退出学生信息管理系统


三、步骤分析

  1. 显示功能界面
  2. 用户输入功能序号
  3. 对不同序号的功能实现具体函数

3.1 定义函数

3.2 调用函数


四、需求实现

  1. 显示功能界面menu()
  2. 用户输入程序指令 choice = int(input(‘请输入您的程序指令:’))
  3. 按照用户输入的功能序号,执行不同的功能(函数)
  4. 添加学生信息 insert()
  5. 删除学生信息 delete()
  6. 查询学生信息 search()
  7. 统计学生总人数total()
  8. 显示所以学生信息 show()
  9. 排序(以总成绩分数)sort()
  10. 退出学生信息管理系统  if choice == 0:


五、具体代码

系统功能进行循环使用,直到用户输入0,退出系统。

功能界面部分:
def menu():
    print('==============================学生信息管理系统==============================')
    print('︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽功能菜单︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽')
    print("*" * 74)
    print("******", " " * 60, "******")
    print("******\t    1.添加学生信息", " " * 18, "4.统计学生总人数\t\t    ******")
    print("******\t    2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t    ******")
    print("******\t    3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t    ******")
    print("******\t    0.退出学生信息管理系统", " " * 18, "\t\t\t\t\t******")
    print("******", " " * 60, "******")
    print("*" * 74)
    print('︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾')


def save(lst):
    stu_txt = open(fileName, 'a', encoding='utf-8')
    for item in lst:
        stu_txt.write(str(item) + '\n')
    stu_txt.close()

主要部分代码:

# 定义函数main()
def main():
    while True:
        menu()
        choice = int(input('请输入您的程序指令:'))
        if choice in [0, 1, 2, 3, 4, 5, 6]:
            if choice == 0:
                print("您确定要退出吗?yes/no")
                answer = input()
                if answer == 'yes':
                    print('感谢您的使用!!!')
                    break  # 终止
                else:
                    continue  # 中止
            elif choice == 1:
                insert()
            elif choice == 2:
                delete()
            elif choice == 3:
                search()
            elif choice == 4:
                total()
            elif choice == 5:
                show()
            elif choice == 6:
                sort()
        else:
            print('输入的指令不在范围内,请重新输入!!!')

那么根据上面的代码,需要实现具体的功能函数,主要功能代码部分如下:


4.1 添加学生信息
# 录入学生信息
def insert():
    global phone
    student_list = []
    while True:
        id = input('请输入学号: ')
        if not id:
            break
        name = input('请输入姓名: ')
        if not name:
            break
        sex = input('请输入性别: ')
        if not sex:
            break
        # phone = input('请输入手机号: ')
        # if not phone:
        count = 0
        for i in range(1, 4):
            phone = input("请输入你的手机号: ")
            # 利用正则表达式进行限定
            tel = re.match(r"^1[3456789]\d{9}$", phone)
            if tel:
                print("输入成功!")
                break
            if tel != phone:
                count += 1
            if (count == 3):
                print("录入失败,请30秒后重试!")
            if (count != 3):
                print("录入错误,请核对你的手机号!")
        try:
            # 智育分满分70分,德育分满分20分,体育分满分10分
            zyf = int(input('请输入你的智育分:'))
            dyf = int(input('请输入你的德育分:'))
            tyf = int(input('请输入你的体育分:'))
        except:
            print('请您输入数字成绩!')
            continue
        # 将录入的学生信息保存到字典中
        student = {'id': id, 'name': name, 'sex': sex, 'phone': phone, 'zyf': zyf, 'dyf': dyf, 'tyf': tyf}
        # 将学生信息添加到列表中
        # 可删!!!!!
        student_list.append(student)
        answer = input('是否继续添加?yes/no\n')
        if answer == 'yes':
            continue
        else:
            break
    # 保存学生信息
    save(student_list)  # 封装
    print('学生信息录入完毕!!!')

4.2 删除学生信息
# 删除学生信息
def delete():
    while True:
        student_id = input('请输入要删除学生的学号:')
        if student_id != '':
            if os.path.exists(fileName):
                with open(fileName, 'r', encoding='utf-8') as file:
                    student_old = file.readlines()
            else:
                student_old = []
            flag = False  # 标记是否删除
            if student_old:
                with open(fileName, 'w', encoding='utf-8') as wfile:
                    d = {}
                    for item in student_old:
                        d = dict(eval(item))  # 将字符串转换为字典
                        if d['id'] != student_id:
                            wfile.write(str(d) + '\n')
                        else:
                            flag = True
                    if flag:
                        print(f'学号为{student_id}的学生信息已经删除')
                    else:
                        print(f'学生表中没有找到学号为{student_id}的学生')
            else:
                print('学生表已中无任何学生个人信息')
                break
            show()  # 重新显示所有学生信息
            answer = input('是否继续删除?yes/no\n')
            if answer == 'yes':
                continue
            else:
                break
    print('删除学生信息已结束,请你进行下一步操作!!!')

4.3 查询学生信息
# 查询学生信息
def search():
    while True:
        stu_query = []
        id = ''
        # 判断文件是否存在
        if os.path.exists(fileName):
            # if的使用
            if id == '':
                id = input('请输入要查找的学生学号:')
            else:
                print('您的输入有误,请重新输入!')
                continue
            # 如果文件存在,并且用户输入了正确的查询标号,则打开文件
            with open(fileName, 'r', encoding='utf-8') as rfile:
                students = rfile.readlines()
            # 转换为字典类型
            for item in students:
                d = dict(eval(item))
                if id != '':
                    if id == d['id']:
                        stu_query.append(d)  # 追加
            # 显示查询结果
            show_student(stu_query)
            # 是否继续查询其他学生信息
            answer = input('还要查询其他学生吗?yes/no\n')
            if answer == 'yes':
                continue
            else:
                break
        else:
            print('学生信息不存在!')
            return
    print('学生信息查询结束,请进行下一步操作!!!')

4.4 统计学生总人数
# 统计学生总人数
def total():
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students = rfile.readlines()
            # 判断读取到的学生信息是否为空
            if students:
                print('一共有{}名学生'.format(len(students)))
            else:
                print('学生系统中还没有录入学生信息!')
    else:
        print('学生信息不存在!')
        return
    print('学生总人数统计完毕,请进行下一步操作!!!')

4.5 显示所有学生信息
# 显示所有学生信息
def show():
    student_list = []
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students = rfile.readlines()
            # 判断读取到的学生信息是否为空
            if students:
                for item in students:
                    student_list.append(eval(item))
                # 展示学生信息
                show_student(student_list)
            else:
                print('学生文件中还没有录入学生信息!')
    else:
        print('学生文件不存在!')
        return
    print('学生信息已成功显示,请你进行下一步操作!!!')

排序 (以总成绩分数)
# 对总学生成绩进行排序
def sort():
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students_list = rfile.readlines()
        students_new = []
        # 判断读取到的学生信息是否为空
        if students_list:
            # 将所有的item加入到students_new中
            for item in students_list:
                d = dict(eval(item))
                students_new.append(d)
                # 利用匿名函数与sort方法进行排序
                # True为降序,False升序
                students_new.sort(key=lambda x: int(x['zyf']) + int(x['dyf']) + int(x['tyf']),
                                  reverse=True)
            # 将排序后的成绩进行输出
            show_student(students_new)
    print('学生信息排序完成并成功显示,请你进行下一步操作!!!')


五、运行效果

31d53f439ef8442087eecd68481d94f1.png

8a3a3dda14d84d1f9f34cc8a2d1c481c.png

如上图所示可以看到我们的运行效果,及示例,并且我们输入的信息会存入一个文本文件,那怎么实现的呢?请看下方代码

# 建立一个名为student.text的文本用于保存文件

fileName = 'student.txt'


六、完整代码

# 导入模块
import os
import re

# 建立一个名为student.text的文本用于保存文件

fileName = 'student.txt'


# 定义函数main()
def main():
    while True:
        menu()
        choice = int(input('请输入您的程序指令:'))
        if choice in [0, 1, 2, 3, 4, 5, 6]:
            if choice == 0:
                print("您确定要退出吗?yes/no")
                answer = input()
                if answer == 'yes':
                    print('感谢您的使用!!!')
                    break  # 终止
                else:
                    continue  # 中止
            elif choice == 1:
                insert()
            elif choice == 2:


如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费**学习**大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。



### 一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

### 二、学习软件



工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。



![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)



### 三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

![](https://img-blog.csdnimg.cn/img_convert/eec417a3d4d977b313558a11d3c13e43.png)



### 四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



![](https://img-blog.csdnimg.cn/img_convert/ec690501ea1dbe2cb209cbf4013c2477.png)  

![](https://img-blog.csdnimg.cn/img_convert/3eaeaa6747419c9d86c72e0d10d0a6a2.png)



### 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。



![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)



### 五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 26
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值