校外实习报告.docx
- 文档编号:23102726
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:46
- 大小:192.13KB
校外实习报告.docx
《校外实习报告.docx》由会员分享,可在线阅读,更多相关《校外实习报告.docx(46页珍藏版)》请在冰豆网上搜索。
校外实习报告
郑州轻工业学院
校外实习报告
实习名称:
软件工程实践
姓名:
鲁雪颖
院(系):
软件学院
专业班级:
软件卓越12-01
学号:
541213440128
指导教师:
朱凯甄磊徐洁殷知磊黄艳邓璐娟
主要实习单位:
上海杰普
成绩:
时间:
2014年6月23日至2014年7月18日
实习成绩评定表
实习单位
实习单位指导技术人员评语
签名
成绩
指导教师评语
总成绩:
1、概要……………………………………………………………………4
1.1实践时间……………………………………………………………4
1.2主要学习内容…………………………………………………………4
1.3实习指导老师………………………………………………………4
1.4“软件工程实践”项目任务书……………………………………5
1.5实践计划(半天版)………………………………………………附2
2、实践内容………………………………………………………………8
2.1Linux技术…………………………………………………………8
2.2CoreJava技术………………………………………………………9
3、项目练习………………………………………………………………14
3.1项目1:
计算器项目………………………………………………14
3.2项目2:
简易版聊天室项目………………………………………22
4、实习总结………………………………………………………………36
1.概要:
1.1实践时间(2014年6月23日至2014年7月18日)
1.2主要学习内容
1)Linux操作系统技术
2)CoreJava技术
3)项目内容(计算器简易版聊天室)
1.3实习指导老师
朱凯、甄磊、徐洁、殷知磊、黄艳、邓璐娟
1.4“软件工程实践”项目任务书(附1)
1.5实践计划(半天版)(附2)
附1:
郑州轻工业学院软件学院
学生实践任务书
一、题目
“软件工程实践
(一)”
二、学生信息
专业软件卓越12-01学号541213440128姓名鲁雪颖
三、任务与约束
1、熟练掌握linux操作系统,vi各种命令,在vi中编写java,在linux环境下编写代码,完成项目。
2.熟练掌握coreJava的基础知识,真正学会了编程的思想,能够站在代码的角度去看问题,能够独立的完成每个课后练习。
3.利用所学知识,能够独立编写出计算器。
4.利用所学知识,能够完成简易版的聊天室。
5.构思计算器,简易版的聊天室项目,需求分析,系统设计,确定项目要实现的功能
6.开始编写代码,实现项目的主要功能
7.测试主要功能,处理Bug。
8.项目验收、完成“软件工程实践报告”
四、设计要求、技术参数及设计规格
1.应用程序提供友好的图形用户界面。
2.应用程序要具备健壮性、稳定性和好的移植性。
3.界面要为用户提供方便的导航。
4.功能要达到老师的要求。
5.允许存在不影响功能的小的bug。
应用程序开发要求:
选用技术:
Java软件集成开发环境(IDE):
NetBeans、MyEclipse、Eclipse等,在linux下开发。
设计要求:
1、图形用户界面设计:
用GUI设计计算器和简易版聊天室系统的界面。
2、功能实现:
根据自己需求对计算器和简易版聊天室。
3、设计规格:
请根据Java规范编写。
五、进度日历
天/日期
任务描述
通过标准
14年6月23日
上午先熟悉linux。
下午学习linux的一些基本操作。
对linux有更深的了解,会用命令操作ubuntu。
14年6月24日
上午学习vi编辑,掌握基本的vi命令。
下午学习网络,shell脚本。
会熟练使用vi命令编辑。
14年6月25日
上午自己再复习下linux,熟悉下corejava
了解编程的思想。
熟练的掌握linux,对corejava有更深的认知。
14年6月26日
使自己迅速进入编程的角色。
掌握命名规范面向对象类和对象变量的分类。
熟练掌握命名规范面向对象类和对象
14年6月27日
熟悉掌握Array数组,并熟练应用。
独立完成发牌器
完成实现发牌器小程序。
14年6月30日
学习对象和类知道面向对象编程有三个特性:
封装,多态,继承
学习构造方法,构造器。
能够明白封装,多态,继承,并熟练的应用。
14年7月1日
学习高级语言特性与应用,掌握staticfinal
学习抽象化编程接口编程
独立完成针对各个模块的的练习
14年7月2日
学习包装类集合Collection和Iterator接口
Set(HashSetTreeSet)
学习ListMap(HashMapTreeMap)反射
独立完成针对各个模块的的练习
14年7月3日
学习异常(try…catchthrows)
学习BuildingGUIs图形用户界面
能够熟练的应用各种异常。
14年7月4日
学习使用GUI的四个步奏
编写个小型计算器
能够独立完成计算器的编写
14年7月7日
验收计算器
验收结束
14年7月8日
学习线程线程新建和启动
熟练创建和使用线程。
14年7月9日
线程状态(就绪、运行、死亡、阻塞)
线程调度线程的两大操作(并发同步
独立完成课后针对作业
14年7月10日
学习对象序列化;反序列化
下午:
学习各种输入输出流
能够熟练地掌握各种输入输出流
14年7月11日
Network(socketserverclientserver)
下午:
要求根据前面所学内容做一个:
简易版的聊天室
独立完成课上针对该模块的练习。
开始构思简易版的聊天室
14年7月14日
项目准备阶段:
项目概要设计和详细设计,确定项目要实现的功能
完成项目计划书中的项目需求和系统设计
14年7月15日
根据需求分析:
设计好服务端和客户端的页面。
完成聊天室的服务端和客户端的GUI页面。
14年7月16日
根据页面逐步完善功能:
编写服务端的sokect和客户端的serversocket,逐步给服务端和客户端的send和star按钮加上监听
完成在服务端和客户端点击send按钮,信息能在各自的showarea中显示出来
14年7月17日
逐步完善服务端和客户端的线程,项目大致已经完成到老师要求。
对项目进行测试,寻找bug。
保证了服务端客户端互相发送的信息能相互接收到。
没有明显影响软件运行的错误,界面美观,代码整齐。
14年7月18日
项目验收
项目验收通过
六、考核形式、考核时间、考核指标及成绩评定
实践成绩由下面构成:
学习纪律、学习态度和平时表现占20%;实践结果占30%;实践报告占30%;实践操作能力占20%。
考核形式:
1)老师每日对学生的考察、评估和考核;2)最后对实践项目完成的质量进行考核和验收。
完成期限:
2014年7月18日
指导教师签章:
朱凯、甑磊、徐洁、殷知磊、黄艳、邓璐娟
专业负责人签章:
教学院长签章
14年6月15日
1、实践内容
2.1Linux技术
(1)linux的三大组成部分:
keenelshellfillsystem
(2)Shell的操作页面,Shell命令操作计算机,Windows文件操作结构,一些基础命,元字符,文本操作。
(3)vi编辑器,vi的三种模式,vi的基本命令,grep,统计进程。
●vi的三种模式:
命令行模式:
默认进入的模式(输入命令,执行相应的操作)。
底行模式:
全文操作(全文保存全文退出全文搜索全文替换)。
输入模式和底行模式是不能直接转换的,要通过命令行模式转换。
●vi的基本命令:
(删除,替换,拷贝,保存,查找)。
●统计:
wc[options]filename(s)
l -lCountslines
l -wCountswords
-CCountscharacters
(4)网络,Shell脚本设置,配置初始化环境,umask,bashr,配置java。
●Shell脚本
建文件:
Toucha.sh
进入Vi:
via.sh
#!
/bin/sh
pwd
cal
date
权限:
chmoda+xfilenamechmoda+xa.sh
执行:
./filename./a.sh
●配置初始化环境
环境变量pathecho$PATH
ls/etc系统初始化文件/etc/profile:
系统级别的初始化文件
ls–a~/home/briup/.bashre:
用户级别的初始化文件
ls–a~/home/briup/.profile:
用户级别的初始化文件
ls–a~/home/briup/bash_.profile:
用户级别的初始化文件
配置java:
vi~/.bashrc
写入:
PATH=$PATH/opt/java1.6.0_24/bin
验证:
Java–version
2.2CoreJava技术
(1)GettingStarted:
●设置Java开发环境;
a.获取J2SDK;
b.安装J2SDK;
c.设置环境变量:
JAVA_HOME,path
(2)Identifiers,Keywords,andTypes
●Comments:
注释
///*-----*/单行注释/**-----*/文档注释
●PrimitiveTypesinJava:
基本数据类型(4类8种)
整型:
byteshortintlong
浮点型:
floatdouble
布尔类型Boolean(truefalse)
单字符字型
char两个字符:
charzhChar=‘中’;charenChar=‘a’;charucChar=‘\u0060’;
●面向对象
类:
classClassName{
属性
方法}
(3)ExpressionsandFlowControl
●变量的分类:
基本数据类型变量,引用数据类型变量(类变量)
根据:
存储的数据类型
●操作符:
赋值操作符:
=
复合赋值操作符:
a+=b----》a=a+b
比较操作符:
基本操作类型比的是之本身
new就有全新的引用
+:
如果前后一个是字符串,那么操作就变成了字符串连接操作
/:
整数取商有浮点数近似值
%:
取余
●数据类型转换----->当数据的数据类型和存储的变量类型不一致时候
例:
inti=10;
floatf=i;
●语句:
if:
先判断后执行,执行一次字句over。
switch:
break是case条件值结束代码的关键字,如果没有将继续往下执行
switch后的类型只能是byteshortintchar
死循环不能有。
For,while,dowhile
(4)Arrays
●Declarearrays:
申明创建数组
●遍历
●二维数组
(5)ObjectsAndClasses
●面向对象编程有三个特性:
封装,继承,多态
●抽象数据类型
●参数传递
(6)AdvancedLanguageFeatures
●static静态
●final
●abstract
●实现:
implement原来的继承
●final类型
●抽象化编程接口编程
●包装类
作用:
1)用引用类型表示数值;例如表示一个缺考学生的成绩;
2)有些场合必须要引用类型;例如集合中只能存储引用类型;
3)实现基本类型间以及与字符串间转换;
●集合:
由数组的缺点引出集合
Java中集合主要分为三种类型:
1)Set(HashSet,TreeSet):
无序,并且没有重复对象。
2)List:
有序(放入的先后的次序),可重复。
3)Map(HashMa,TreeMap):
集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。
●反射
1)确定一个对象的class
2)可以获得一个类的修饰符、字段、方法、构造器和父类。
3)获得接口声明的常量和方法。
4)创建Class的实例,直到运行时才获得。
5)运行前即使字段名字不知道,可以到程序运行时获得和修改这些字段的值。
6)运行前即使对象的方法名不知道,可以到程序运行时触发调用该方法。
7)运行前创建了一个大小和元素都未知的新数组,可以到运行时修改数组的元素。
(7)Exceptionstry...catch语句
●throws抛异常
●Assertion断言:
测试代码时
(8)BuildingGUIs&&TheAWTEventModel
●选择容器(FramePanel)
●选择布局管理器:
java.awt包提供了5种布局管理器:
1)FlowLayout流式布局管理器;
2)BorderLayout流式布局管理器;
3)GridLayout流式布局管理器;
4)CardLayout流式布局管理器;
5)GridBagLayout流式布局管理器;
●添加组件
●给组件添加事件处理
●事件源
1)是一个组件或对象,用来产生事件;
2)通过事件源来实例化事件类型对象;
3)提供方法增加和删除事件监听器
4)维持一系列有兴趣的事件监听器
事件源产生事件后,必须将事件对象传递给事件监听器,让事件监听器去处理。
因此事件源必须能够访问到事件监听器对象。
如何访问呢?
可以将事件监听器作为事件源的属性或事件监听器数组、集合类型作为事件源的属性;
所谓增加或删除事件监听器无非是修改事件监听器属性的值;
逻辑上包括了创建和传递适当类型的事件对象给所有感兴趣的事件监听器
(9):
Threads
●线程新建和启动:
一种:
extendingtheclassThread
二种:
implementingtheinterfaceRunnable
●线程状态:
就绪、运行、死亡、阻塞
线程在它的生命周期中会处于各种不同的状态;
1)新建状态(New)
用new语句创建的线程对象处于新建状态,此时它和其他Java对象一样;仅在堆区中被分配了内存;
2)就绪状态(Runnable)
当一个线程对象创建后,其他线程调用它的start()方法,该线程就进入就绪状态,Java虚拟机会为它创建方法调用栈。
处于这个状态的线程位于可运行池中,等待获得CPU的使用权。
3)运行状态(Running)
处于这个状态的线程占用CPU,执行程序代码。
在并发运行环境中,如果计算机只有一个CPU,那么任何时刻只会有一个
线程处于这个状态。
如果计算机有多个CPU,那么同一时刻可以让几个线程占用不同的CPU,使它们都处于运行状态。
只有
处于就绪状态的线程才有机会转到运行状态。
4)阻塞状态(Blocked)
指线程因为某些原因放弃CPU,暂时停止运行。
当线程处于阻塞状态时,Java虚拟机不会给线程分配CPU,直到线程重新
进入就绪状态,它才有机会转到运行状态。
●线程的两大操作:
并发,互斥,加锁
(10):
StreamI/OAndFiles
●对象序列化,反序列化
对象的序列化:
把对象写到一个输出流;
对象的反序列化:
从一个输入流中读取一个对象;
●字节输入流和输出流概述
文件输入流输出流文件
内存------------->Java程序------------------>内存
键盘控制台
数据源数据目的地
●输入流和输出流层级结构
ByteArrayInputStream:
把字节数组转换为输入流;FileInputStream:
从文件中读取数据;
PipedInputStream:
连接一个
PipedOutputStream;
SequenceInputStream:
把几个输入流转换为一个输入流;
ObjectInputStream:
对象输入流;
FilterInputStream:
过滤器,扩展其它输入流功能;
●BufferedInputStream类
●DataInputStream类
readByte()——从输入流中读取1个字节,指它转换为byte类型的数据;
readLong()——从输入流中读取8个字节,指它转换为long类型的数据;
readFloat()——从输入流中读取4个字节,指它转换为float类型的数据;
readUTF()——从输入流中读取1到3个字节,指它转换为UTF-8字符编码的字符串
●管道输入类:
PipedInputStream类
●InputStreamReader类
●FileReader类
FileReader(Filefile):
参数file指定需要读取的文件;
FileReader(Stringname):
参数name指定需要读取的文件的路径;
●BufferedReader类
●File类
●FileInputStreamandFileOutputStream
●FileReaderandFileWriter
●PrintWriter
(11):
Networking
●Server
开启服务-->产生端口
ServerSocket(intport)创建绑定到特定端口的服务器套接字。
ServerSocketss=newServerSocket(8888);
死循环,机器不断运行
while(true)
{Socketsocket=ss.accept();}
用输入流包装
●client
importjava.awt.*;
publicvoidactionPerformed(ActionEvente){
Socketsocket=newSocket("localhost",8888);//链接端口
3、项目练习
3.1项目1:
计算器项目
3.1.1问题描述或需求分析:
1)运算器功能需求
用户能够完成四则混合运算加减乘除,并且运算器能够自动的识别运算符的优先级,根据输入的运算公式,自动计算出相应的结果。
同时完成运算器中的 Baclspace.ce按钮,能够完成消除或者删除的功能。
2)出错处理需求
当用户如果按下的是除零的操作,显示框将显示“被除数不为0”;当用户如果连续多次按下运算符,运算器自动记忆第一次运算符,并且做防连续输入相同的运算符或者是不同的运算符。
当用户在同一个数据中多次输入小数点,运算器能够自动判断小数点重复,自动只记忆第一个小数点。
当用户在同一个数据中输入多个负号,运算器能够自动做重复检查,不显示多余的负号。
当用户在使用backspace功能删除越界数据时候,运算器自动作相应的处理。
3)数据处理需求
在程序的起始,建立两个栈,分别用来存储操作数和操作符。
在运算器的核心运算代买中,运用这两个栈来实现算法中的优先级的处理,使用“#”号来标记计算公式的结束。
目标计算公式通过运算器的键盘实现输入,当按下“=”号之后,运算器通过调用运算器核心函数来实现数据的处理。
3.1.2问题求解设计
1)系统总体分析:
对于此次运算器程序,首先设计其GUI界面,总体界面有一个文本框,总界面用BoderLayout布局。
文本框放置到一个面板Panel中,添加到整体布局的中心,界面设计完成。
布局设计好后再添加按钮事件。
对于此程序考虑到点击加减乘除按钮时是否点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加减乘除按钮则直接把数字按钮的数值设置到文本框中,否则应把文本框中的内容加上用户所点击按钮的数值设置到文本框中。
在进行加、减、乘、除计算时点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。
2)系统界面部分 :
主窗体包含的控件中要有:
标签,用于显示提示语句; 文本文档,用于用户数值的;按钮键,用于处理操作。
界面初始化时,将一些按键,例如完成加、减、乘、除运算按键设置成不可用,这样可以防止误操作,每次按钮按下时,都有相应的按钮属性被更改。
3)系统后台部分:
后台部分,核心就是产生随即算术式,用一个字符串数组存放加和减的操作符,产生一个0-9的随机数,通过此随机数对应操作符数组中的字符,决定产生的算术式为加法或减法,然后进行两个数值的四则运算,通过以上运算求出结果,保存在私有变量中,同时对应的产生一个通过连接完成的字符串,作为界面题目输出的内容,以上便完成随机算术式的生成。
4)运算器总系统功能图:
3.1.3代码编写:
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassCalculateextendsJFrameimplementsKeyListener{
privateContainercontentPane;
privateString[]key={"7","8","9","c",//声明一个字符串
"4","5","6","+",
"1","2","3","-",
"0",".","=","*",
"%","sqr","<-","/"};
privateJButtonbriup_jb[]=newJButton[key.length];//声明计算器上的按钮
privateJButtonbriup_jb1,briup_jb2;//声明菜单栏的按钮
privateJTextAreabriup_jt;
privateJPanelbriup_jp0,briup_jp1,briup_jp2;
privateStringBufferbruip_Str;//声明一个字符串变量
privatecharch;
privatebooleanbriup_bl;//声明一个布尔值
privatedoublex=0,y=0;
privateStringstr1="Typewrong";
privateStringstr2="tip";
publicCalculate(Stringtitle){//主题窗口设置
setTitle(title);
setSize(300,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校外 实习 报告