python 新增学生时要考虑到新增学生的学号不能和系统中已有学生的学号冲突,学号具有唯一 性,且学号固定为6位数。新增时录入信息要进行合法性检查,例如学号必须是6位, 年龄必须在17~25岁等。
时间: 2024-10-29 18:14:13 浏览: 6
python实现含UI界面和数据库的学生成绩管理系统.zip
4星 · 用户满意度95%
在Python中新增学生时,确实需要对学号和其它字段进行有效性检查。以下是一个简化的示例,展示了如何在`add_student`函数中实现这些规则:
首先,我们需要在`Student`类中设置学号的唯一性和长度限制:
```python
class Student:
def __init__(self, id, name, major, age, class_id):
self.id = str(id).zfill(6) # 确保学号是6位数
self.name = name
self.major = major
self.age = self.validate_age(age) # 年龄验证
self.class_id = class_id
@staticmethod
def validate_age(age):
if not isinstance(age, int) or age < 17 or age > 25:
raise ValueError("年龄必须在17至25岁之间")
return age
# 其他方法...
```
然后,在`add_student`函数中,我们首先要检查学号是否已经存在于`existing_ids`集中,如果不冲突,则进行合法性的校验:
```python
def add_student(school_database, new_student_info):
new_id = new_student_info['id']
if new_id in school_database:
print("学号已存在,请输入新的学号.")
return
try:
new_student = Student(new_id, *new_student_info['rest_of_info'])
school_database.append(new_student)
existing_ids.add(new_id)
except ValueError as e:
print(f"错误:{e}")
```
最后,可以集成`argparse`来获取用户输入:
```python
def get_new_student_input():
parser = argparse.ArgumentParser()
parser.add_argument('id', type=int)
parser.add_argument('rest_of_info', nargs='+') # 接收其他字段,例如:parser.add_argument('name', ...)
args = parser.parse_args()
return {'id': args.id, 'rest_of_info': args.rest_of_info}
# 调用方式
try:
new_student_info = get_new_student_input()
add_student(school_database, new_student_info)
except Exception as e:
print(f"添加学生失败:{e}")
```
阅读全文