简明Python教程命令行地址簿的Python与Java实现
标签:com http blog style class div img code java c log
最近读完了简明Python教程(A Byte of
Python),在此书的最后作者建议读者实现一个命令行Python程序:
“在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取。”
现在特地来交作业,同时对作者Swaroop, C. H.和译者沈洁元表示感谢!谢谢两位无私的奉献:)
操作系统windows7,Python版本2.7.5。
#address.py
#首先我们需要一个字典用于存放联系人和他的地址信息,这份信息在硬盘上的保存方式为address.txt:
address = {}
ff = open("address.txt")
#接下来是读取这个文本中的内容并存入字典中:
while True:
line = ff.readline() #逐行读取数据
if len(line) == 0:
break
if line == "\n":
continue
address[line.split(",")[0]]=line.split(",")[1] #添加文件内联系人数据至字典中
ff.close() #关闭
#实现添加方法:
def addUser():
n = raw_input(‘name:‘)
m = raw_input(‘address:‘)
address[n]=m #写入字典
fileAdd = open("address.txt","a") #追加写入文件
fileAdd.write(n+","+m+"\n")
fileAdd.close()
#实现修改方法:
def modify():
n = raw_input(‘name:‘) #获取待修改的用户名
if n in address:
m = raw_input(‘address:‘) #获取修改后的地址
address[n]=m #修改字典并写入文件
fileModify = open("address.txt","w")
for n,m in address.items():
fileModify.write(n+","+m+"\n")
fileModify.close()
else:
print ‘cai wu ci ren‘
#实现删除方法:
def delUser():
n = raw_input(‘name:‘) #获取输入的联系人
if n == "":
return
del address[n] #从字典中删除此联系人
fileDel = open("address.txt","w") #将字典中的联系人重新写入文件
for n,m in address.items():
fileDel.write(n+","+m+"\n")
fileDel.close()
#实现查询方法:
def query():
n = raw_input(‘name:‘) #获取输入的联系人
if n in address:
print n,address[n] #打印联系人信息
else:
print ‘cai wu ci ren‘
#最后添加命令入口:
flag= True #如果没有退出命令则一直接收命令行输入的命令
while flag:
n = raw_input(‘operate:‘) #获取输入命令并调用相应方法
if n=="add":
addUser()
if n =="delete":
delUser()
if n == "query":
query()
if n == "modify":
modify()
if n == "show":
print address
if n=="Q": #退出执行
flag =False
else:
os.system(‘pause‘) #注意,Linux下无此方法
另外附上一个比较粗糙的Java实现:
package com.lyon.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Address
{
static Map addressMap = new HashMap();
public static void main(String[] args)
{
File file = new File("C:\\pyTest\\address.txt");
BufferedReader reader = null;
try
{
reader = new BufferedReader(new FileReader(file));
String tempString = null;
while ((tempString = reader.readLine()) != null)
{
if (tempString.length() > 1)
{
String ss[] = tempString.split(",");
addressMap.put(ss[0], ss[1]);
}
}
reader.close();
}
catch (IOException e)
{
e.printStackTrace();
}
String s = readInput();
if (s == "Q")
{
System.out.println("tuichu");
return;
}
}
public static String readInput()
{
while (true)
{
System.out.println("Operate:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String path = new String();
try
{
path = br.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
if (path.equals("add"))
{
add();
}
else if (path.equals("delete"))
{
delete();
}
else if (path.equals("query"))
{
query();
}
else if (path.equals("modify"))
{
modify();
}
else if (path.equals("Q"))
{
return "Q";
}
else if (path.equals("show"))
{
System.out.println(addressMap);
}
else
{
System.out.println("input show,add,query,modify,delete or Q.");
}
}
}
@SuppressWarnings("rawtypes")
private static void modify()
{
System.out.println("Name:");
BufferedReader brName = new BufferedReader(new InputStreamReader(System.in));
String name = new String();
try
{
name = brName.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
Iterator iter = addressMap.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
if (key.equals(name))
{
System.out.println("Address:");
BufferedReader brAddress = new BufferedReader(new InputStreamReader(System.in));
String address = new String();
try
{
address = brAddress.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
addressMap.put(name, address);
}
}
try
{
FileWriter writer = new FileWriter("C:\\pyTest\\address.txt");
Iterator ite = addressMap.entrySet().iterator();
while (ite.hasNext())
{
Map.Entry entry = (Map.Entry) ite.next();
Object key = entry.getKey();
Object val = entry.getValue();
writer.write(key + "," + val+ "\n");
}
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
@SuppressWarnings("rawtypes")
private static void query()
{
System.out.println("Name:");
BufferedReader brName = new BufferedReader(new InputStreamReader(System.in));
String name = new String();
try
{
name = brName.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
Iterator iter = addressMap.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
if (key.equals(name))
{
System.out.println(entry.getValue());
}
}
}
@SuppressWarnings("rawtypes")
private static void delete()
{
System.out.println("Name:");
BufferedReader brName = new BufferedReader(new InputStreamReader(System.in));
String name = new String();
try
{
name = brName.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
addressMap.remove(name);
try
{
FileWriter writer = new FileWriter("C:\\pyTest\\address.txt");
Iterator iter = addressMap.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
writer.write(key + "," + val+ "\n");
}
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
private static void add()
{
System.out.println("Name:");
BufferedReader brName = new BufferedReader(new InputStreamReader(System.in));
String name = new String();
try
{
name = brName.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
System.out.println("Address:");
BufferedReader brAddress = new BufferedReader(new InputStreamReader(System.in));
String address = new String();
try
{
address = brAddress.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
addressMap.put(name, address);
try
{
FileWriter writer = new FileWriter("C:\\pyTest\\address.txt", true);
writer.write(name + "," + address + "\n");
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
简明Python教程命令行地址簿的Python与Java实现,搜素材,soscw.com
简明Python教程命令行地址簿的Python与Java实现
标签:com http blog style class div img code java c log
原文地址:http://www.cnblogs.com/lyonwang/p/3698962.html
评论