西安工业大学
操作系统课程设计报告
课 目:¬¬¬¬ 银行家算法
学 院: 计算机科学与工程学院
指导教师: 姜虹
学 生: 王丽娇
班 级: 网络工程080610127
完成时间:2010年12月25日
操作系统课程设计报告
课 目:¬¬¬¬ 银行家算法
学 院: 计算机科学与工程学院
指导教师: 姜虹
学 生: 王丽娇
班 级: 网络工程080610127
目 录
1、项目内容、要求与分组情况总体介绍 2
2、概要设计 2
2.1开发工具及环境 2
2.2 任务及需求分析 2
2.3 功能模块设计 2
2.4 工作原理 3
3、 具体实现 3
3.1 类设计 3
3.2 模块及实现代码介绍 3
4、运行调试与分析讨论 4
5、设计体会与小结 6
6、参考文献 7
附录:(源程序) 7
1、项目内容、要求与分组情况总体介绍
项目内容、要求:
本次实验的目标是制作一个计算器,可以进行简单的四则运算(加、减、乘、除)。
小组的具体分工情况见下表:
小组组长 谌江波
成员 子项目名称 具体要求
谌江波 模块的组合及测试 查找出程序的错误并改正
肖权 数字键的注册 将数字键注册监听者,使其功能正常
刘达辉 窗口的创建和分配 设计计算器的界面
李晓阳 组合其余同学的工作 是程序完整化
詹烨刚 编写具体的计算方法 添加运算符号及功能代码
2、概要设计
2.1开发工具及环境
文本编辑器:记事本;
运行环境:命令提示符(DOS环境)。
2.2 任务及需求分析
设计简易计算器程序,实现简单的运算(加减乘除),具体任务如下:
1) 计算器窗口界面布局设计;
2) 各种计算功能的算法分析;
3) 编程实现具体的计算功能;
4) 运行测试程序,调试纠正运行错误。
5) 调试无误,运行,测试具体算法功能。
2.3 功能模块设计
计算器的模块设计图如下:
2.4 工作原理
点击相应的数字键,即会在显示文档中显示该数字。进行相应的运算,首先输入第一个计算数字,然后输入运算符,再输入第二个计算数字,点击“=”按钮即得计算结果。同时,还有归零功能,点击该按钮,显示栏中即可归零。
3、 具体实现
3.1 类设计
类名:jisuanqi
作用:功能代码,窗口布局设定
public class Calculator extends WindowAdapter
{}
¬WindowAdapter实现了WindowListener的类,实现了WindowListener
frame.addWindowListener(new WindowAdapter(){});———————————————————————————
类名:WindowDestroyer
作用:用于退出窗口动作
关键代码:
class close implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
3.2 模块及实现代码介绍
Frame fm = new Frame("简单计算器");
for (int i = 0; i <= 16; i++) {
b[i] = new Button(ss[i]);
}
for (int i = 0; i <= 15; i++) {
p2.add(b[i]);
} //创建按钮 并添加到P2
b[16].setBackground(Color.yellow);
txt = new TextField(15);
txt.setEditable(false);
for (int i = 0; i <= 16; i++) {
b[i].addActionListener(new buttonlistener());…… }
注:此方法主要设置窗口、面板、各个按键。对各个按键进行定义(定义好各按键该实现什么功能)、排布,将各个按键注册到监听器上。
———————————————————————————
txt.setText(txt.getText() + btn.getLabel());
if (btn.getLabel() == "归零")
txt.setText("");
注:该代码使每次进入时的文本都清空
———————————————————————————
class close implements ActionListener {//退出
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
注:该方法实现了窗口的关闭
4、运行调试与分析讨论
调试运行45运算,运算过程如下所示:
1)命令提示符中运行计算器程序,如下图:
2)计算器界面显示,输入第一个运算值“4”,如下图:
3)输入运算符“”,如下图:
4)输入第二个运算值“5”,如下图所示:
5)点击计算器按钮“=”,得出计算结果。如下图:
5、设计体会与小结
通过这次课程设计,我们了解到java也是可以分工合作的,虽然最后的整合过程非常麻烦,但是在整合完后,我们发现,课本被翻过很多遍,很多以前不知道的东西就这样豁然开朗了。我们还引用了很多从来没有用过的语句块,大多是从网上找到,然后自己整合进入代码,再实现我们想要的功能。
编程是个艰难的过程,很多功能语句都需要上网或者是查其他书籍来查看他们的用法,课本上的东西对我们来说远远不够,我们要把目光放长远一些。
这次的课程设计使我对JAVA的许多东西都有了更深一步的了解,以前对自己的要求是看得懂就行,现在才发现,光能看懂是远远不够的,能看懂并不代表你会!只有自己真的亲身体验到了,才会知道。
这个礼拜的课程设计是这个学期最累的一个礼拜,但是,我们的付出总算有回报,虽然我们的计算器可能还存在不少的问题,但是,至少它可以正常运行四则运算,基本达到了我们预期的要求,所以,这个礼拜同样是我最充实的一个礼拜。
6、参考文献
[1]杜春涛,《面向对象程序设计—Java语言》,中国铁道出版社.
[2]丁振凡,《JAVA语言实用教程》,北京邮电大学出版社.
[3]
附录:(源程序)
import java.awt.;
import java.awt.event.;
public class jisuanqi extends WindowAdapter {
Panel p1 = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel();
TextField txt;
private Button[] b = new Button[17];
private String ss[] = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "", "归零", "0", "=", "/", "关闭" };
static double a;
static String s, str;//定义变量 创建对像
public static void main(String args[]) {
(new jisuanqi()).frame();
}
public void frame() {
Frame fm = new Frame("简单计算器");
for (int i = 0; i <= 16; i++) {
b[i] = new Button(ss[i]);
}
for (int i = 0; i <= 15; i++) {
p2.add(b[i]);
} //创建按钮 并添加到P2
b[16].setBackground(Color.yellow);
txt = new TextField(15);
txt.setEditable(false);
for (int i = 0; i <= 16; i++) {
b[i].addActionListener(new buttonlistener());//添加监听器
}
b[16].addActionListener(new close());
fm.addWindowListener(this);
fm.setBackground(Color.red);
p1.setLayout(new BorderLayout());
p1.add(txt, "North");
p2.setLayout(new GridLayout(4, 4));
p3.setLayout(new BorderLayout());
p3.add(b[16]);
fm.add(p1, "North");
fm.add(p2, "Center");
fm.add(p3, "South");
fm.pack();
fm.setVisible(true);//都是些窗中设置 添加相关组件和监听器
}
public void windowClosing(WindowEvent e) {
System.exit(0);//退出系统
}
class buttonlistener implements ActionListener {
//编写监听器事件 通过按键得出给果
public void actionPerformed(ActionEvent e) {
Button btn = (Button) e.getSource();
if (btn.getLabel() == "=") {
jisuan();
str = String.valueOf(a);
txt.setText(str);
s = "";
} else if (btn.getLabel() == "+") {
jisuan();
txt.setText("");
s = "+";
} else if (btn.getLabel() == "-") {
jisuan();
txt.setText("");
s = "-";
} else if (btn.getLabel() == "/") {
jisuan();
txt.setText("");
s = "/";
} else if (btn.getLabel() == "") {
jisuan();
txt.setText("");
s = "";
} else {
txt.setText(txt.getText() + btn.getLabel());
if (btn.getLabel() == "归零")
txt.setText("");
}
}
public void jisuan() {//编写具体计算方法
if (s == "+")
a += Double.parseDouble(txt.getText());
else if (s == "-")
a -= Double.parseDouble(txt.getText());
else if (s == "")
a = Double.parseDouble(txt.getText());
else if (s == "/")
a /= Double.parseDouble(txt.getText());
else
a = Double.parseDouble(txt.getText());
}
}
}
class close implements ActionListener {//退出
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
关于内容: 1、一般概括性内容:课题标题、答辩人、课题执行时间、课题指导教师、课题的归属、致谢等; 2、课题研究内容:研究目的、方案设计(流程图)、运行过程、研究结果、创新性、应用价值、有关课题延续的新看法等; 3、PPT要图文并茂,突出重点,让答辩老师明白哪些是自己独立完成的,页数不要太多,30页左右足够,不要出现太多文字,老师对文字和公式都不怎么感兴趣; 4、凡是贴在PPT上的图和公式,要能够自圆其说,没有把握的坚决不要往上面贴; 5、每页下面记得标页码,这样比较方便评委老师提问的时候review。 关于模板: 1、不要用太华丽的企业商务模板,学术ppt最好低调、简洁一些; 2、推荐底色白底(黑字、红字和蓝字)、蓝底(白字或黄字)、黑底(白字和黄字),这三种配色可保证幻灯质量,个人觉得学术ppt还是白底好; 3、动手能力强的大牛可以自己做符合课题主题的模板,其实很简单,就是把喜欢的图在“幻灯片母版”模式下插入就行了。 关于文字: 1、首先就是:不要太多!图优于表,表优于文字,答辩的时候照着ppt念的人最逊了; 2、字体大小最好选ppt默认的,标题用44号或40号,正文用32号,一般不要小于20号。标题推荐黑体,正文推荐宋体,如果一定要用少见字体,记得答辩的时候一起copy到答辩电脑上,不然会显示不出来; 3、正文内的文字排列,一般一行字数在20~25个左右,不要超过6~7行。更不要超过10行。行与行之间、段与段之间要有一定的间距,标题之间的距离(段间距)要大于行间距。 关于图片: 1、图片在ppt里的位置最好统一,整个ppt里的版式安排不要超过3种。图片最好统一格式,一方面很精制,另一方面也显示出做学问的严谨态度。图片的外周,有时候加上阴影或外框,会有意想不到的效果; 2、关于格式,tif格式主要用于印刷,它的高质量在ppt上体现不出来,照片选用jpg就可以了,示意图我推荐bmp格式,直接在windows画笔里按照需要的大小画,不要缩放,出来的都是矢量效果,比较pro,相关的箭头元素可以直接从word里copy过来; 3、流程图,用viso画就可以了,这个地球人都知道; 4、ppt里出现图片的动画最好简洁到2种以下,还是那句话,低调朴素为主; 5、动手能力允许的话,学习一下photoshop里的基本操作,一些照片类的图片,在ps里做一下曲线和对比度的基本调整,质量会好很多。windos画笔+ps,基本可以搞定一切学术图片。 关于提问环节: 评委老师一般提问主要从以下几个方面: 1、他本人的研究方向及其擅长的领域; 2、可能来自课题的问题:是确实切合本研究涉及到的学术问题(包括选题意义、重要观点及概念、课题新意、课题细节、课题薄弱环节、建议可行性以及对自己所做工作的提问); 3、来自论文的问题:论文书写的规范性,数据来源,对论文提到的重要参考文献以及有争议的某些观察标准等; 4、来自幻灯的问题:某些图片或图表,要求进一步解释; 5、不大容易估计到的问题:和课题完全不相干的问题。似乎相干,但是答辩者根本未做过,也不是课题涉及的问题。答辩者没有做的,但是评委想到了的东西,答辩者进一步打算怎么做。 建议 一、要对论文的内容进行概括性的整合,将论文分为引言和试验设计的目的意义、材料和方法、结果、讨论、结论、致谢几部分。 二、在每部分内容的presentation中,原则是:图的效果好于表的效果,表的效果好于文字叙述的效果。最忌满屏幕都是长篇大论,让评委心烦。能引用图表的地方尽量引用图表,的确需要文字的地方,要将文字内容高度概括,简洁明了化,用编号标明。 三、1、文字版面的基本要求 幻灯片的数目: 学士答辩10min10~20张 硕士答辩20min20~35张 博士答辩30min30~50张 2、字号字数行数: 标题44号(40) 正文32号(不小于24号字) 每行字数在20~25个 每张PPT6~7行(忌满字) 中文用宋体(可以加粗),英文用TimeNewRomans 对于PPT中的副标题要加粗 3、PPT中的字体颜色不要超过3种(字体颜色要与背景颜色反差大) 建议新手配色: (1)白底,黑、红、篮字 (2)蓝底,白、黄字(浅黄或橘黄也可) 4、添加图片格式: 好的质量图片TIF格式,GIF图片格式最小 图片外周加阴影或外框效果比较好 PPT总体效果:图片比表格好,表格比文字好;动的比静的好,无声比有声好。 四、(注意) 幻灯片的内容和基调。背景适合用深色调的,例如深蓝色,字体用白色或黄色的黑体字,显得很庄重。值得强调的是,无论用哪种颜色,一定要使字体和背景显成明显反差。注意:要点!用一个流畅的逻辑打动评委。字要大:在昏暗房间里小字会看不清,最终结果是没人听你的介绍。不要用PPT自带模板:自带模板那些评委们都见过,且与论文内容无关,要自己做,简单没关系,纯色没关系,但是要自己做!时间不要太长:20分钟的汇报,30页内容足够,主要是你讲,PPT是辅助性的。记得最后感谢母校,系和老师,弄得煽情点。