西安工业大学
操作系统课程设计报告
课 目:¬¬¬¬ 银行家算法
学 院: 计算机科学与工程学院
指导教师: 姜虹
学 生: 王丽娇
班 级: 网络工程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);
}
}
计算机网络技术毕业论文的查重率是根据论文中文本与已有文献、网络资源的重复程度来衡量的。通常使用专业的查重软件来进行检测,查重率的标准通常在10%以内,超出则可能被认定为抄袭或过度引用。
合理的查重率能够展现毕业论文的原创性和独立思考程度,也能提高论文的可信度和学术价值。因此,在撰写毕业论文时,务必注重学术诚信,切实保证论文的独立性和原创性。
首先,研究生是有分类的。研究生分为博士研究生和硕士研究生。
从总体上来看,硕士研究生发论文比博士研究生发论文更难。但是博士研究生的论文要求则普遍高于硕士研究生,所以,博士研究生更难毕业。那么,对于研究生来说,发论文到底有多难?本人根据个人经验,总结如下:
1.硕士研究生发论文有多难?
对于硕士生来说,普遍没有经过系统的训练,也不会接受高强度的训练。因而,多数人对写论文的认知其实很少。且多数学校对于硕士生的论文要求其实并不高,可能只需要发表一篇普通期刊。对于硕士研究生来说,真正的难度其实是毕业论文。大多数硕士论文都需要达到2-3W字。最主要的难度其实就是字数了。对于硕士生来说,整个硕士阶段可能也就写了一两篇小论文。而要想写出三万字,其难度可想而知。特别是翟天临事件出来以后,对硕士生毕业论文的要求也越来越高。所以,硕士生写毕业论文其实是很难的。
2.博士研究生发论文有多难?
与硕士研究生不同的是,博士研究生难写的是小论文,毕业论文反倒没有那么难了。因为对于博士研究生来说,毕业是有要求的。对于人文社科类的博士生,其毕业要求大致上需要在三年内发表三篇CSSCI期刊;对于理工类的博士生,其毕业要求大致上需要在三年内发表三篇SCI期刊。该类别的期刊,对于普通的高校教师来说都很难发表,又何况是学生呢?所以我们会发现,目前在读的博士生中,能够在正常年限内毕业的并不多,大概只占到所有博士生的25%,多数博士生都是需要延期毕业的。而他们无法正常毕业的主要原因,也大致上都是因为小论文没有按时发表出来。由此可见,博士生发表论文的难度是很大的。
以上。
计算机毕业论文是计算机专业毕业生培养方案中的必修环节。学生通过计算机毕业论文的写作,培养综合运用计算机专业知识去分析并解决实际问题的能力,学有所用,不仅实践操作、动笔能力得到很好的锻炼,还极大地增强了今后走向社会拼搏、奋斗的勇气和自信。
计算机毕业论文的研究方向,通常有以下四类:
一.设计并完成一个模块
完成一个不太大的实际项目或在某一个较大的项目中设计并完成一个模块(如应用软件、工具软件或自行设计的板卡、接口等等),然后以工程项目总结或科研报告、或已发表的论文的综合扩展等形式完成论文。 这类项目的写作提纲是:
1)引言(应该写本论文研究的意义、相关研究背景和本论文的目标等内容。);
2)×××系统的设计(应该写该系统设计的主要结论,如系统的总体设计结论(包括模块结构和接口设计)、数据库/数据结构设计结论和主要算法(思想)是什么等内容。);
3)×××系统的实现(主要写为了完成该系统的设计,要解决的关键问题都有什么,以及如何解决,必要时应该给出实验结果及其分析结论等。);
4)结束语(应该总结全文工作,并说明进一步研究的目标和方向等)。
二.进行系统分析
对一个即将进行开发的项目的一部份进行系统分析(需求分析,平台选型,分块,设计部分模块的细化)。这类论文的重点是收集整理应用项目的背景分析,需求分析,平台选型,总体设计(分块),设计部分模块的细化,使用的开发工具的内容。论文结构一般安排如下:
1)引言(重点描述应用项目背景,项目开发特色,工作难度等) ;
2)项目分析设计(重点描述项目的整体框架,功能说明,开发工具简介等);
3)项目实现(重点描述数据库设计结果,代码开发原理和过程,实现中遇到和解决的主要问题,项目今后的维护和改进等,此部分可安排两到三节);
4)结束语。
三.对先进技术或成熟软件进行分析、比较
对某一项计算机领域的先进技术或成熟软件进行分析、比较,进而能提出自己的评价和有针对性创见。这类论文的写作重点是收集整理有关的最新论文或软件,分析比较心得,实验数据等内容。论文结构一般安排如下:
1)引言(重点描述分析对象的特点,分析比较工作的意义,主要结果等) ;
2)分析对象的概括性描述;
3)分析比较的主要结果(如果是技术分析,给出主要数据,如果是软件分析,给出代码分析结果,实验过程等) ;
4)分析比较的评价和系统应用(可以给出基于分析比较的结果,提出!!!!