def search(): # 查找学生信息 stu_query = [] # 定义一个空列表,用来保存查找出的学生信息 while True: id = '' name = '' if os.path.exists(filename): # 判断文件是否存在 m = input('\n按id查询请输入1,按姓名查询请输入2,退出请输入0:') if m == '1': id = input('请输入id:') elif m == '2': name = input('请输入name:') elif m == '0': print('\n退出查询模块成功!') return else: print('输入有误!') continue else: print('无学生信息!') with open(filename, 'r', encoding = 'UTF-8') as r_file: stu = r_file.readlines() # 读取文件中所有信息 for i in stu: # 遍历每条学生信息 d = dict(eval(i)) # 转成字典 if id != '': if d['id'] == id: # 判断id值与输入的是否相同,若相同则添加到结果列表中 stu_query.append(d) elif name != '': if d['name'] == name: # 判断name值与输入的是否相同,若相同则添加到结果列表中 stu_query.append(d) # 显示查询结果 if len(stu_query) == 0: print("暂未查询到学生信息!") else: show_stu(stu_query) # 显示查询出的学生信息 stu_query.clear() 用结构体方式来进一步描述上面代码数据类型中数据元素具体组成
时间: 2024-01-22 17:03:40 浏览: 207
java_stu_search.rar_Java 查询系统_stu_search_学生信息查询_学生信息查询系统
该代码中使用了两种数据类型:列表和字典。
列表student_query用来保存查找出的学生信息,其中每个元素都是一个字典类型,表示一个学生的信息。
字典d用来保存每条学生信息,包含以下键值对:
- 'id': 学生学号
- 'name': 学生姓名
- 'english': 学生英语成绩
- 'python': 学生python成绩
- 'math': 学生数学成绩
- 'data': 学生数据结构成绩
在循环中,每次遍历出来的学生信息都被转换成字典类型,并保存在d中。然后,根据用户输入的查询条件(id或name),判断该学生信息是否符合条件,若符合则将该学生信息添加到stu_query列表中。最后,查询结果stu_query中的所有学生信息会被显示出来。
因此,代码中的数据结构可以用如下结构体方式来描述:
struct StudentInfo {
string id; // 学生学号
string name; // 学生姓名
int english; // 学生英语成绩
int python; // 学生python成绩
int math; // 学生数学成绩
int data; // 学生数据结构成绩
};
struct SearchResult {
vector<StudentInfo> stu_list; // 学生信息列表
};
其中,SearchResult为查询结果结构体,包含一个学生信息列表stu_list,每个元素都是一个StudentInfo类型的结构体,表示一个学生的信息。
阅读全文