资源描述
课 程 设 计
设计名称:车辆管理系统
学 校:宁夏大学新华学院
系 别:信息与计算机科学系
专 业:网络工程
年 级:2011级
姓 名:马丽
学 号:12011247422
指导老师:马子睿
车 辆 管 理 系 统
目 录
摘要…………………………………………………………4
关键词………………………………………………………4
第一章 概述………………………………………………5
1.1 信息管理系统简介…………………………………5
1.2 开发的背景…………………………………………5
第二章 JAVA语言……………………………………………6
2.1 JAVA语言的特点……………………………………6
2.2 C,JAVA.C++的比较…………………………………8
第三章 总体设计…………………………………………11
3.1 设计目的……………………………………………11
3.2 设计任务、要求与思路……………………………12
3.3 概要设计……………………………………………12
第四章 系统功能实现……………………………………12
4.1 进入开始界面………………………………………13
4.2 进入录入界面………………………………………16
4.3 进入修改界面………………………………………21
4.4 进入查询界面………………………………………22
4.5 进入删除界面………………………………………25
第五章 总结………………………………………………26
摘 要
随着经济的日益增长,信息化时代已经到来,生活中各种信息趋向数字化、清晰化。车辆管理系统就是在这样的一个环境中诞生的,交通的日益发达,使得一个单位不再是简单的一辆商务车,而是有很多辆车组成,而且车型也不再单一,这使得单位车辆信息复杂化。因此我们将发挥计算机的庞大的存储空间,高性能的处理能力,高度可靠的数据安全,清晰的可视化数据等这些优势来辅助单位对车辆进行管理,实现了计算机资源的合理利用,真正实现了减少劳动力提高劳动质量的目的。本文主要分析了系统的主要组成情况,包括需求分析,系统实施和系统主要特点等,重点介绍了系统功能模块的详细思路和实现方法,以及对系统技术和系统的源代码。
关键词:车辆管理,JAVA;
第一章 概 述
随着信息技术广泛、深入地应用人类社会的各个领域并发挥着越来越重要的作用。计算机软件技术应用于信息管理是发展的必然。作为计算机应用的一部分,充分发挥计算机的优势,将大量复杂的数据交给计算机来处理,有着手工管理所无法比拟的优点。如:查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高信息管理的效率,是真正意义上的合理利用资源,也是企事业管理科学化、正规化,与世界接轨的重要条件。
1.1 信息管理系统简介
管理信息系统,即我们常说的MS(Management Information System),在强调管理,强调信息的现代化社会中变得越来越普及。MIS是一门新学科,它跨越了若干领域,比如管理科学、系统科学、运筹学、统计学和计算机科学等。在这些学科的基础上,形成信息收集和加工方法,从而形成了一个复杂的有条理的系统。目前,由于开发高质量管理信息系统MIS的能力大大落后计算机硬件日新月异的进展,加上社会对管理信息系统MIS发展和完善需求的增加以及对管理信息系统MIS开发过程中出现的错误认识和行为而导致MIS开发的失败,这些情况已严重妨碍了计算机技术的进步。因此对MIS有关的内容进行深入研究,提高工作效率,提高管理信息系统MIS开发成功率已变得十分重要。
1.2 开发的背景
信息时代的到来意味着工作功率的日渐提高,同时也给车辆管理部门带来更大的压力,管理部门必须及时准确地提供各种参考材料,若无法作到这一点,将成为企业发展、机构运转的瓶颈。基于这一原因,车辆管理工作无一例外受到领导的高度重视。随着车辆资料价值的日渐提升,社会对车辆管理部门也提出了更高的要求,对车辆早已不限于“用好”,更多地要求“管好”,车辆资料管理已向前延伸到公文的管理,向后扩展到信息资源的整理、采编、发放。就在车辆管理部门职能不断扩大、业务不断扩充的同时,机构改革、企业改制等等政策又要求车辆部门精兵简政,缩减日常经费开支,充分利用现有资源产生更多经济效益。“向管理要效案例益”已成为车辆部门的运营之本,车辆部门必须提高其自身的管理水平。“提升车辆管理档次,将车辆交给计算机管理”正在成为一种潮流。
同时,计算机管理突出优势也在影响车辆管理的机制。以手工检索为目的的著录卡片、目录等,不仅在编制阶段大量占用车辆员的工作时间,检索利用也非常繁琐,缺少经验的车辆员甚至无法在别人编制的目录中查找车辆,更加难以保证“查全率”,使用计算机检索,将彻底解决这一问题。另外,为了保护车辆资料,造成保管费用高涨,复印机使车辆复制更加简单,却造成纸张消耗量的剧增,同时,大量复制文件的出现又给车辆管理带来新的安全问题,更与车辆管理的严肃性相抵触,使用计算机查询,将纸载车辆管理与电子车辆利用结合起来,可以完美解决这一难题,大幅度降低车辆管理费用。本系统主要服务于机动管理人员的日常工作,利用本系统可以方便的监控本区域的车主信息,为此基础上力求软件界面人性化及操作简单,程序具有健壮性。
第二章 JAVA语言
2.1 Java语言的特点
(1)简单性
Java 继承了C/C++的语法,丢弃了其中不常用又容易引起混淆的功能,特别是非面向对象的内容,取消了C语言的结构、指针、#DEFINE语句、多重继承、全局变量和函数、GOTO语句、操作符重载和自动类型转换等等。
(2)面向对象
Java是一种纯面向对象的语言,具有封装、继承和多态的特性,无全局变量或函数,可以被用于面向对象这种现代软件工程。
(3)分布式
Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象,象本地一样。
(4)解释型
Java写成的源代码需要被编译成高阶段的字节码,其与机器架构无关。然后,这种字节码在任何Java的运行环境中由Java虚拟机解释执行,保证了Java与平台无关性和可移植性。解释执行与及时编译技术的完美结合,提供了相当高的运算性能。
(5)多态的支持
Java是一种非常注重对象形态转换的语言,所以在编译时期就会做形态转换检查,在执行时期,Java也会做一些形态上的检查。
(6)垃圾收集和异常处理
由于Java垃圾收集器会做自动的垃圾收集,这里的垃圾指一些不会被使用的对象,所以程序设计者不需费心,内存会被自动地管理,Java本身提供了许多面向对象的异常处理,所以程序在执行时期所发生的错误,都可以由程序自己来处理。
(7)安全性
Java设计时对系统的安全,特别是网络安全做了周密的考虑。通过字节码验证、内存调用方式、资源使用权限等进行多层次的安全管理。Java被认为是在任何系统上最安全的应用程序之一。
2.2 c、 java 、c++的比较
现在最有前途的一般认为是java和c#如下面所述:
C#诞生之日起,关于C#与Java之间的论战便此起彼伏,至今不辍。抛却Microsoft与Sun之间的恩怨与口角,客观地从技术上讲,C#与Java都是对传统面向对象程序设计在组件化软件时代的革新之果,可谓殊途同归。虽说两个语言有着"90%的重叠",但那另外"10%的较量"也往往能够左右一个天平的方向。本文将携90%之共,论10%之异,对两个语言做纯技术品评。文章不涉及两个语言的公司,市场等台面后的事情--虽然这往往也会影响人们对编程语言的选择。也不预备得出谁是谁的Killer,读者应该选择谁的问题。"语言选择乃艺术而非技术问题",业界早有定论,无需多言。 C#和Java都提出了对传统C++艰深,晦涩的语法语义的现代改良。在语法方面,两者都摈弃了C++中函数及其参数的const修饰,宏代换,全局变量和全局函数等许多华而不实的地方。在继承方面,两者都采用了更易于理解和建构的单根继承和多接口实现的方案。在源代码组织方面,都提出了声明与实现于一体的更好的逻辑封装。在类型系统方面,两个语言都在中间语言IL或字节代码的基础上提出了映射(Reflection)这样的概念,彻底革新了传统C++运行时类型鉴别的问题。但在大刀阔斧地对C++进行改革的同时,C#显得更为保守,它对很多原来C++中很好的性质予以了保留,如基于栈分配的轻量级的结构类型,枚举类型,引用(ref),输出(out),数组(params)修饰的参数传递方式等,这些在Java中都被很可惜地丢掉了。在基本类型和单根继承的对象之间的类型统一方面C#提出的box/unbox要比Java的包装类显得高明,效率也要好。
对C++不安全的指针及内存分配方式,C#和Java都提出了托管执行环境。效率问题是托管执行环境一直以来令人诟病的地方,Java虚拟机(JVM)的解释执行方式曾经让很多开发者"慢的不可忍受"。C#的JIT编译方式为C#在这块战场上赢得赞声一片,某些C#托管代码甚至比传统C++代码都快。虽然现在各厂商实现的Java平台也都一致地采取了JIT编译方式,但C#在这方面的比较优势非常明显--C#的目标编译语言IL从设计初始就把效率摆在了重要的地位,而Java的字节代码的设计却有些鲁莽。托管执行环境经过几年的实践,在现代软件界已经达成了共识,效率的牺牲换来的是高度安全的代码--当然前提是牺牲的效率必须足够的小,至少可以忍受。值得指出的是在这里C#同样"念念不忘老一辈C++程序员",C#允许我们在unsafe上下文中进行指针操作。数组的索引越界检查,类型安全在C#和Java中都被提到了相当的高度。在异常处理方面,不管从内置支持,还是从执行效率来讲,C#都较Java略胜一筹。"一次编程,多处执行"是程序设计一直以来的一个诉求,尤其是在现代互联网络时代。在跨平台方面,Java的支持和实现都是为人称道的,虽然JVM的速度仍然让人备感头疼。而C#虽然在底层构造方面对移植性进行了充分的考虑,但至少目前还没有成熟的,经过检验的产品。C#在跨平台方面似乎更热衷于XML Web Services互操作,而不是跨平台编程。但C#通过其基础语言构造(CLI)对二十多种主流语言的对象级的互操作支持,又极大地提升了C#的技术地位。和COM组件廉价地互操作也为C#挣到不少分数--保持一个兼容的体系对现代软件工业非常重要,也是对广大开发人员负责任的表现。
面向组件无疑是当代软件开发的主流。C#对组件编程甚至到了"迷恋"的地步,这与6年前就出道的Java不可同日而语--当然这是时代问题。C#通过属性,索引器,委派,事件,操作符重载,特征,版本等实现了其对组件编程的第一手的支持。虽然这些在Java中都可以通过方法,接口或者适配器来间接地实现,但软件业的历史告诉我们这无论对编程效率或者逻辑设计都是一种极大的损伤--高级语言首先面对的是人,而不是机器。除去这些语言层面的组件支持机制,.NET平台也为组件的配置,运行,管理等提供了一揽子解决方案,而为组件开发量身定做的Visual Studio.NET更是令人兴奋,这都为C#的组件编程开辟了广阔的天地。在其他技术方面Java的微弱劣势尚且可以忽略不计,但在组件编程方面Java相较于C#却有着不可治愈的硬伤。尤其对于从C++和Visual Basic背景过来的开发人员,C#在这方面有着不可抵挡的魅力和诱惑。 鉴于XML Web Services在下一代企业分布式计算中的地位,我们有必要在这方面对两个语言有一个简单的交代。在XML Web Services的操作方面,.NET平台直接在IL中间语言中的内置XML支持使得C#与生俱来地成为下一代Web服务的首选,这是通过API集来支持Web服务的Java所不能比的。在C#中,XML,SOAP,UDDI,WSDL等底层协议被构建成了面向开发人员的组件,而Java中这些仍然是JAX(Java XML API)等底层协议的操作函数。当然这种局面可能仅仅是时间问题,一个强大的高效的Web Services组件模型对Java来说并不是不可逾越的鸿沟。
在语言标准化方面,微软也史无前例地做出了令人赞赏的动作。目前C#及.NET平台基础构造已递交欧洲计算机制造商协会ECMA,经过标准化后的C#将可由任何厂商在任何平台上实现其开发工具及其支持软件,这为C#的发展提供了强大的驱动力。而Java在这方面虽有动作--JCP(Java Community Process),但无疑只能是准标准化。在组件化软件时代拥有一门像C++一样的标准化语言,对软件界尤其是广大开发人员非常重要。当然两个语言的全面的技术品评绝非仅仅上述几点简单的罗列比较,其后端平台(C# for .NET, Java for J2EE),及其编程框架的支持,各语言相关工具的实现,现有的系统基础等等都对程序设计语言的发展产生相当的影响。从纯技术角度来讲,C#无疑较Java更具竞争力。争吵谁抄袭谁也没有意义--技术的发展本来就是一个相互借鉴的过程。纯技术较量也并不能决定这场论战的胜负--如果非要一决雌雄的话。软件界倒乐见竞争,经过市场锤炼的技术才能更好地为我们服务,让我们拭目以待!
第三章 总体设计
3.1设计目的
通过该课程设计,使同学们进一步理解概JAVA的基本概念、理论和方法,初步掌握JDK、Eclipse的调试和应用,以及程序中错误的解决方法,明确JAVA在实际程序设计中的应用。使课堂中学习到理论得到应用,练习文件形式在JAVA程序设计中的应用。
3.2设计任务、要求与思路
(1)设计要求:完成员工信息的添加、删除、查询、修改功能。使用用户界面操作。使用文件形式完成。
(2)设计思路:首先设计界面进入面板,在面板中添加菜单选项,并将要实现的功能选项添加其中,然后对这些选项实施监听,实现其功能。通过文件类型知识的应用,实现对车辆信息的管理。
3.3概要设计
(1)面板设计:首先设计一个容器,然后再容器中添加菜单,在菜单中添加选项,并在容器中加入面板,面板布局设置为CardLayout,最后将面板添加进容器。
(2)功能实现:在录入、查询、修改和删除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice为界面中加入相应的组件,并对其进行监听,同时附加了文件流的处理。
(3)负责车辆管理的主界面(用菜单方式打开下面的四个功能界面)
录入车辆基本信息
修改车辆基本信息
查询与打印车辆基本信息
删除车辆基本信息
第四章 系统功能实现
4.1进入界面
界面很简单,只是定义了各个界面需要的变量。进入到其他界面时需要通过菜单选项,进入相应的录入、修改、查询、删除界面。主要运用到了监听。
源代码如下:
class ManagerWindow extends JFrame implements ActionListener{
InputCar 基本信息录入;
ModifySituation 基本信息修改;
Inquest 基本信息查询与打印;
Delete 基本信息删除;
JMenuBar bar;
JMenu fileMenu;
JMenuItem 录入,修改,查询与打印,删除,欢迎界面;
HashMap<String,Car>基本信息=null;
File file=null;
CardLayout card=null;
JLabel label=null;
JPanel pCenter;
public ManagerWindow(){
录入=new JMenuItem("录入车辆基本信息");
修改=new JMenuItem("修改车辆基本信息");
查询与打印=new JMenuItem("查询与打印车辆基本信息");
删除=new JMenuItem("删除车辆基本信息");
欢迎界面=new JMenuItem("欢迎界面");
bar=new JMenuBar();
fileMenu=new JMenu("菜单选项");
fileMenu.add(录入);
fileMenu.add(修改);
fileMenu.add(查询与打印);
fileMenu.add(删除);
bar.add(fileMenu);
setJMenuBar(bar);
label=new JLabel("车辆管理系统",JLabel.CENTER);
label.setIcon(new ImageIcon("welcome.jpg"));
label.setFont(new Font("隶书",Font.BOLD,40));
label.setHorizontalTextPosition(SwingConstants.CENTER);
label.setForeground(Color.red);
基本信息=new HashMap<String,Car>();
录入.addActionListener(this);
修改.addActionListener(this);
查询与打印.addActionListener(this);
删除.addActionListener(this);
欢迎界面.addActionListener(this);
card=new CardLayout();
pCenter=new JPanel();
pCenter.setLayout(card);
file=new File("基本信息.txt");
if(!file.exists()){
try{FileOutputStream out=new FileOutputStream(file);
ObjectOutputStream objectOut=new ObjectOutputStream(out);
objectOut.writeObject(基本信息);
objectOut.close();
out.close();
}
catch(IOException e){}
}
基本信息录入=new InputCar(file);
基本信息修改=new ModifySituation(file);
基本信息查询与打印=new Inquest(file);
基本信息删除=new Delete(file);
pCenter.add("欢迎界面",label);
pCenter.add("录入界面",基本信息录入);
pCenter.add("修改界面",基本信息修改);
pCenter.add("删除界面",基本信息删除);
add(pCenter,BorderLayout.CENTER);
validate();
setVisible(true);
setBounds(100,50,600,450);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
int n=JOptionPane.showConfirmDialog(null,"确认退出吗?","确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);
if(n==JOptionPane.YES_OPTION)
System.exit(0);
}});
validate();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==录入){
基本信息录入.clearMess();
card.show(pCenter,"录入界面");
}
else if(e.getSource()==修改){
基本信息修改.clearMess();
card.show(pCenter,"修改界面");
}
else if(e.getSource()==查询与打印){
基本信息查询与打印.clearMess();
基本信息查询与打印.setLocation(getBounds().x+getBounds().width,getBounds().y);
基本信息查询与打印.setVisible(true);
}
else if(e.getSource()==删除)
card.show(pCenter,"删除界面");
}
}
public class po {
public static void main(String[] args) {
new ManagerWindow();
}
}
4.2进入录入界面
程序主要完成车辆信息的录入,要求编号唯一。如果添加了重复编号的物品时,则提示用户该车牌号已存在,请到修改页面修改。
源代码:
class InputCar extends JPanel implements ActionListener
{ Car 车主=null;
CarPicture pic;
HashMap<String,Car>基本信息表=null;
JTextField 车牌号,姓名,购车公司,购车时间;
JButton 选择照片;
JComboBox 档次;
JRadioButton 男,女;
ButtonGroup group=null;
JButton 录入,重置;
FileInputStream inOne=null;
ObjectInputStream inTwo=null;
FileOutputStream outOne=null;
ObjectOutputStream outTwo=null;
File systemFile,imagePic;
public InputCar(File file)
{ systemFile=file;
pic=new CarPicture();
车牌号=new JTextField(5);
姓名=new JTextField(5);
档次=new JComboBox();
try{ FileReader inOne = new FileReader("专业.txt");
BufferedReader inTwo = new BufferedReader(inOne);
String s = null;
int i=0;
while((s=inTwo.readLine())!=null)
档次.addItem(s);
inOne.close();
inTwo.close();
}
catch(IOException exp){
档次.addItem("高级");
档次.addItem("中高级");
档次.addItem("中级");
档次.addItem("中低级");
档次.addItem("普通");
}
购车公司=new JTextField(5);
购车时间=new JTextField(5);
选择照片=new JButton("选择");
group=new ButtonGroup();
男=new JRadioButton("男",true);
女=new JRadioButton("女",true);
group.add(男);
group.add(女);
录入=new JButton("录入");
重置=new JButton("重置");
录入.addActionListener(this);
选择照片.addActionListener(this);
重置.addActionListener(this);
Box box1=Box.createHorizontalBox();
box1.add(new JLabel("车牌号:",JLabel.CENTER));
box1.add(车牌号);
Box box2=Box.createHorizontalBox();
box2.add(new JLabel("车主姓名:",JLabel.CENTER));
box2.add(姓名);
Box box3=Box.createHorizontalBox();
box3.add(new JLabel("车主性别:",JLabel.CENTER));
box3.add(男);
box3.add(女);
Box box4=Box.createHorizontalBox();
box4.add(new JLabel("车辆档次:",JLabel.CENTER));
box4.add(档次);
Box box5=Box.createHorizontalBox();
box5.add(new JLabel("购车公司:",JLabel.CENTER));
box5.add(购车公司);
Box box6=Box.createHorizontalBox();
box6.add(new JLabel("购车时间:",JLabel.CENTER));
box6.add(购车时间);
Box boxH=Box.createVerticalBox();
boxH.add(box1);
boxH.add(box2);
boxH.add(box3);
boxH.add(box4);
boxH.add(box5);
boxH.add(box6);
boxH.add(Box.createVerticalGlue());
JPanel picPanel=new JPanel();
picPanel.setBackground(Color.green);
picPanel.add(new JLabel("选择照片:",JLabel.CENTER));
picPanel.add(选择照片);
JPanel putButton=new JPanel();
putButton.add(录入);
putButton.add(重置);
JPanel messPanel=new JPanel();
messPanel.add(boxH);
messPanel.setBackground(Color.cyan);
putButton.setBackground(Color.red);
setLayout(new BorderLayout());
JSplitPane splitV=new JSplitPane(JSplitPane.VERTICAL_SPLIT,picPanel,pic);
JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,messPanel,splitV);
add(splitH,BorderLayout.CENTER);
add(putButton,BorderLayout.SOUTH);
validate();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==录入){
String number="";
number=车牌号.getText();
if(number.length()>0){
try {
inOne =new FileInputStream(systemFile);
inTwo =new ObjectInputStream(inOne);
基本信息表=(HashMap<String,Car>)inTwo.readObject();
inOne.close();
inTwo.close();
}
catch(Exception ee){}
if(基本信息表.containsKey(number)){
String warning="该车牌号基本信息已存在,请到修改页面修改!";
JOptionPane.showMessageDialog(this,warning, "警告",JOptionPane.WARNING_MESSAGE);
}
else{
String m="基本信息将被录入!";
int ok=JOptionPane.showConfirmDialog(this,m, "确认",JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
if(ok==JOptionPane.YES_OPTION){
String name=姓名.getText();
String discipling=(String)档次.getSelectedItem();
String grade=购车公司.getText();
String borth=购车时间.getText();
String sex=null;
if(男.isSelected())
sex=男.getText();
else
sex=女.getText();
车主=new Car();
展开阅读全文