Python实现学生信息管理系统

需积分: 10 0 下载量 167 浏览量 更新于2024-08-05 收藏 2KB MD 举报
"Python编程实现的学生信息管理系统案例" 在本案例中,我们将探讨如何使用Python编程语言设计一个学生信息管理系统。这个系统旨在处理一个班级的学生数据,包括学生的学号、姓名、性别、年龄、联系电话以及四门课程的成绩(英语、高等数学、线性代数、Python)。下面将详细介绍系统的实现过程。 ### 1. 存储学生信息 在选择存储数据的类型时,我们需要考虑到数据的结构和操作需求。在这个案例中,我们选择了使用`list`(列表)和`dict`(字典)来存储和操作学生信息。列表用于存放多个学生对象,而字典则用于封装每个学生的所有属性,如学号、姓名等。以下是两种不同的数据结构表示: - **方式一**: 使用嵌套字典,将每个学生作为一个字典项,学号作为键,字典中的其他字段为学生的属性。这种方式方便对单个学生的信息进行快速访问和修改。 ```python all_students = [ {'id': 1, 'name': '王江书', 'gender': '男', 'age': 18, 'tel': '10086', 'score': [50, 60, 70, 80]}, {'id': 2, 'name': '王江书', 'gender': '男', 'age': 18, 'tel': '10086', 'score': [50, 60, 70, 80]} ] ``` - **方式二**: 将分数部分也用字典来表示,使得每个学生的成绩对应于课程名称。这种方式更便于对特定课程的成绩进行操作。 ```python all_students = [ {'id': 1, 'name': '王江书', 'gender': '男', 'age': 18, 'tel': '10086', 'score': {'english': 30, 'gaoshu': 60, 'xiandai': 70, 'Python': 100}}, {'id': 2, 'name': '王江书', 'gender': '男', 'age': 18, 'tel': '10086', 'score': {'english': 30, 'gaoshu': 60, 'xiandai': 70, 'Python': 100}} ] ``` ### 2. 提供功能操作的终端提示 为了与用户交互,我们需要在终端提供操作提示,让用户能够选择不同的功能。这通常通过循环和条件判断实现。例如,我们可以定义一个函数来显示菜单并获取用户输入,然后根据输入执行相应的操作。 ```python def show_menu(): print("1. 添加学生") print("2. 查询学生信息") # 其他功能... choice = input("请选择功能(输入数字): ") return choice # 根据用户输入执行相应功能 def main(): while True: choice = show_menu() if choice == '1': # 添加学生操作 elif choice == '2': # 查询学生信息操作 # ... ``` ### 3. 实现学生信息的增删改查 - **添加学生**:创建新的学生字典,并将其添加到`all_students`列表中。 - **删除学生**:根据学号找到要删除的学生,并从列表中移除。 - **修改学生信息**:找到指定学号的学生,更新其属性。 - **查询学生信息**:遍历`all_students`,展示所有学生信息或按学号查找特定学生。 ### 4. 附加功能 这些功能涉及到对学生成绩的统计分析: - **每门课程的班级平均分**:遍历所有学生,计算每门课程的总分,然后除以学生总数。 - **个人的平均成绩**:计算一个学生所有课程的平均分。 - **班级中某门课程的最高分和最低分**:遍历所有学生的该课程成绩,找出最高分和最低分。 - **班级某门课程的挂科率**:统计该课程不及格人数,然后除以学生总数。 实现这些附加功能需要对学生成绩数据进行遍历和计算,利用Python的内置函数和逻辑操作即可轻松完成。 这个学生信息管理系统实例展示了如何结合Python的数据结构和控制流来构建一个简单的命令行应用程序。通过这个案例,我们可以学习到如何有效地组织和操作数据,以及如何与用户进行交互,这些都是Python编程的基础技能。

set hive.exec.dynamic.partition.mode=nonstrict; set hive.exec.parallel=true; set hive.exec.parallel.thread.number=30; --drop table if exists dm_finrisk.dm_event_walletSettleSuccessEvent_di; create table if not exists dm_finrisk.dm_event_cashLoanEvent_di( event_uuid string ,event_code string ,dt string ,event_time string ,rawSnapshot string ) COMMENT 'cashLoanEvent' PARTITIONED BY ( day bigint)stored as parquet; drop table if exists tmp.tmp_dm_event_cashLoanEvent_di_01_${zdt.addDay(-1).format("yyyyMMdd")}; create table if not exists tmp.tmp_dm_event_cashLoanEvent_di_01_${zdt.addDay(-1).format("yyyyMMdd")} as select uuid as event_uuid ,event as event_code ,from_unixtime(unix_timestamp(cast(day as string),'yyyymmdd'),'yyyy-mm-dd') as dt ,from_unixtime(cast(cast(`time` AS BIGINT)/1000 AS BIGINT),'yyyy-MM-dd HH:mm:ss') as event_time ,get_json_object(data,'$.hotPublish.rawSnapshot') as rawSnapshot from dm_finrisk.ods_event_hdfs_snapshot_di where code = 'shield@cashLoanEvent' and day=${zdt.addDay(-1).format("yyyyMMdd")} drop table if exists tmp.tmp_dm_event_cashLoanEvent_di_02_${zdt.addDay(-1).format("yyyyMMdd")}; create table if not exists tmp.tmp_dm_event_cashLoanEvent_di_02_${zdt.addDay(-1).format("yyyyMMdd")} as select event_uuid ,event_code ,dt ,event_time ,rawSnapshot from tmp.tmp_dm_event_cashLoanEvent_di_01_${zdt.addDay(-1).format("yyyyMMdd")}; alter table dm_finrisk.dm_event_cashLoanEvent_di drop if exists partition (day = ${zdt.addDay(-1).format("yyyyMMdd")}); insert overwrite table dm_finrisk.dm_event_cashLoanEvent_di partition (day = ${zdt.addDay(-1).format("yyyyMMdd")}) select event_uuid ,event_code ,dt ,event_time ,rawSnapshot from tmp.tmp_dm_event_cashLoanEvent_di_02_${zdt.addDay(-1).format("yyyyMMdd")}分析下上面代码

2023-06-08 上传