学生电话簿管理系统:
1、界面:提示用户输入(1,2,3,4,5,6, 7, 0):
(1)添加学生(姓名、电话(不可以重复)、地址、爱好),并自动生成ID(不可以重复)
(2)查看所有学生信息(只显示ID、姓名、电话)
(3)根据ID删除学生
(4)根据指定ID查看一个学生详细信息(所有信息都要显示)
(5)根据电话查找学生,并查看详细信息
(6)根据姓名查看所有同名学生(ID和电话)
(7)通过ID找到学生,并修改学生信息
(8)退出系统
2、每次选择操作后重新提示用户进行选择操作。
一、模块分类
首先,将本系统划分为模块进行框架设计。在这里,我们在新建的项目里新建一个main主模块,然后再新建一个package包。然后我们再在package包里面建立7个分模块,分别对应项目的7个要求功能。具体如下图所示:
其中,list模块是主模块的一个内容,这里我们选择单独放到一个子模块里面,以便于7个分模块对其进行功能调用,而且不会出现模块相互调用,进而陷入无限循环调用的错误。
stu_list = [ {'姓名': '美队', '电话': 123, '地址': '纽约', '爱好': '扔盾牌', 'ID': 186}, {'姓名': '浩克', '电话': 124, '地址': '芝加哥', '爱好': '砸东西', 'ID': 587}, {'姓名': '钢铁侠', '电话': 125, '地址': '华盛顿', '爱好': '造战甲', 'ID': 150}, {'姓名': '雷神', '电话': 126, '地址': '外星球', '爱好': '扔锤子', 'ID': 515} ]
二、模块讲解
1.main模块内容如下:
import package01.insert as my_insert
import package01.search as my_search
import package01.delete as my_delete
import package01.find_id as my_find_id
import package01.find_tel as my_find_tel
import package01.find_name as my_find_name
import package01.modify as my_modify
welcome = '''
-----------------学生信息管理系统----------------
|====================功能菜单====================|
| |
| 1 添加学生 |
| 2 查看所有学生信息 |
| 3 根据ID删除学生 |
| 4 根据指定ID查看一个学生详细信息 |
| 5 根据电话查找学生,并查看详细信息 |
| 6 根据姓名查看所有同名学生 |
| 7 通过ID找到学生,并修改学生信息 |
| |
|=============================================== |
|------------------------------------------------|
'''
while True:
print(welcome)
option = int(input('请选择:')) #选择菜单项
if option == 1: #添加学生
print('-------------添加学生信息--------------')
my_insert.add_stu()
elif option == 2: #查看所有学生信息
print('-------------查看所有学生信息--------------')
my_search.show_stu()
elif option == 3: #根据ID删除学生
print('-------------根据ID删除学生--------------')
my_delete.delete_stu()
elif option == 4: #根据指定ID查看一个学生详细信息
print('-------------根据指定ID查看一个学生详细信息--------------')
my_find_id.find_id()
elif option == 5: #根据电话查找学生,并查看详细信息
print('-------------根据电话查找学生,并查看详细信息--------------')
my_find_tel.find_tel()
elif option == 6: #根据姓名查看所有同名学生
print('-------------根据姓名查看所有同名学生--------------')
my_find_name.find_name()
elif option == 7: #通过ID找到学生,并修改学生信息
print('-------------通过ID找到学生,并修改学生信息--------------')
my_modify.modify_stu()
elif option == 0:
print('退出系统')
break
else:
print('输入选项有误,请重新输入 ')
以下是main主模块对以下7个分模块的调用,进而实现系统的完整的功能。
import package01.insert as my_insert
import package01.search as my_search
import package01.delete as my_delete
import package01.find_id as my_find_id
import package01.find_tel as my_find_tel
import package01.find_name as my_find_name
import package01.modify as my_modify
以下代码是main主模块实现对系统分模块的跳转衔接。
if option == 1: #添加学生
print('-------------添加学生信息--------------')
my_insert.add_stu()
elif option == 2: #查看所有学生信息
print('-------------查看所有学生信息--------------')
my_search.show_stu()
elif option == 3: #根据ID删除学生
print('-------------根据ID删除学生--------------')
my_delete.delete_stu()
elif option == 4: #根据指定ID查看一个学生详细信息
print('-------------根据指定ID查看一个学生详细信息--------------')
my_find_id.find_id()
elif option == 5: #根据电话查找学生,并查看详细信息
print('-------------根据电话查找学生,并查看详细信息--------------')
my_find_tel.find_tel()
elif option == 6: #根据姓名查看所有同名学生
print('-------------根据姓名查看所有同名学生--------------')
my_find_name.find_name()
elif option == 7: #通过ID找到学生,并修改学生信息
print('-------------通过ID找到学生,并修改学生信息--------------')
my_modify.modify_stu()
2. 7个分模块内容如下:
# (1) 添加学生(姓名、电话(不可以重复)、地址、爱好),并自动生成ID(不可以重复)
import random
import package01.list as my_list
def add_stu():
name = input('请输入新增学生姓名:')
tel = int(input('请输入新增学生电话:'))
ID = random.randint(100, 1000)
for i in range(len(my_list.stu_list)):
if my_list.stu_list[i]['电话'] == tel or my_list.stu_list[i]['ID'] == ID:
break
else:
address = input('请输入新增学生地址:')
hobby = input('请输入新增学生爱好:')
stu_dict_new = {'姓名': name, '电话': tel, '地址': address, '爱好': hobby, 'ID': ID}
my_list.stu_list.append(stu_dict_new)
# (2) 查看所有学生信息(只显示ID、姓名、电话)
import package01.list as my_list
def show_stu():
print('ID\t\t姓名\t\t电话')
for stu in my_list.stu_list:
print('{}\t\t{}\t\t{}'.format(stu['ID'], stu['姓名'], stu['电话']))
# (3) 根据ID删除学生
import package01.list as my_list
def delete_stu():
ID1 = int(input('请输入学生ID:'))
for stu in my_list.stu_list:
if ID1 == stu['ID']:
my_list.stu_list.remove(stu)
break
else:
print('输入ID有误')
# (4) 根据指定ID查看一个学生详细信息(所有信息都要显示)
import package01.list as my_list
def find_id():
ID1 = int(input('请输入查找的学生ID:'))
print('姓名\t\t电话\t\t地址\t\t爱好\t\tID')
for stu in my_list.stu_list:
if ID1 == stu['ID']:
print('{}\t\t{}\t\t{}\t\t{}\t\t{}'.format(stu['姓名'], stu['电话'], stu['地址'], stu['爱好'], stu['ID']))
break
else:
print('输入学生ID有误!')
# (5) 根据电话查找学生,并查看详细信息
import package01.list as my_list
def find_tel():
tel1 = int(input('请输入查找的学生电话:'))
print('姓名\t\t电话\t\t地址\t\t爱好\t\tID')
for stu in my_list.stu_list:
if tel1 == stu['电话']:
print('{}\t\t{}\t\t{}\t\t{}\t\t{}'.format(stu['姓名'], stu['电话'], stu['地址'], stu['爱好'], stu['ID']))
break
else:
print('输入学生电话有误!')
# (6) 根据姓名查看所有同名学生(ID和电话)
import package01.list as my_list
def find_name():
name1 = input('请输入查找的学生姓名:')
list1 = []
for name_dict in my_list.stu_list:
list1.append(name_dict['姓名'])
if name1 in list1:
name_num = list1.count(name1)
if name_num >= 2:
list2 = []
for e in range(name_num):
name_index = list1.index(name1)
list1.remove(name1)
list2.append(name_index)
list3 = []
for x in range(len(list2)):
y = list2[x] + x
list3.append(y)
print('姓名\t\tID\t\t电话')
for new_index in list3:
new_dict = my_list.stu_list[new_index]
print('{}\t\t{}\t\t{}'.format(new_dict['姓名'], new_dict['ID'], new_dict['电话']))
else:
print('该学生不重名')
else:
print('该学生不存在')
# (7) 通过ID找到学生,并修改学生信息
import package01.list as my_list
def modify_stu():
ID1 = int(input('请输入学生ID:'))
for stu in my_list.stu_list:
if ID1 == stu['ID']:
name = input('请输入学生姓名:')
tel = input('请输入学生电话:')
address = input('请输入学生地址:')
hobby = input('请输入学生爱好:')
stu['姓名'] = name
stu['电话'] = tel
stu['地址'] = address
stu['爱好'] = hobby
break
else:
print('输入学生ID有误!')