matlab和java的混合编程

matlab和java的混合编程
matlab和java的混合编程

本人已在电脑上进行调试,并能成功运行。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 函数功能介绍:

% 主程序首先决定哪个目录给电话本文件存储使用。如果电话本文件不存在,那% 么程序通过调用java.io.FileOutStream对象的构造函数创建一个,然后关闭% 输出流。下一步程序调用一个Java API类java.util.Properties的构造函数% 来创建一个数据目录,这个类是在哈希表中存储数据。

% 当读电话本时,程序通过调用java.io.FileOutStream的构造函数创建和打开% 一个输入流,它还调用方法导入电话本的内容。如果查询电话,则调用

% pb_lookup()函数来寻找输入的电话并显示它。如果phonebook被调用时,没% 有参数,那么程序显示一个列表供用户查询。

% 主要有以下功能:

% 查询一条记录

% 增加一条记录

% 删除一条记录

% 修改一条记录

% 列举出电话本的所有电话

% 退出程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

主程序完整代码:

function phonebook(varargin)

%确定数据目录和程序全称

%首先给程序命名,名称为phonebook,电话本名称为telephonebook。如果

%这个程序是允许在PC上,那么程序调用https://www.360docs.net/doc/3c7582934.html,ng.System的表态方

%法getProperty来寻找一个用作数据目录的目录。

pbname='telephonebook';

if ispc

datadir=char(https://www.360docs.net/doc/3c7582934.html,ng.System.getProperty('user.dir'));

else

datadir='e:';

pbname=fullfile(datadir,pbname);

end

% 如果需要创建一个文件输出流

% 如果电话本文件不存在,那么就需要创建一个新的文件。如果用户的回答是y,% 程序将通过构造一个FileOutputStream对象创建一个新的电话本文件。

% 创建完毕后,关闭文件。如果创建失败,catch将返回一条错误信息

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 for reading',pbname));

end

else

return;

end

end

% 创建数据字典的哈希表

pb_htable=java.util.Properties;

% 创建一个文件输入流

try

FIS=java.io.FileInputStream(pbname);

catch

error(sprintf('Failed to open %s',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

end

各个子函数代码如下所示:

程序运行之后结果(只截取了一部分)如下图所示:

到此完结

相关主题
相关文档
最新文档