📄 phonebook.m
字号:
function phonebook(varargin)
pbname = 'myphone'; % name of data dictionary
if ispc
datadir = char(java.lang.System.getProperty('user.dir'));
else
datadir = getenv('HOME');
end;
pbname = fullfile(datadir, pbname)
if ~exist(pbname)
disp(sprintf('Data file %s does not exist.', pbname));
r = input('Create a new phone book (y/n)?','s');
if r == 'y',
try
FOS = java.io.FileOutputStream(pbname);
FOS.close
catch
error(sprintf('Failed to create %s', pbname));
end;
else
return;
end;
end;
pb_htable = java.util.Properties;
try
FIS = java.io.FileInputStream(pbname);
catch
error(sprintf('Failed to open %s for reading.', pbname));
end;
pb_htable.load(FIS);
FIS.close;
while 1
disp ' '
disp ' Phonebook Menu:'
disp ' '
disp ' 1. Look up a phone number'
disp ' 2. Add an entry to the phone book'
disp ' 3. Remove an entry from the phone book'
disp ' 4. Change the contents of an entry in the phone book'
disp ' 5. Display entire contents of the phone book'
disp ' 6. Exit this program'
disp ' '
s = input('Please type the number for a menu selection: ','s');
switch s
case '1',
name = input('Enter the name to look up: ','s');
if isempty(name)
disp 'No name entered'
else
pb_lookup(pb_htable, name);
end;
case '2',
pb_add(pb_htable);
case '3',
name=input('Enter the name of the entry to remove: ', 's');
if isempty(name)
disp 'No name entered'
else
pb_remove(pb_htable, name);
end;
case '4',
name=input('Enter the name of the entry to change: ', 's');
if isempty(name)
disp 'No name entered'
else
pb_change(pb_htable, name);
end;
case '5',
pb_listall(pb_htable);
case '6',
try
FOS = java.io.FileOutputStream(pbname);
catch
error(sprintf('Failed to open %s for writing.',...
pbname));
end;
pb_htable.save(FOS,'Data file for phonebook program');
FOS.close;
return;
otherwise
disp 'That selection is not on the menu.'
end;
end;
function pb_lookup(pb_htable,name)
entry = pb_htable.get(pb_keyfilter(name));
if isempty(entry),
disp(sprintf('The name %s is not in the phone book',name));
else
pb_display(entry);
end
function pb_add(pb_htable)
disp 'Type the name for the new entry, followed by Enter.'
disp 'Then, type the phone number(s), one per line.'
disp 'To complete the entry, type an extra Enter.'
name = input(':: ','s');
entry=[name '^'];
while 1
line = input(':: ','s');
if isempty(line)
break;
else
entry=[entry line '^'];
end;
end;
if strcmp(entry, '^')
disp 'No name entered'
return;
end;
pb_htable.put(pb_keyfilter(name),entry);
disp ' '
disp(sprintf('%s has been added to the phone book.', name));
function pb_remove(pb_htable,name)
if ~pb_htable.containsKey(pb_keyfilter(name))
disp(sprintf('The name %s is not in the phone book',name))
return
end;
r = input(sprintf('Remove entry %s (y/n)? ',name), 's');
if r == 'y'
pb_htable.remove(pb_keyfilter(name));
disp(sprintf('%s has been removed from the phone book',name))
else
disp(sprintf('%s has not been removed',name))
end;
function pb_change(pb_htable,name)
entry = pb_htable.get(pb_keyfilter(name));
if isempty(entry)
disp(sprintf('The name %s is not in the phone book', name));
return;
else
pb_display(entry);
r = input('Replace phone numbers in this entry (y/n)? ','s');
if r ~= 'y'
return;
end;
end;
disp 'Type in the new phone number(s), one per line.'
disp 'To complete the entry, type an extra Enter.'
disp(sprintf(':: %s', name));
entry=[name '^'];
while 1
line = input(':: ','s');
if isempty(line)
break;
else
entry=[entry line '^'];
end;
end;
pb_htable.put(pb_keyfilter(name),entry);
disp ' '
disp(sprintf('The entry for %s has been changed', name));
function pb_listall(pb_htable)
enum = pb_htable.propertyNames;
while enum.hasMoreElements
key = enum.nextElement;
pb_display(pb_htable.get(key));
end;
function pb_display(entry)
disp ' '
disp '-------------------------'
[t,r] = strtok(entry,'^');
while ~isempty(t)
disp(sprintf(' %s',t));
[t,r] = strtok(r,'^');
end;
disp '-------------------------'
function out = pb_keyfilter(key)
if ~isempty(findstr(key,' '))
out = strrep(key,' ','_');
else
out = strrep(key,'_',' ');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -