Python——面向对象,简易学生信息管理系统

一、概述

1.1涉及到的知识点

  项目开发:创建项目,创建包,导入包;

  面向对象:静态方法,继承,内置函数,自定义函数;

  数据类型:列表,字典,字符串、列表、字典的转换和自动生成导向;

  异常处理:捕获异常; 文件操作:读,写;

1.2需求分析

  (1)思考学员管理系统需要哪些功能?

  (2)思考可以将哪些功能对象化?

  (3)创建的对象可将功能方法化(函数化)吗?

二、具体实现

  (1)创建项目:StudentManagerSystem;

  (2)创建文件:main,managerSystem,student;

  

  (3)在文件内创建具体对象;

  Student:基本属性有name,gender,tel,方法(__str__)返回具体属性值

  managerSystem:属性依赖于Student,本身无属性,

          功能有:执行函数run,静态方法show_menu,以及add_stu等增删改操作

  main:创建对象,执行文件

  (4)细节要点

  确保在相应文件首部中导入正确的包,即使正确,仍可能有警告;

  每写完一个小功能,都要立即进行测试,发现问题及时解决;

  注意数据的存储形式,列表,字符串;

三、总结

  这个项目跟着老师做了差不多一周,因为涉及的知识点很多事前面学过但没有很熟练掌握的,所以有些吃力,加上最近开学,有很任务要完成,勉强每天学一点,效果不是很好,但学了总比没学好。马上就要进入mooc学图形了,不求每天学得很多,能学一点是一点,希望自己可以坚持下去吧!

四、完整源码

  1 # student.py
  2 class Student(object):
  3     def __init__(self, name, gender, tel):
  4         self.name = name
  5         self.gender = gender
  6         self.tel = tel
  7 
  8     def __str__(self):
  9         return f'姓名:{self.name},' \
 10                f'性别:{self.gender},' \
 11                f'手机号:{self.tel}'
 12 
 13 
 14 # managerSystem.py
 15 """
 16 存储数据:文件(student.data)
 17         加载文件数据
 18         修改数据后保存到文件
 19 存储形式:list 存储学员对象
 20 系统功能:add,del,modify,find,display,save,exit
 21 """
 22 from student import *
 23 
 24 
 25 class StudentManager(object):
 26     def __init__(self):
 27         """存储数据"""
 28         self.stu_list = []
 29 
 30     def run(self):
 31         self.load_stu()
 32 
 33         while True:
 34             self.show_menu()
 35             k = int(input('请输入功能序号:\n'))
 36             if k == 1:
 37                 self.add_stu()
 38             elif k == 2:
 39                 self.del_stu()
 40             elif k == 3:
 41                 self.modify()
 42             elif k == 4:
 43                 self.find()
 44             elif k == 5:
 45                 self.display()
 46             elif k == 6:
 47                 self.save()
 48             elif k == 7:
 49                 break
 50 
 51     @staticmethod
 52     def show_menu():
 53         """显示功能菜单"""
 54         print('请选择如下功能:')
 55         print('1:添加学员')
 56         print('2:删除学员')
 57         print('3:修改学员信息')
 58         print('4:查询学员')
 59         print('5:显示全部学员信息')
 60         print('6.:保存学员信息')
 61         print('7:退出系统')
 62 
 63     def add_stu(self):
 64         name = input('请输入您的姓名:')
 65         gender = input('请输入您的性别:')
 66         tel = input('请输入您的电话号码:')
 67         stu = Student(name, gender, tel)
 68         self.stu_list.append(stu)
 69         print(self.stu_list, stu)
 70 
 71     def del_stu(self):
 72         del_name = input('请输入要删除学员姓名:')
 73         for i in self.stu_list:
 74             if i.name == del_name:
 75                 self.stu_list.remove(i)
 76                 break
 77         else:
 78             print('查无此人。')
 79         print(self.stu_list)
 80 
 81     def modify(self):
 82         modiy_name = input('请输入要修改的学员姓名:')
 83         for i in self.stu_list:
 84             if i.name == modiy_name:
 85                 i.name = input('请输入您的姓名:')
 86                 i.gender = input('请输入您的性别:')
 87                 i.tel = input('请输入您的电话号码:')
 88                 print(f'姓名:{i.name},性别:{i.gender},电话号码:{i.tel}\n'
 89                       f'修改学员信息成功.')
 90                 break
 91         else:
 92             print('该学员不存在!')
 93 
 94     def find(self):
 95         find_name = input('请输入要修改的学员姓名:')
 96         for i in self.stu_list:
 97             if i.name == find_name:
 98                 print(f'姓名:{i.name},性别:{i.gender},电话号码:{i.tel}\n'
 99                       f'修改学员信息成功.')
100                 break
101         else:
102             print('该学员不存在!')
103 
104     def display(self):
105         for i in self.stu_list:
106             print(f'姓名:{i.name},'
107                   f'性别:{i.gender},'
108                   f'电话号码:{i.tel}\n'
109                   f'修改学员信息成功.')
110 
111     def save(self):
112         """文件写入学员数据"""
113         f = open('student.data', 'w')
114         new_list = [i.__dict__ for i in self.stu_list]
115         f.write(str(new_list))
116         f.close()
117 
118     def load_stu(self):
119         try:
120             f = open('student.data', 'r')
121         except:
122             f = open('student.data', 'w')
123         else:
124             data = f.read()
125 
126             # 将data字符串转换为列表类型数据
127             new_list = eval(data)
128 
129             # 列表推导式
130             self.stu_list = [Student(i['name'],
131                                      i['gender'],
132                                      i['tel'] )
133                              for i in new_list]
134         finally:
135             f.close()
136 
137 # main.py
138 from managerSystem import *
139 
140 
141 if __name__ == '__main__':
142     stu = StudentManager()
143     stu.run()

猜你喜欢

转载自www.cnblogs.com/kekefu/p/12344744.html