名片管理系统实现了用户对名片的增删改查的操作,项目中涉及到了Python的语句结构、自定义函数以及函数中形参和实参的传递等内容,比较适用于初学者练手
工具/原料
计算机
Python运行环境、pycharm
第一部分
1、创建“名片管理系统”项目
2、在“名片管理系统”下新建两个PythonFile,分别是“cards_main”和“cards_tools”,cards_main用来构建系统框架,cards_tools是用来定义系统中的函数,供cards_main调用
3、首先,将系统框娃肪篙泰架写在while循环体内,以方便用户多次使用,若没有循环体则执行操作序号一次退出一次。当用户选择“1”序号时,执行添加名片操作;当用户执行选择“2”序号时,执行显示所有名片操作;当用户选择“3”序号时,执行查询名片操作;(pass一般作为占位符或者创建占位程序,pass语句不会执行任何操作,在这里是为了方便测试,后续会删除掉)当用户选择“0”序号时break则退出while循环体,若不是以上操作序号则提示用户出错,重新选择。注意:break循环体中的位置
4、初步框架构建完成,运行,没有错误,注意查看执行“0”序号时有没有退出运行,若没有则查看break 在while循环体中的位置有没有错误。
5、在cards_tools函数中写入显示菜单的函数,并在主函数中导入cards_tools模块(菜单样式可以根据自己喜欢设计,不唯一)
6、运行代码,显示菜单,运行无误。注:把显示菜单的函数写如cards_tools的目的是为了减少主函数运行的复杂度。
第二部分
1、首先在cards_tools模块中定义一个全局列表card_list,自定义一个函数用来实现新建名片的功能。定义变量用input()接收用户输入的姓名、电话、QQ和邮箱的信息
2、定义一个字典card_dist,用来存储不同用户的信息,字典的键分别是“name”、“phone”、“qq”和“email惯墀眚篪”,键值是从用户输入接收到的“name_str”、“phone_str”、“qq_str”和“email_str”,这里是将用户输入的信息变量传递给了card_dist字典
3、用append() 将字典中的内容添加到全局变量card_list列表中,以供之后定义的函数调用,card_list.append(card_dist)
4、用print(“名片添加成功!”)提醒用户名片添加成功,完善系统,至此,名片添加功能函数已完成。
5、在主函数中将pass删除,调用new_cards() 函数,当用户输入1时,主函数就会调用new_cards() 函数来实现添加新名片的功能
6、运行代码,测试,无误
第三部分
1、首先判断cards_list列表内是否为空,若为空说明目前用户没有添加名片,提醒用户添加名片,然后return,return可以返回一个函数的执行结果,下方的代码就不会被执行
2、显示出名片表格的表头,“end = “\t\t\t””是四个表头的间隔,一个\t等于一个tab键
3、用for循环遍历字典将字典中的用户信息打印到表格中,并按照一个名片信息一行的形式打印出来,%s表示打印出来的是字符串。至此,名片管理系统的第二个功能显示所有名片的代码已经完成。在主函数的第二个功能内调用show_all()函数,将pass删除
4、运行测试,要先用添加名片新增一个或者一个以上的名片,才可以用显示全部功能,显示出来名片
第四部分
1、定义函数search_card(),find_name用来接收用户输入的需要查询的名片的姓名,然后用for循环遍历名片列表,用if判断find_name和名片字典中的card_d足毂忍珩ist(“name”)的键值是否一致,若一致则输出该名片的信息表格,将名片字典作为实参传递给deal_card函数,并调用deal_card()函数(后续会讲到该函数的创建);否则输出“没有找到该名片”提醒用户
2、定义deal_card函数,参数命名为find_car蟠校盯昂d,接收的是上文中需要查询的名片的字典,定义一个action_str 字符变量,用来存储用户输入的功能1是修改,2是删除,0是返回上级菜单,若用户输入的是序号1则将用户输入的修改后的名片字典里的键值传递给find_dict,让新传递的键值覆盖原来的键值(后续会将如何获取新的键值),用户需要修改哪一项便覆盖哪一项,例如原本的名片姓名是张三修改为李四,则只修改字典中的“name”的键值即可。当用户输入的是操作数是2时则执行删除查询名片,用remove()函数将用户查询的名删除即可。dist_value是将原有的键值传递给了input_card_info函数;而 tip_message 则是需要返回给find_dist字典的键值
3、定义一个input_card_info(dist_va盟敢势袂lue,tip_message)函数,dist_value是find忧溲枷茫_dist传递过来的字典中原有的键值,tip_message是用户要输入的键值,由result_str来接收,然后通过result_str 的长度,来判断用户是否有改变键值。若result_str的长度大于0(用户输入了键值),则返回用户输入的键值(tip_missage);否则就返回字典中原有的键值(dist_value)find_dist["name"] = input_card_info(find_dist["name"], "姓名:")find_dist["phone"] = input_card_info (find_dist["phone"], "电话:")find_dist["qq"] = input_card_info(find_dist["qq"], "QQ:")find_dist["email"] = input_card_info (find_dist["email"], "邮箱:")input_card_info ()函数被字典中的每一个键调用,当键值有改变的时候便传递新的键值给fiad_dist字典,若用户没有输入,则传递原有的值。最后三个函数是嵌套调用,由search_card() 函数来调用deal_card() 函数,而deal_card() 函数再调用input_card_info() 函数