1.需求分析

1.使用Python中的字符串、列表、字典、文件等知识点来完成一个学生管理系统.
2.针对学生,该系统具有添加、修改、删除、查询所有学生、查询某个学生、保存信息、退出系统等操作.

2.角色分析

1.学生管理系统-----(studentcms.py)
2.学生-----------------(student.py)
注意事项:
① 为了方便维护代码,一般一个角色一个程序文件
② 项目要有主程序入口,习惯为(main.py)

3.## 学生类文件(student.py)
对于学生类,属性有姓名、年龄、性别、联系方式、描述信息等.

步骤:需要完成输出学生对象的功能:
在文件中定义一个学生类;
在类中使用__init__()初始化学生的属性;
在类中使用__str__()方法输出对象信息。

#定义学生类
class Student:
	#定义魔法方法,初始化学生类
	def __init__(self):
		self.name = name
		self.gender = gender
		self.age = age
		self.phone = phone
		self.desc = desc
	#定义魔法方法,打印学生信息
	def __str__(self):
		'''
		该魔法方法用于打印学生信息
		'''
		return f'姓名: {self.name}, 性别: {self.gender}, 年龄: {self.age}, 手机号: {self.phone}, 描述信息: {self.desc}'
	#测试
	if __name__== '__main__':
		s = Student('张三', '男', 19, '131234567', '校园歌手')
		print(s)

4.## 学生管理系统文件(studentcms.py)
需求:
创建学生管理系统类
存储数据的形式:列表存储学员对象
显示界面
系统功能
添加学员信息
删除学员信息
修改学员信息
查询学员信息
显示所有学员信息
保存学员信息
退出系统

from student import Student

