JAVA课程设计.docx
- 文档编号:25859435
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:20
- 大小:176.25KB
JAVA课程设计.docx
《JAVA课程设计.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
JAVA课程设计
XX大学XX学院
课程设计
课程名称
JAVA程序设计
姓名
学号
专业
年级
班级
系别
分数
任课教师签字
批改日期
备注
摘要
Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。
该设计报告着重阐述了基于Java的乘车信息管理系统的结构以及实现,详细介绍了文件输入输出流在管理信息系统中存储文件的方式与实现。
关键词:
文件输入输出流界面设计GUI异常处理
目录
摘要1
目录2
一、软件概述3
二、设计问题4
2.1设计题目4
2.2设计技术4
2.2技术简介4
三、总体设计思路6
3.1程序功能模块设计的实现6
3.2系统总体结构6
3.3乘客信息面板功能的实现7
3.4乘客界面功能模块设计的实现7
四、设计的实现8
4.1定义程序变量10
4.2程序面板设计11
4.3录入乘客信息15
4.4查询乘客信息16
4.5修改乘客信息16
4.6删除乘客信息16
4.7显示乘客信息17
五、设计总结17
六、参考文献19
一、软件概述
随着现代社会的快速发展,我们已进入信息化时代,管理系统在人们的生活中的应用越来越广泛,随着时代的发展,社会的进步,乘客乘车管理已成为不容忽视的问题,若采用传统的方式进行管理,易出错而且是一件很麻烦的事。
随着计算机的诞生,在此领域产生众多的信息管理系统来管理信息,不仅信息处理方便,而且简单强大。
本系统正事其中的一项,乘车信息管理,极大减少了人事管理的工作量。
本系统中涉及图形用户界面设计,通过审计本系统不仅巩固了我们的基础,以及程序设计能力,在现代化的乘务行业中,乘车信息管理系统有着十分重要的作用!
科学技术一直在不断的提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
使用编程语言做的管理信息系统在人们的日常生活中也就显得尤为重要,管理信息系统提供了与用户进行通信联络的有效手段,利用计算机编程技术制作管理信息系统,完成对数据的处理与查询,有关系统管理修改的人员可以随时修改存储的信息,更新信息,从而方便了乘客。
乘客也可以通过管理信息系统的客户端准确的查询到自己所需要的信息。
与此同时伴随着社会的进一步发展,人们的流动范围会更广泛,流动会更加频繁,为了更好的管理乘客的信息,乘车管理信息系统会愈加的重要与不容忽视,乘车管理信息系统的发展也会更加迅速。
本次课程设计的主要任务是设计一个乘客乘车管理系统并完成一些基本操作。
其目的是:
(1)通过对乘客全面的信息采集和处理,提高乘客乘车信息管理的运作效率。
(2)由计算机来代替人工执行一系列诸如增加新乘客、删除、修改、查询、显示等操作。
这样就使管理人员轻松快捷的完成乘客信息的管理工作。
(3)实现图形界面的呈现。
二、设计问题
2.1设计题目:
基于JAVA的乘车信息管理系统
要求完成:
(1)完成乘客信息的添加、删除、查询、修改功能
(2)使用界面操作
(3)使用文件完成
2.2设计技术:
JAVA
2.3技术简介:
JAVA是一种简单的,面向对象的,分布式的,解释型的,强壮的,安全的,体系结构中立的,可移植的,高性能的,多线程的,动态的语言。
Java与C++语言相比,去掉了C++语言的复杂性和二义性的成分,增加了安全性和可移植性的成分,C和C++采用单线程体系结构,而Java却提供了多线程支持。
Java语言简单既易学有好用。
不要将简单误解为这门语言很干瘪。
Java中许多基本语句的语法和C++一样,像常用的循环语句,控制语句等和C++几乎一样,但不要误解为Java是C++的增强版,Java和C++是两种完全不同的语言,他们各有各的优势,将会长期并存下去,Java语言和C++语言已成为软件开发者应当掌握的语言。
如果从语言的简单性方面看,Java要比C++简单,C++中许多容易混淆的概念,或者被Java弃之不用了,或者以一种更清楚更容易理解的方式实现,例如,Java不再有指针的概念。
面向对象基于对象的编程更符合人的思维模式,使人们更容易编写程序。
在实际生活中,我们每时每刻都与对象在打交道。
我们用的钢笔,骑的自行车,乘的公共汽车等。
而我们经常见到的卡车,公共汽车,轿车等都会涉及以下几个重要的物理量可乘载的人数,运行速度,发动机的功率,耗油量,自重,轮子数目等。
另外,还有几个重要的功能加速功能,减速功能,刹车,转弯功能等。
我们也可以把这些功能称作是他们具有的方法,而物理量是它们的状态描述。
仅仅用物理量或功能不能很好的描述它们。
在现实生活中,我们用这些共有的属性和功能给出一个概念机动车类。
一个具体的轿车就是机动车类的一个实例对象.Java语言与其它面向对象语言一样,引入了类的概念,类是用来创建对象的模板,它包含被创建的对象的状态描述和方法的定义。
JAVA与平台无关,与平台无关是Java语言最大的优势。
其它语言编写的程序面临的一个主要问题是操作系统的变化,处理器升级以及核心系统资源的变化,都可能导致程序出现错误或无法运行。
Java的虚拟机成功地解决了这个问题,Java编写的程序可以在任何安装了Java虚拟机JVM的计算机上正确的运行,Sun公司实现了自己的目标“一次写成,处处运行”。
C,C++等语言,都是只能对特定的CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CUP有关。
例如,在C语言中,我们都碰到过类似下面的问题int型变量的值是10,那么下面代码的输出结果是什么呢printf(“%d,%d”,x,x=x+1)如果上述语句的计算顺序是从左到右,结果是10,11但是,有些机器会从右到左计算,那么结果就是11,11.Java不像C++,它不针对特定的CPU芯片进行编译,而是把程序编译为称做字节码的一个“中间代码”。
字节码是很接近机器码的文件,可以在提供了Java虚拟机JVM的任何系统上被解释执行。
Java被设计成为解释执行的程序,即翻译一句,执行一句,不产生整个的机器代码程序。
翻译过程如果不出现错误,就一直进行到完毕,否则将在错误处停止执行。
同一个程序,如果是解释执行的,那么它的运行速度通常比编译为可执行的机器代码的运行速度慢一些。
但是,对Java来说,二者的差别不太大,Java的字节码经过仔细设计,很容易便能使用JIT即时编译方式编译技术将字节码直接转化成高性能的本地机器码,Sun公司在Java2发行版中提供了这样一个字节码编译器——JIT(JustInTime),它是Java虚拟机的一部分。
Java运行系统在提供JIT的同时仍具有平台独立性,因而“高效且跨平台”对Java来说不再矛盾。
如果把Java的程序比做“汉语”的话,字节码就相当于“世界语”,世界语不和具体的“国家”关,只要这个“国家”提供了“翻译”,就可以再快速地把世界语翻译成本地语言。
Java的特点之一就是内置对多线程的支持。
多线程允许同时完成多个任务。
实际上多线程使人产生多个任务在同时执行的错觉,因为,目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器速度非常快,远远超过了人接收信息的速度,所以给人的感觉好象多个任务在同时执行。
C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。
Java很安全,当你准备从网络上下载一个程序时,你最大的担心是程序中含有恶意的代码,比如试图读取或删除本地机上的一些重要文件,甚至该程序是一个病毒程序等。
当你使用支持Java的浏览器时,你可以放心地运行Java的小应用程序JavaApplet,不必担心病毒的感染和恶意的企图,Java小应用程序将限制在Java运行环境中,不允许它访问计算机的其它部分。
JAVA具有动态性,Java程序的基本组成单元就是类,有些类是自己编写的,有一些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分布环境中动态地维护程序及类库,而不像C++那样,每当其类库升级之后,相应的程序都必须重新修改,编译。
2.4设计思路:
首先设计面板,然后往面板里添加组件,点击各个组件来实现要求的对乘客乘车有关信息的添加、删除、查询、修改功能。
三、总体设计思路
3.1程序功能模块设计的实现
主要的类有Frame2和ActionEvent,设置了监听接口由ActionEvent类来实现,并且用if语句来为变量服务。
后面设置了一个异常处理,使用try和catch来捕获异常。
使用GUI技术实现乘客的图形界面。
3.2系统总体结构
3.3系统进入界面
构造面板,采用流式布局,将按钮加入到容器中,实现进入系统和退出功能。
3.4乘客信息面板功能的实现
首先构造面板(Jpanel).
进入乘客信息管理主界面
3.4乘客界面功能模块设计的实现
录入:
提示乘客信息是否被保存,选择确定,则乘客信息录入到文件中
查看保存的乘客信息(在乘客信息.txt中查看)
增加:
输入身份证号后增加新的乘客信息
在乘客信息.txt中查看增加的信息
查找:
若文本文件中存在所要查找的乘客信息(例如身份证号666),则在主界面中显示该乘客信息(身份证号、姓名)
删除:
在主界面中输入身份证号,点击删除按钮,弹出对话框,选择确定程序将删除乘客的所有信息。
退出:
退出系统
四、设计的实现
4.1定义程序变量
进入界面程序设计:
利用流式布局,添加进入乘客管理系统和退出按钮,并添加监听,使它们分别实现各自功能。
publicclassmkextendsJFrameimplementsActionListener{
JButtonbutton1,button2;
Frame2frame;
publicmk(){
super("欢迎使用");
button1=newJButton("进入乘客管理系统");
button1.addActionListener(this);//增加监听点击按钮后进入第二个界面
this.setSize(500,500);
this.add(button1);
button1.setBackground(Color.CYAN);
this.setLayout(newFlowLayout());
this.setVisible(true);
button2=newJButton("退出");
button2.addActionListener(this);//为退出加监听点击直接可退出页面
this.add(button2);
button2.setBackground(Color.CYAN);
this.setSize(500,500);
this.getContentPane().setBackground(Color.pink);
button2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
System.exit(0);
}
});
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==button1){
frame=newFrame2();
}
}
publicstaticvoidmain(String[]args){
newmk();
}
}
4.2程序面板设计
定义Frame2类继承JFrame,使用JLabel、JTextField、JButton、ButtonGroup、JPanel等类构造各组件,使用。
使用addActionListener()方法对JButton进行注册监听。
GridLayout布局管理器对面板进行设计如下所示。
classFrame2extendsJFrameimplementsActionListener{
JButtonbutton3,button4,button5,button6,button7,button8;
JLabelLable1,Lable2,Lable3,Lable4;
JPanelpanel,panel2,panel3,panel4;
ButtonGroupgroup=null;
JTextFieldnumber,name,sex;
publicFrame2(){
super("乘客信息管理系统");
this.setSize(500,500);
Containerxx=this.getContentPane();
xx.setBackground(Color.orange);
xx.setLayout(newGridLayout(4,1));
Lable1=newJLabel("身份证号");
Lable2=newJLabel("姓名");
Lable3=newJLabel("性别");
number=newJTextField(10);
name=newJTextField(10);
sex=newJTextField(10);
panel=newJPanel();
panel2=newJPanel();
panel3=newJPanel();
panel4=newJPanel();
group=newButtonGroup();
button3=newJButton("录入");
button3.addActionListener(this);
button4=newJButton("查询");
button4.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
Stringwarning="必须输入身份证号!
";
JOptionPane.showMessageDialog(null,warning,
"警告",JOptionPane.WARNING_MESSAGE);
}
});
add(button4);
button5=newJButton("删除");
button5.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
Stringwarning="确定删除";
JOptionPane.showMessageDialog(null,warning,
"警告",JOptionPane.WARNING_MESSAGE);
}
});
add(button5);
button6=newJButton("修改");
button6.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
Stringwarning="必须输入身份证号!
";
JOptionPane.showMessageDialog(null,warning,
"警告",JOptionPane.WARNING_MESSAGE);
}
});
add(button6);
button7=newJButton("增加");
button7.addActionListener(this);
button8=newJButton("退出");
button8.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
System.exit(0);
}
});
panel.add(Lable1);
panel.add(number);
panel.setBackground(Color.orange);//添加背景色
xx.add(panel);
panel2.add(Lable2);
panel2.add(name);
panel2.setBackground(Color.orange);
xx.add(panel2);
panel3.add(Lable3);
panel3.add(sex);
panel3.setBackground(Color.orange);
xx.add(panel3);
panel4.add(button3);
panel4.add(button4);
panel4.add(button5);
panel4.add(button6);
panel4.add(button7);
panel4.add(button8);
panel4.setBackground(Color.orange);
xx.add(panel4);
this.setVisible(true);
setVisible(true);
}
4.3录入乘客信息
以乘客的身份证号作为关键字,利用文件输入输出流进行录入并查看录入信息:
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"文件已保存!
");
try{
FileWriterfo=newFileWriter("乘客信息.txt",true);//将信息录入到乘客信息.txt文件中
fo.write(this.number.getText());
fo.write(",");
number.setText(null);
fo.write(this.name.getText());
fo.write(",");
name.setText(null);
fo.write(this.sex.getText());
fo.write(",");
sex.setText(null);
fo.close();
}
catch(Exceptione1)
{System.out.println(e1.toString());}
}
publicStringreadFromFile()
{
char[]x1=newchar[100];
try{
FileReaderfin=newFileReader("乘客信息.txt");
fin.read(x1);
fin.close();
}
catch(Exceptione1)
{
System.out.println(e1.toString());
}
finally
{
System.out.println(x1.toString());
returnx1.toString();
}
}
}
4.4查询员工信息
实现ActionListener接口,对事件监听。
在该类中以乘客的身份证号作为关键字,调用read()方法读取文本文件中的数据。
使用对关键字进行检测,如果程序获取到身份证号文本框中的内容为空,则提示用户输入身份证号。
4.5修改乘客信息
和添加乘客信息方法类似,定义局部变量,并使用getText()方法初始化变量。
调用isSelected()方法设置单选按钮。
创建Frame2类型的“乘客”局部变量,把数据信息写入文件中。
使用try{}catch来捕获异常,并进行处理。
4.6删除乘客信息
实现ActionListener接口,在该类中也是以乘客信息中的身份证号作为关键字,对关键字进行检测,如果文本框中的身份证号和文本文件中的数据相同,程序调用remove()方法把该项乘客的信息删除,如果程序获取到身份证号文本框中的内容为空,则提示用户输入身份证号。
4.7显示乘客信息
在录入,删除等功能操作完成后要对结果进行查看,则返回到程序包里的乘客信息.txt文件中进行查看。
try{
FileWriterfo=newFileWriter("乘客信息.txt",true);//将信息以文件流的形式输入到记事本中
fo.write(this.number.getText());
fo.write(",");
fo.write(this.name.getText());
fo.write(",");
fo.write(this.sex.getText());
fo.write(",");
fo.close();
}
catch(Exceptione1)
{System.out.println(e1.toString());}
}
五、设计总结
通过课程设计的亲身实践,我收获颇丰,一开始的懵懵懂懂现在也可以理解编译简单的程序。
Java语法很多都是自己不知道的,对于它们除了要熟练掌握同时还要很好的理解,java的GUI和接口还有监听接口对我来说都是难点,究其原因是平时应该下的功夫太少,没有好好温习老师传授的知识。
虽然自己做设计时参考了别的程序,但当看到通过自己修改的程序写在屏幕上运行是心中很高兴,这不是Java课程设计的结束而是Java学习新的开始,今后学习中要多多实践,只有实践的多,写代码才能熟练。
学习Java是学习它的方法规则。
在Java中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等,这些都是语法基础。
比如变量,首先要了解变量的定义方式,其意义是什么;其次就是要怎么去运用它。
如果把它们都了解很好了,那么用起来就很得心应手。
再比如说if语句和switch语句,这两种条件语句都是用来执行判断功能的,那什么情况下if什么情况下用switch(若条件分支是多个而且条件的值是一个确定的值时就可以选用switch。
反之,在大多数情况下就用if),如果很好地了解它们的结构和作用的话那么就能灵活运用。
掌握了语言法规则,也不一定就能编出程序来,学习编程就是要学习一种思维方法。
首先要确定一种算法,我认为这些算法都是一种思维方法。
画流程图就是在构建编写程序思路的过程,当画好一个流程图时编程思想也就出来了,程序也差不多了,再结合掌握的语言的方法规则,在计算机里实现就可以了。
任何程序只要有思维,有想法,那么实现程序时就不会觉得无从下手。
而要学习这种思维方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)