Python程序设计大作业——学生成绩(信息)管理系统设计要求及参考代码

   日期:2020-07-15     浏览:1160    评论:0    
核心提示:本文目录Python语言设计编写的成绩管理系统基本要求具体要求合理的创建标题,有助于目录的生成分析要求实现功能如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的导出与导入导出导入Python语言设计编写的成绩管理系统应用所学Python知识独立编写一个成绩管理系统,实现用户注册登录,登录成功可进行个人成绩查询,统计个人成绩,统计总评成绩等功能。基本要求我们对Markdown编辑器进行了一些功能拓展_py

本文目录

    • 概述
    • 效果演示
    • 总体要求
    • 具体要求
    • 分析要求
      • easygui库
      • 基本数据类型
      • 基本逻辑顺序
      • pandas库
      • TXT文件和CSV或Excel文件的读写
    • 代码结构
    • 示例代码
    • 直接获取.py源文件
      • 途径一
      • 途径二

概述

本文代码系原创,仅供学习参考使用。若转载与引用请标注出处申明。
本文介绍的内容是,利用python语言,设计一个学生信息成绩管理系统。该系统的设计要求与部分学校的Python程序设计期末大作业或者Python课程设计要求基本相差无几。题目来源于学生,那么将回馈于学生。
应用所学Python基础知识,独立编写一个学生信息成绩管理系统,实现用户能够注册登录,登录成功可进行个人成绩查询,统计个人成绩,统计班级成绩等一些功能。
文末获取本文所述全部参考代码。
下面将介绍该系统的总体要求、具体要求、要求分析、参考代码、以及实现效果的演示视频。

效果演示

演示视频链接:
演示视频
第一级菜单

登录

二级菜单

统计个人输出

总体要求

Python的初学者们需要灵活应用所学Python基础知识编写一个成绩管理系统,实现用户能够注册、登录,登录成功可以进行个人成绩查询,统计个人成绩,统计总评成绩等功能。

具体要求

  1. 界面采用交互式菜单方式,一级菜单包括:注册、登录、退出。
    二级菜单包括:查询个人成绩、统计个人成绩、统计总评成绩、退出成绩系统等功能。

  2. 用户注册模块:实现用户的注册。用户键盘输入注册信息(用户名、密码),并用xxx.txt文本文件的方式保存。

  3. 用户登录模块:实现用户名和密码的校验。用户键盘输入用户名和密码,读取用户注册文件xxx.txt中的信息进行校验,一致则显示登录成功。否则判断用户可输入用户名和密码的次数大于N(N>=3)没,如果超出输入次数,显示登录失败,且等待一段时间后才可以重新输入。

  4. 成绩信息建立模块:要求程序代码中直接输入本人真实信息(姓名、学号、电话、各科成绩),N名同学的真实信息(姓名、学号、电话、各科成绩)(N>=6),并用字典或列表等数据类型存放。再将这些信息写入到xxx.CSV文件中长久保存。

  5. 查询个人成绩模块:要求用户从键盘输入查询的姓名或学号,读取xxx.CSV文件并返回指定姓名或学号的各科成绩信息。

  6. 统计个人成绩模块:要求用户从键盘输入查询的姓名或学号,读取xxx.CSV文件并返回指定姓名或学号的成绩总分和平均分等。

  7. 统计总评成绩模块:读取***.CSV文件并返回所有同学的科目成绩和总分,并按总分由高到低排名。

  8. 各功能模块用函数实现,主程序调用各功能模块。

  9. 代码中必须涉及定义字符串、定义列表、定义字典、数据类型之间的转换、列表操作、字典操作、if语句、for循环、while循环、文件(txt、csv)操作的相关代码。

  10. 用户从键盘输入不符合要求的数据用异常来捕获。

  11. 可扩充以上基本功能。

分析要求

该系统主要考察Python初学者们对基础的python知识的应用能力。
从要求可以知道需要用到的的Python知识点对初学者来说还算全面与综合,主要用到的Python知识点有:

easygui库

官网链接
用使用easygui库设计一二级菜单,包括出注册、登录、查询界面。
buttonbox:设计多按钮选择界面
multpasswordbox:设计用户登录和注册界面的账号密码输入
msgbox:登陆成功与错误超过三次信息提示对话框
textbox:成绩信息显示的文本框

基本数据类型

博客链接
用到的基本数据类型:
字符串、列表、字典

基本逻辑顺序

博客链接
常用的逻辑循环与判断语句:
while循环、for循环
if判断、if…else判断、if…elif…else判断
以及上述这些语句的组合都是在GUI设计时常用到的,以满足GUI一级、二级菜单为用户提供的选择功能。判断若输入密码错误三次后将触发延时函数,等待一段时间后重新输入密码。

pandas库

官网链接
对原始数据进行预处理方便后续使用。
将字典转为DataFrame类型,然后进行增删改查与行列变换等操作,再将处理好的数据写入到本地文件中。

