您的位置:首页 > 编程语言 > Python开发

简明Python教程命令行地址簿的Python与Java实现

2014-04-29 12:35 645 查看
最近读完了简明Python教程(AByteofPython),在此书的最后作者建议读者实现一个命令行Python程序:

“在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取。”

现在特地来交作业,同时对作者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();
}
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: