简明Python教程命令行地址簿的Python与Java实现
2014-04-29 12:35
645 查看
最近读完了简明Python教程(AByteofPython),在此书的最后作者建议读者实现一个命令行Python程序:
“在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取。”
现在特地来交作业,同时对作者Swaroop,C.H.和译者沈洁元表示感谢!谢谢两位无私的奉献:)
操作系统windows7,Python版本2.7.5。
“在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取。”
现在特地来交作业,同时对作者Swaroop,C.H.和译者沈洁元表示感谢!谢谢两位无私的奉献:)
操作系统windows7,Python版本2.7.5。
#address.py #首先我们需要一个字典用于存放联系人和他的地址信息,这份信息在硬盘上的保存方式为address.txt: address={} ff=open("address.txt") #接下来是读取这个文本中的内容并存入字典中: whileTrue: line=ff.readline()#逐行读取数据 iflen(line)==0: break ifline=="\n": continue address[line.split(",")[0]]=line.split(",")[1]#添加文件内联系人数据至字典中 ff.close()#关闭 #实现添加方法: defaddUser(): n=raw_input('name:') m=raw_input('address:') address =m#写入字典 fileAdd=open("address.txt","a")#追加写入文件 fileAdd.write(n+","+m+"\n") fileAdd.close() #实现修改方法: defmodify(): n=raw_input('name:')#获取待修改的用户名 ifninaddress: m=raw_input('address:')#获取修改后的地址 address =m#修改字典并写入文件 fileModify=open("address.txt","w") forn,minaddress.items(): fileModify.write(n+","+m+"\n") fileModify.close() else: print'caiwuciren' #实现删除方法: defdelUser(): n=raw_input('name:')#获取输入的联系人 ifn=="": return deladdress #从字典中删除此联系人 fileDel=open("address.txt","w")#将字典中的联系人重新写入文件 forn,minaddress.items(): fileDel.write(n+","+m+"\n") fileDel.close() #实现查询方法: defquery(): n=raw_input('name:')#获取输入的联系人 ifninaddress: printn,address #打印联系人信息 else: print'caiwuciren' #最后添加命令入口: flag=True#如果没有退出命令则一直接收命令行输入的命令 whileflag: n=raw_input('operate:')#获取输入命令并调用相应方法 ifn=="add": addUser() ifn=="delete": delUser() ifn=="query": query() ifn=="modify": modify() ifn=="show": printaddress ifn=="Q":#退出执行 flag=False else: os.system('pause')#注意,Linux下无此方法
另外附上一个比较粗糙的Java实现:
packagecom.lyon.utils;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.Map;
publicclassAddress
{
staticMap<String,String>addressMap=newHashMap<String,String>();
publicstaticvoidmain(String[]args)
{
Filefile=newFile("C:\\pyTest\\address.txt");
BufferedReaderreader=null;
try
{
reader=newBufferedReader(newFileReader(file));
StringtempString=null;
while((tempString=reader.readLine())!=null)
{
if(tempString.length()>1)
{
Stringss[]=tempString.split(",");
addressMap.put(ss[0],ss[1]);
}
}
reader.close();
}
catch(IOExceptione)
{
e.printStackTrace();
}
Strings=readInput();
if(s=="Q")
{
System.out.println("tuichu");
return;
}
}
publicstaticStringreadInput()
{
while(true)
{
System.out.println("Operate:");
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
Stringpath=newString();
try
{
path=br.readLine();
}
catch(IOExceptione)
{
e.printStackTrace();
}
if(path.equals("add"))
{
add();
}
elseif(path.equals("delete"))
{
delete();
}
elseif(path.equals("query"))
{
query();
}
elseif(path.equals("modify"))
{
modify();
}
elseif(path.equals("Q"))
{
return"Q";
}
elseif(path.equals("show"))
{
System.out.println(addressMap);
}
else
{
System.out.println("inputshow,add,query,modify,deleteorQ.");
}
}
}
@SuppressWarnings("rawtypes")
privatestaticvoidmodify()
{
System.out.println("Name:");
BufferedReaderbrName=newBufferedReader(newInputStreamReader(System.in));
Stringname=newString();
try
{
name=brName.readLine();
}
catch(IOExceptione)
{
e.printStackTrace();
}
Iteratoriter=addressMap.entrySet().iterator();
while(iter.hasNext())
{
Map.Entryentry=(Map.Entry)iter.next();
Objectkey=entry.getKey();
if(key.equals(name))
{
System.out.println("Address:");
BufferedReaderbrAddress=newBufferedReader(newInputStreamReader(System.in));
Stringaddress=newString();
try
{
address=brAddress.readLine();
}
catch(IOExceptione)
{
e.printStackTrace();
}
addressMap.put(name,address);
}
}
try
{
FileWriterwriter=newFileWriter("C:\\pyTest\\address.txt");
Iteratorite=addressMap.entrySet().iterator();
while(ite.hasNext())
{
Map.Entryentry=(Map.Entry)ite.next();
Objectkey=entry.getKey();
Objectval=entry.getValue();
writer.write(key+","+val+"\n");
}
writer.close();
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
@SuppressWarnings("rawtypes")
privatestaticvoidquery()
{
System.out.println("Name:");
BufferedReaderbrName=newBufferedReader(newInputStreamReader(System.in));
Stringname=newString();
try
{
name=brName.readLine();
}
catch(IOExceptione)
{
e.printStackTrace();
}
Iteratoriter=addressMap.entrySet().iterator();
while(iter.hasNext())
{
Map.Entryentry=(Map.Entry)iter.next();
Objectkey=entry.getKey();
if(key.equals(name))
{
System.out.println(entry.getValue());
}
}
}
@SuppressWarnings("rawtypes")
privatestaticvoiddelete()
{
System.out.println("Name:");
BufferedReaderbrName=newBufferedReader(newInputStreamReader(System.in));
Stringname=newString();
try
{
name=brName.readLine();
}
catch(IOExceptione)
{
e.printStackTrace();
}
addressMap.remove(name);
try
{
FileWriterwriter=newFileWriter("C:\\pyTest\\address.txt");
Iteratoriter=addressMap.entrySet().iterator();
while(iter.hasNext())
{
Map.Entryentry=(Map.Entry)iter.next();
Objectkey=entry.getKey();
Objectval=entry.getValue();
writer.write(key+","+val+"\n");
}
writer.close();
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
privatestaticvoidadd()
{
System.out.println("Name:");
BufferedReaderbrName=newBufferedReader(newInputStreamReader(System.in));
Stringname=newString();
try
{
name=brName.readLine();
}
catch(IOExceptione)
{
e.printStackTrace();
}
System.out.println("Address:");
BufferedReaderbrAddress=newBufferedReader(newInputStreamReader(System.in));
Stringaddress=newString();
try
{
address=brAddress.readLine();
}
catch(IOExceptione)
{
e.printStackTrace();
}
addressMap.put(name,address);
try
{
FileWriterwriter=newFileWriter("C:\\pyTest\\address.txt",true);
writer.write(name+","+address+"\n");
writer.close();
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
}
相关文章推荐
- Python实现命令行通讯录实例教程
- [简明Python教程3.2版本实现] try_except.py
- 简明Python教程自学笔记——命令行通讯录
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列04)---- PyQt5自带教程:地址簿(address book)
- 2018年3月8日,解决python简明教程的习题“命令行添加需要备份的文件名”
- [概率论与数理统计&Python实现]简明教程
- python简明教程练习--命令行 地址簿 程序
- [简明Python教程3.2版本实现] pickling.py
- python简明教程练习--命令行 地址簿 程序
- 简明 Python 教程
- php trait 简明教程,多重继承的实现方案
- java实现短信通信的完整教程
- Python简明教程(二)函数
- paip.提升安全性----Des加密 java php python的实现总结
- quicksort快速排序(3种语言实现 c/java/python)
- Java 8 简明教程
- nginx tomcat集群配置实现无痛重启服务教程python语言版本
- 使用Python的Django框架实现事务交易管理的教程
- 简明Python3教程 8.控制流
- 超具实战意义的Python项目课程:四周实现爬虫系统 超经典的Python零基础实战化教程