python练习之学员管理系统

实现一个可以增删查的系统,主要是为了巩固 python 基础中的方法、字典、循环、判断等知识

打印菜单

效果如下

实现方法

1
2
3
4
print("="*12,"学员管理系统","="*14)
print("{0:1}{1:13}{2:15}".format(" ","1.查看学员信息","2.添加学员信息"))
print("{0:1}{1:13}{2:15}".format(" ","3.删除学员信息","4.退出系统"))
print("="*40)

format 函数可以接受不限个参数,位置可以不按顺序。

此外我们定义一个变量来接收输入的值,例如1、2、3、4

key = input("请输入对应的选择:")

但是,这样每次我们都要重新执行程序,这样非常不方便,因此我们可以设置一个死循环.

1
2
3
4
5
6
7
8
while 1:

print("="*12,"学员管理系统","="*14)
print("{0:1}{1:13}{2:15}".format(" ","1.查看学员信息","2.添加学员信息"))
print("{0:1}{1:13}{2:15}".format(" ","3.删除学员信息","4.退出系统"))
print("="*40)

key = input("请输入对应的选择:")

这样就可以每次执行完不停止进程而输出菜单了,另外我们要获取输入的值之后要进行判断.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

if key == "1":
print("="*12,"学员信息浏览","="*14)
input("按任意键继续...")

elif key == "2":
print("="*12,"学员信息添加","="*14)
input("按任意键继续...")
elif key == "3":
print("="*12,"删除学员信息","="*14)
input("按任意键继续...")
elif key == "4":
print("=" * 12, "退出系统", "=" * 14)
break
else:
print("="*12,"无效的键盘输入","="*14)

初始化数据

定义一个字典,加入一些数据.

1
2
3
4
5
stulist = [
{'name':'张三','age':20,'classid':'java'},
{'name':'李四','age':25,'classid':'java'},
{'name':'王五','age':15,'classid':'java'},
]

查看信息

查看学员信息要考虑到假如列表没有数据的情况,比如数据被删除完了,这个时候我们需要判断下 stulist 这个字典里还有没有数据,我们定义一个方法做以下事情:

1.判断字典是否为空,如果是空则输出信息
2.否则输入列表,这里要按一定的格式输出

1
2
3
4
5
6
7
8
9
10
11
def showStu(stulist):

if len(stulist) ==0:
print("="*12,"没有学员信息可以输出","="*14)
return

print("|{0:<5}|{1:<10}|{2:<5}|{3:10}|".format("sid","name","age","classid"))
print("-"*40)
for i in range(len(stulist)):
print("|{0:<5}|{1:<10}|{2:<5}|{3:10}|".format(i+1, stulist[i]['name'], stulist[i]['age'], stulist[i]['classid']))
print("-" * 40)

添加信息

如图所示

实现方法,当判断输入的值为2时,我们新建一个字典,然后往该字典添加3个值,并将该字典追加到stulist 中去并输出添加后的字典数据

1
2
3
4
5
6
7
8
9
10
11
elif key == "2":
print("="*12,"学员信息添加","="*14)

stu = {}
stu['name'] =input("请输入你要添加的姓名:")
stu['age'] = input("请输入要添加的年龄:")
stu['classid'] = input("请输入要添加的班级信息:")
stulist.append(stu)
showStu(stulist)

input("按回车键继续...")

删除信息

如图所示

实现方法,当输入值=3,获取需要删除的 id,因为是字典,我们需要拿到其下标,但是字典的下标是从0开始的,因此,我们需要-1,而又因为字符串的关系,因此这里我们需要强制转换下

1
2
3
4
5
6
7
elif key == "3":
print("="*12,"删除学员信息","="*14)
sid = input("请输入你需要删除的 id 号:")

del stulist[int(sid)-1]
showStu(stulist)
input("按回车键继续...")

退出系统

如图所示

实现方法,退出很好实现,当输入4时我们就跳出死循环就可以了

1
2
3
elif key == "4":
print("=" * 12, "退出系统", "=" * 14)
break

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

# -*- coding:utf-8 -*-


# 定义一个用于存放学员信息的列表变量

stulist = [
{'name':'张三','age':20,'classid':'java'},
{'name':'李四','age':25,'classid':'java'},
{'name':'王五','age':15,'classid':'java'},
]

# 定义一个学员的输出函数

def showStu(stulist):

if len(stulist) ==0:
print("="*12,"没有学员信息可以输出","="*14)
return

print("|{0:<5}|{1:<10}|{2:<5}|{3:10}|".format("sid","name","age","classid"))
print("-"*40)
for i in range(len(stulist)):
print("|{0:<5}|{1:<10}|{2:<5}|{3:10}|".format(i+1, stulist[i]['name'], stulist[i]['age'], stulist[i]['classid']))
print("-" * 40)



# 输出界面
def main():
while 1:

print("="*12,"学员管理系统","="*14)
print("{0:1}{1:13}{2:15}".format(" ","1.查看学员信息","2.添加学员信息"))
print("{0:1}{1:13}{2:15}".format(" ","3.删除学员信息","4.退出系统"))
print("="*40)

key = input("请输入对应的选择:")


if key == "1":
print("="*12,"学员信息浏览","="*14)
showStu(stulist)
input("按回车键继续...")

elif key == "2":
print("="*12,"学员信息添加","="*14)

stu = {}
stu['name'] =input("请输入你要添加的姓名:")
stu['age'] = input("请输入要添加的年龄:")
stu['classid'] = input("请输入要添加的班级信息:")
stulist.append(stu)
showStu(stulist)

input("按回车键继续...")

elif key == "3":
print("="*12,"删除学员信息","="*14)
sid = input("请输入你需要删除的 id 号:")

del stulist[int(sid)-1]
showStu(stulist)
input("按回车键继续...")

elif key == "4":
print("=" * 12, "退出系统", "=" * 14)
break

else:

print("="*12,"无效的键盘输入","="*14)

if __name__ == '__main__':
main()

拓展

那么如何进行如图所示修改操作呢?

既然是对字典进行操作,步骤应该如下:

1.获取需要修改的字典下标,然后将其替换,怎么替换呢?我们稍微修改下程序,判断输入的为4则修改,先给出当前已有的列表,然后要求用户输入 id,当然这个 id 是需要-1的,并且必须是int 类型,否则会报错,然后我们获取 stulist对应 id 的三个参数去进行输入即可。

1
2
3
4
5
6
7
elif key == "4":
showStu(stulist)
sid = int(input("请输入你需要修改的 id 号:"))-1
stulist[sid]["name"] = input("请输入你要修改的姓名:")
stulist[sid]["age"] = input("请输入你要修改的姓名:")
stulist[sid]["classid"] = input("请输入你要添加的班级信息:")
showStu(stulist)

GitHub code