# 1. 创建学生管理系统类.
class StudentCMS(object):
    # 2. 通过魔法方法init, 初始化属性信息.
    def __init__(self):
        # 创建一个空列表, 用于存储学生信息.
        self.stu_list = []      # [学生对象, 学生对象, 学生对象] -> [Student(...), Student(...)...]

    # 3. 定义函数, 实现打印 管理系统的界面.
    def show_view(self):
        print('*' * 23)
        print('学生管理系统V2.0版')
        print('\t1.添加学生信息')
        print('\t2.删除学生信息')
        print('\t3.修改学生信息')
        print('\t4.查询单个学生信息')
        print('\t5.查询所有学生信息')
        print('\t6.保存学生信息')
        print('\t0.退出系统')
        print('*' * 23)


    # 4. 定义函数, 实现添加学生信息功能.
    def add_student(self):
        #4.1提示用户输入学生信息,并接收
        name = input('请输入学生姓名')
        gender = input('请输入学生性别:')
        age = int(input('请输入学生年龄:'))
    		 phone = input('请输入学生电话:')
        desc = input('请输入学生描述信息:')
        #4.2把上述的信息封装成学生对象
        stu = Student(name,gender,age,phone,desc)
        #4.3把学生信息添加到列表中
        self.stu_list.append(stu)
        #4.4提示
        print(f'添加{name}学生信息成功\n')
       
    # 5. 定义函数, 实现删除学生信息功能.
    def del_student(self):
        #5.1提示用户需要删除的学生姓名
        del_name = input('请输入要删除的学生姓名:')
        #5.2遍历列别,找到要删除的学生,并删除
        for stu in self.stu_list:
        #5.3如果当前的学生行ing和要删除的学生姓名相同,就删除该学生信息
        	if stu.name == del_name:
        		self.stu_list.remove(stu)
        		print(f'学员{del_name}信息删除成功\n')
        		break
        	else:#走到这里说明没有找到该信息.
        		print('查无此人,请检查后重新删除!\n')
        		

    # 6. 定义函数, 实现修改学生信息功能.
    def update_student(self):
       #6.1 提示用户输入要修改的学生的姓名,并接收
       upd_name = input('请输入要修改的学生姓名:')
       #6.2遍历列表,找到要修改的学生
       for stu in self.stu_list:
       	#6.3 如果能找到
       	if stu.name==upd_name:
       	# 提示用户录入该学生的信息
       		stu.gender = input('请录入修改后的性别: ')
            stu.age = int(input('请录入修改后的年龄: '))
            stu.phone = input('请录入修改后的电话: ')
            stu.desc = input('请录入修改后的描述信息: ')
            print(f'学员 {upd_name} 信息修改成功!\n')
            break
         else:#说明没有找到
         	print('查无此人,请检查后重新输入')
       	

    # 7. 定义函数, 实现查询单个学生信息功能.
    def search_one_student(self):
       #7.1 提示用户输入要查找的学生的姓名, 并接收.
    	search_name = input('请输入要查找的学生姓名:')
    # 7.2 遍历列表, 找到要查找的学生, 并打印信息.
    	for stu in self.stu_list:
        # 7.3 如果当前学生的姓名 和 要查找的学生相同, 就打印该学生信息
        if stu.name == search_name:
            print(stu, end='\n\n')
            break
            else:
                # 走到这里, 说明没有走break, 即: 没有找到这个学生.
                print('查无此人, 请检查后重新操作!\n')

    # 8. 定义函数, 实现查询所有学生信息功能.
    def search_all_student(self):
        #8.1 判断列表长度是否为空,若为空,则提示暂无学生信息,请添加后查询
        if len(self.stu_list)==0:
        		print('暂无学生信息,请添加后查询')
        else:
        		#8.2长度不为零,遍历列表,打印所有学生信息
        		for stu in self.stu_list:
        			print(stu)
        		print()
        

    # 9. 定义函数, 实现保存学生信息功能.
    def save_student(self):
        #9.1关联学生信息文件
        with open('data.txt','w',encoding = 'utf-8') as dest_f:
        #9.2 把 [学生对象, 学生对象...] -> [字典, 字典...]
        stu_dict = [stu.__dict__ for stu in self.stu_list]
        #把字典列表,记录到文件中
        dest_f.write(str(stu_dict))

    # 10. 定义函数, 实现加载学生信息.
    def load_student(self):
        #10.1加入异常处理,可能文件不存在
        try:
        #10.2 关联学生信息文件
        	with open(data.txt,'r','encoding='utf-8'') as src_f:
        	#10.3一次性读取所有数据
        	stu_data = src_f.read()
        	#10.4将上述字符串转换成列表
        	stu_list = eval(stu_data)
        	# 10.5 判断如果列表为空, 就赋予空列表.
            if len(stu_list) == 0:
                stu_list = []
                # 10.6 把stu_list(列表套字典) 转成 [学生对象, 学生对象...], 并赋值给 self.stu_list
                self.stu_list = [Student(**stu_dict) for stu_dict in stu_list]
            except:
            #走这里说明文件不存在,创建
            with open('data.txt,'w','encoding='utf-8') as src_f:
            	pass
                
        	
        	
    # 11.定义函数,把上述的所有业务逻辑泡桐
    def start(self):
    			# 11.1 加载学生信息.
	       self.load_student()
    			while True:
    					#打印学生管理系统的页面
    					self.show_view()
    					#提示用户录入要操作的编号,并接收.
    					input_num = import('请输入你要操作的编号:')
    					if input_num =='1':
    						# 添加学生信息
                print('添加学生信息\n')
                self.add_student()
            elif input_num == '2':
                # 删除学生信息
                print('删除学生信息\n')
                self.del_student()
            elif input_num == '3':
                # 修改学生信息
                print('修改学生信息\n')
                self.update_student()
            elif input_num == '4':
                # 查询单个学生信息
                print('查询单个学生信息\n')
                self.search_one_student()
            elif input_num == '5':
                # 查询所有学生信息
                print('查询所有学生信息\n')
                self.search_all_student()
            elif input_num == '6':
                # 保存学生信息
                print('保存学生信息\n')
                self.save_student()
            elif input_num =='0':
            		#退出系统,做二次校验
            		result = input('您确定要退出吗?(Y/N)')
            		if result.lower() =='y':
            				print('谢谢您的使用,期待下次再会!')
            				break
            		else:
            				#输入错误
            				print('录入有误,请重新录入\n')
 #在main中测试.
if __name__ == '__main__':
    # 创建学生管理系统对象.
    cms = StudentCMS()
    # 调用学生管理系统对象的start()函数, 启动学生管理系统.
    cms.start()
    

5.## 程序主入口文件(main.py)

from studentcms import StudentCMS

#程序主入口
if __name__ == '__main__':
    # 1. 创建学生管理系统对象.
    stu_cms = StudentCMS()
    # 2. 启动程序即可.
    stu_cms.start()
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