TXT文件和CSV或Excel文件的读写

博客链接
TXT文件主要用于保存用户的账号与密码。CSV或Excel文件用来作为保存与处理后的学生成绩信息表格。

代码结构

本文提供的代码主要分为四大部分:

  1. 设计GUI注册登录界面
  2. 成绩信息CSV文件读写操作
  3. 设计GUI查询界面
  4. 主程序

上述四个部分代码写在三个文件中由对应的四个函数组成。
查询函数调用了登录和写入CSV文件函数,那么在主程序中调用查询函数即可。
但是实际上成绩写入程序只需执行一次即可,它生成的CSV文件已经保存在本地文件夹中了。同时将登录界面的函数与查询界面的函数写在了一个GUI的.py文件中。而用户若要手动输入学生的成绩信息,可以在CSV文件中输入。pycharm工程文件目录见下图:

示例代码

GUI查询界面的代码如下:

def Find():
    global result1, result2,result3
    if Login():
        while True:
            choose2 = g.buttonbox(msg="已进入学生成绩管理系统,请选择",
                                  title="学生成绩管理系统",
                                  choices=("查询个人", "统计个人","统计总评", "退出"))
            if choose2 == "查询个人":
                data1 = read_csv('学生信息成绩表.csv',encoding='GBK')
                name_num = g.enterbox(msg='输入学生姓名或学号', title='查询个人成绩')
                zhmodel = re.compile(u'[\u4e00-\u9fa5]')  # 检查中文
                match = zhmodel.search(name_num)
                if name_num.isdigit() or match:  # 输入的是数字或汉字
                    if name_num.isdigit():
                        num = int(name_num)
                        result1 = data1.loc[data1['学号'] == num]  # 是数字查学号
                        pass
                    elif match:
                        name = name_num
                        result1 = data1.loc[data1['姓名'] == name]  # 是汉字查姓名
                        pass
                    pass
                text1 = str(result1)
                # text2 = "未查询到该生成绩信息,请检查学号姓名是否存在"
                g.textbox(msg='学生信息成绩如下:', title='学生成绩信息', text=text1, codebox=1)
                pass
            elif choose2 == "统计个人":
                data2 = read_csv('学生信息成绩表.csv', encoding='GBK')
                name_num = g.enterbox(msg='输入学生姓名或学号', title='统计个人成绩')
                zhmodel = re.compile(u'[\u4e00-\u9fa5]')  # 检查中文
                match = zhmodel.search(name_num)
                if name_num.isdigit() or match:
                    total = 0
                    if name_num.isdigit():
                        num = int(name_num)  # 是数字则转成整型
                        result1 = data2.loc[data2['学号'] == num]  # 是数字查学号
                        result2 = data2.loc[data2['学号'] == num]  # 是数字查学号
                        pass
                    elif match:
                        name = name_num
                        result1 = data2.loc[data2['姓名'] == name]  # 是汉字查姓名
                        result2 = data2.loc[data2['姓名'] == name]  # 是汉字查姓名
                        pass
                        df2 = result2  # 拷贝
                    df2.columns = range(len(result2.columns))  # 根据列数替换原列标签为0-len(df2.columns)-1
                    df3 = df2.loc[0:, 3:len(df2.columns)]  # 第四列开始到最后一列是成绩保留成绩去除信息
                    minimum = str(min(min(df3.values)))  # 最低分
                    maximum = str(max(min(df3.values)))  # 最高分
                    for i in df3:
                        a = float(df3[i])
                        total = a+total
                        pass
                    average = round(total / len(df3.columns), 2)  # 平均分保留两位小数
                    pass
                text1 = str(result1) + "\n总分" + str(total)+"\n平均分"+str(average)+"\n最低分"+minimum+"\n最高分"+maximum
                g.textbox(msg='学生信息成绩如下:', title='学生成绩信息', text=text1)
                pass
            elif choose2 == "统计总评":
                data3 = read_csv('学生信息成绩总表.csv', encoding='GBK')
                text1 = str(data3)
                g.textbox(msg='学生信息成绩汇总如下:', title='学生成绩信息', text=text1, codebox=1)
                pass
            else:
                sys.exit()
                pass
            pass
        pass
    pass

直接获取.py源文件

因为源代码太多,篇幅的限制,这里不再赘述,读者如要获取全部参考代码可通过下面两种途径获取全部代码的.py文件。
优先推荐途径一,若遇途径一失效,请再尝试途径二。

途径一

优先推荐该途径
第一步:扫描下方二维码,或打开微信搜索并关注“ 2贰进制 ”公众号;
第二步:回复:“ python学生管理 ”即可获取上文所述的全部参考代码。

途径二

优先推荐途径一,该途径管理可能不能秒回
扫描下方二维码,加入学习交流QQ群“ 480558240 ”,联系管理员获取包括但不限于本篇内容的更多学习资料。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服