广东海洋大学Java课程设计
- 格式:pdf
- 大小:586.56 KB
- 文档页数:12
本科生课程设计课程名称数据库原理及应用课程设计课程编号J1670101学号学生姓名所在专业所在班级指导教师成绩教师签字年月日课程设计时间:年月日至年月日目录目录设计总说明 (I)1、需求分析 (3)2、概念结构设计 (3)3、逻辑结构设计 (4)4、物理结构设计 (4)5、系统实现 ....................................................................................... 错误!未定义书签。
5.1前台界面 .................................................................................. 错误!未定义书签。
5.2 后台实现 .................................................................................. 错误!未定义书签。
6、优缺点及自我评价....................................................................... 错误!未定义书签。
7、参考文献 (7)设计总说明(1)系统开发目的学生信息管理系统是学校管理的重要工具,是学校不可或缺的部分。
随着在校大学生人数的不断增加,教务系统的数量也不断的上涨。
学校工作繁杂、资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。
并且这种传统的方式存在着很多的弊端,如:保密性差、查询不便、效率低,很难维护和更新等。
然而,本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。
所以如何自动高效地管理信息是这些年来许多人所研究的。
(2)开发内容用数据库和Java相关技术开发一个学生信息管理系统(3)开发要求能够对学生信息进行简单的添加,删除和查询(4)开发环境及工具1、操作系统:Windows 72、数据库软件:SQL Server 20083、Java开发工具:Eclipse(5)系统功能简介一、学生管理1、添加学生信息。
本科生课程设计课程名称软件工程课程设计课程编号16532115学号学生姓名所在专业计算机科学与技术所在班级指导教师孙兵成绩教师签字评语:目录摘要 (3)1引言 (4)1.1课题背景................................................................................ 错误!未定义书签。
1.2项目的目的及意义................................................................ 错误!未定义书签。
1.3国内外现状与发展................................................................ 错误!未定义书签。
2基于安卓平台的新闻客户端所用关键技术............................... 错误!未定义书签。
2.1JSON数据传输格式............................................................... 错误!未定义书签。
2.2SQLite数据库....................................................................... 错误!未定义书签。
2.3SP存储................................................................................... 错误!未定义书签。
2.4Volley网络通讯框架........................................................... 错误!未定义书签。
3基于安卓平台的新闻客户端需求分析....................................... 错误!未定义书签。
GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称类的综合运用课程名称 Java 程序设计课程号16232105学院(系) 信息学院专业计算机科学与技术班级学生姓名XXX 学号20 实验地点钟04002 实验日期实验目的:(1)掌握类的继承,实现构造函数的继承。
(2)多态,通过相同的方法名实现不同的功能实验内容:1、有一个shape接口,利用该接口来编写求解不同的几何图形(矩型,正方形,圆)的周长、面积的应用程序(其中正方形是矩形的子类),要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的来编程。
Interface shape{Public double perimeter();Public double area();}放自己的程序代码import java.util.Scanner;interface Shape{ //定义一个接口public double perimeter();public double area();}abstract class line{ //定义一个长度抽象类double r=0;}class Juxing implements Shape{ //矩形的类定义double c=0;double h=0;Juxing(){}Juxing(double a){ //多态h=a;}Juxing(double a,double b){ //多态c=a;h=b;}public double perimeter(){ //重写,求矩形周长double z=(c+h)*2;return z;}public double area(){ //重写,求矩形面积double s=c*h;return s;}}class Square extends Juxing{ //继承,定义正方形的类 Square(double a){super(a);}}class Circle extends line implements Shape{ //继承,定义圆的类 jisuan A=new jisuan();Circle(double y){r=y;}class jisuan{ //内部计算类jisuan(){}double zhouchang(){double l=2*3.14*r;return l;}double mianji(){double s1=3.14*r*r;return s1;}}public double perimeter(){ //求圆的周长return A.zhouchang();}public double area(){ //求圆的面积return A.mianji();}}public class Shiyan4 {public static void main(String[] args){System.out.print("请输入矩形的长和宽:");Scanner input = new Scanner(System.in);Scanner input2 = new Scanner(System.in);double ai = input.nextInt(); // 输入double bi = input2.nextInt(); //输入Juxing J=new Juxing(ai,bi);ai=J.perimeter();System.out.print("矩形的周长为:"+ai+'\n');bi=J.area();System.out.print("矩形的面积为:"+bi+'\n');System.out.print("请输入正方形的边长:");Scanner input3 = new Scanner(System.in);double ci = input3.nextInt();Square S=new Square(ci);ci=S.perimeter();System.out.print("正方形的周长为:"+ci+'\n');ci=S.area();System.out.print("正方形的面积为:"+ci+'\n');System.out.print("请输入一个圆的半径:");Scanner input4 = new Scanner(System.in);double di = input4.nextInt();Circle C=new Circle(di);di=C.perimeter();System.out.print("圆的周长为:"+di+'\n');di=C.area();System.out.print("圆的面积为:"+di+'\n');}}运行结果或截图2 设计一个抽象类CompareObject,其中定义一个抽象方法compareTo()用于比较两个对象。
GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称实验二数组和字符串课程名称Java程序设计课程号16232115学院(系) 数计(软件)学院专业软件工程班级学生姓名学号实验地点钟04002 实验日期17.09.26第 1 章实验二数组和字符串一.实验目的1.掌握Java中的数组定义、引用2. 掌握使用字符串String类处理字符串的方法3.掌握使用字符串StringBuffer类处理字符串的方法二.实验要求1。
编写程序,读取1到100之间的整数,然后计算每个数出现的次数。
(假设输入是以0结束的)2、编写程序,调用类ng.Math的成员方法random(),设法生成10个互不相同的小写英文字母,然后对这10个英文字母按从小到大进行排列。
输出排序前与排序后的字母序列。
三.实验心得1、利用数组的下标记录相同数字的个数,如果不为零,则输出。
输出格式为“数字:出现次数”2、用random()*26+97随机生成数值,通过ASCII码间接的将数字转换为字母。
通过冒泡排序或快速排序去实现大小排列。
while(n<10){// random的範圍是0+97<=x<1*26+97 -> 97-123num[n]=(int)(97+26*Math.random());letter[n]=(char)num[n];//将数字转换为字母n++;for(int i=0;i<n;i++){//判断有无重复if(num[i]==num[n-1]&&i!=n-1){num[n-1]=0;n--;break;}}}成绩指导教师日期注:请用A4纸书写,不够另附纸。
第页,共页。
广东海洋大学学生实验报告书(学生用表)实验名称实验四.类的基本编程课程名称Java程序设计与开发技术课程号学院(系) 数学与计算机学院专业计算机科学与技术班级计科1141学生姓名邓超荣学号201411621110 实验地点钟海楼04017实验日期2016.10.26一实验目的:掌握Java类的基本知识及应用二实验内容:定义一个名为Complex的类实现复数概念及运算,它的UML图如下,先实现该类的相关方法,再试编写主方法来测试该类这些的方法。
GDOU-B-11-112代码:public class ComplexDemo {public static void main(String[] args) {Complex c1 = new Complex(1,2);Complex c2 = new Complex(2,3);Complex c3 = new Complex(4,-2);double c = -2;Complex sum = new Complex();sum = plexAdd(c1,c2);System.out.println("(1+2i)+(2+3i)="+sum);sum = plexAdd(c1, c);System.out.println("(1+2i)+(-2)="+sum);sum = plexAdd(c1,c2,c3);System.out.println("(1+2i)+(2+3i)+(4-2i)="+sum);Complex mid = new Complex();mid = plexMinus(c1,c2);System.out.println("(1+2i)-(2+3i)="+mid);mid = plexMinus(c1, c);System.out.println("(1+2i)-(-2)="+mid);Complex mul = new Complex();mul = plexMul(c1,c2);System.out.println("(1+2i)*(2+3i)="+mul);mul = plexMul(c1, c);System.out.println("(1+2i)*(-2)="+mul);mul = plexMul(c1,c2,c3);System.out.println("(1+2i)*(2+3i)*(4-2i)="+mul);}}class Complex {double realPart;double imaginaryPart;Complex(){} //默认构造函数Complex(double r,double i) { //带参数的构造函数realPart = r;imaginaryPart = i;}double getRealPart() { //返回实部return realPart;}void setRealPart(double d) { //设置实部realPart = d;}double getImaginaryPart() { //返回虚部return imaginaryPart;}void setImaginaryPart(double d) { //设置虚部imaginaryPart = d;}Complex complexAdd(Complex c1,Complex c2) { //复数对象与复数对象相加Complex sum = new Complex();sum.realPart = c1.realPart + c2.realPart;sum.imaginaryPart = c1.imaginaryPart +c2.imaginaryPart;return sum;}Complex complexAdd(Complex c1,double c2) { //复数对象与实数相加Complex sum = new Complex();sum.realPart = c1.realPart + c2;sum.imaginaryPart = c1.imaginaryPart;return sum;}Complex complexAdd(Complex c1,Complex c2,Complex c3) { //三个复数相加Complex sum = new Complex();sum.realPart = c1.realPart + c2.realPart +c3.realPart;sum.imaginaryPart = c1.imaginaryPart +c2.imaginaryPart + c3.imaginaryPart;return sum;}Complex complexMinus(Complex c1,Complex c2) { //复数对象与复数对象相减Complex mid = new Complex();mid.realPart = c1.realPart - c2.realPart;mid.imaginaryPart = c1.imaginaryPart -c2.imaginaryPart;return mid;}Complex complexMinus(Complex c1,double c2) { //复数对象与实数相减Complex mid = new Complex();mid.realPart = c1.realPart - c2;mid.imaginaryPart = c1.imaginaryPart;return mid;}Complex complexMul(Complex c1,Complex c2) { //复数对象与复数对象相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2.realPart -c1.imaginaryPart * c2.imaginaryPart;mul.imaginaryPart= c1.realPart* c2.imaginaryPart + c1.imaginaryPart * c2.realPart;return mul;}Complex complexMul(Complex c1,double c2) { //复数对象与实数相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2;mul.imaginaryPart = c1.imaginaryPart * c2;return mul;}Complex complexMul(Complex c1,Complex c2,Complex c3) { //三个复数相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2.realPart -c1.imaginaryPart * c2.imaginaryPart;mul.imaginaryPart= c1.realPart* c2.imaginaryPart + c1.imaginaryPart * c2.realPart;double r = mul.realPart;double i = mul.imaginaryPart;mul.realPart = r * c3.realPart - i *c3.imaginaryPart;mul.imaginaryPart = r * c3.imaginaryPart + i *c3.realPart;return mul;}public String toString() { //以a+bi的形式显示复数String s = new String();if(realPart!=0){if(imaginaryPart>0) {s = (int)realPart + "+" + (int)imaginaryPart + "i";}else if(imaginaryPart==0) {s = String.valueOf((int)realPart);}else{s= (int)realPart+ ""+ (int)imaginaryPart+ "i";}}else{if(imaginaryPart>0) {s = (int)imaginaryPart + "i";}else if(imaginaryPart==0) {s = String.valueOf(0);}else{s = (int)imaginaryPart + "i";}}return s;}}。
Java课程设计报告一、题目要求模拟马赛跑要求:用图形用户界面实现。
能设置比赛时间,马匹的数量(至少3只以上)等等。
在任意时间段内马匹的速度是随机的。
开始比赛之后以动画显示赛马过程。
提示:使用多线程二、题目分析要显示赛马的动画效果,必须要要使用Java的GUI编程实现。
并且不断调用类JPanel中的repaint()方法刷新画面,实现动画帧的连续播放。
马匹速度是随机的,可以联想到调用类Rndom中的相关方法;最后的比赛时间的获取,可以用马匹到达终点的时间减去马匹开始比赛的时间,再用日期时间类Date和日期格式化操作类进行相应的转化。
三、源代码主界面:package java课程设计之模拟马赛跑;import javax.swing.*;//import sun.java2d.pipe.DrawImage;import java.awt.*;import java.awt.event.*;import java.util.Vector;public class MyHorseRacing extends JFrame{/****/private static final long serialVersionUID = 3870426623557696342L;private MyPanel mp = null;/*private*/static JButton staBut = null;/*private*/static JButton reStaBut = null;private JPanel jP1 = null;private JPanel jP2 = null;private JPanel jP3 = null;private JLabel jL1 = null;private JLabel jL2 = null;// private JLabel jL3 = null;// private JLabel jL4 = null;// private JComboBox<String> jC1;//// MyComboBox myComb = new MyComboBox();static int horsNum = 0;public static void main(String[] args) {/*try {javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.Win dowsLookAndFeel");} catch (ClassNotFoundException e) {// TODO 自动生成的catch 块e.printStackTrace();} catch (InstantiationException e) {// TODO 自动生成的catch 块e.printStackTrace();} catch (IllegalAccessException e) {// TODO 自动生成的catch 块e.printStackTrace();} catch (UnsupportedLookAndFeelException e) {// TODO 自动生成的catch 块e.printStackTrace();}*/JFrame.setDefaultLookAndFeelDecorated(true);try {javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifL ookAndFeel");} catch (ClassNotFoundException e) {// TODO 自动生成的catch 块e.printStackTrace();} catch (InstantiationException e) {// TODO 自动生成的catch 块e.printStackTrace();} catch (IllegalAccessException e) {// TODO 自动生成的catch 块e.printStackTrace();} catch (UnsupportedLookAndFeelException e) {// TODO 自动生成的catch 块e.printStackTrace();}Icon icon=new ImageIcon("images/facebook.gif");Object[] possibilities = {"3", "4", "5" };String initNum = (String)JOptionPane.showInputDialog(null, "请先设置马匹数", "提示",RMATION_MESSAGE, icon, possibilities, possibilities[0]);System.out.println(initNum);MyHorseRacing.horsNum = Integer.parseInt(initNum);@SuppressWarnings("unused")MyHorseRacing myGame = new MyHorseRacing();}public MyHorseRacing(){// horsNum = Integer.parseInt(MyComboBox.getNum());//mp = new MyPanel(horsNum);jP1 = new JPanel(new GridLayout(1,3));jP2 = new JPanel(new FlowLayout(FlowLayout.CENTER,10,10));jP3 = new JPanel(new FlowLayout(FlowLayout.CENTER,10,10));jL1 = new JLabel(new ImageIcon("images/GuanZhongXi.jpg"));jL2 = new JLabel("");// jL3 = new JLabel("设置比赛时间\t");// jL4 = new JLabel("设置比赛马匹数\t");staBut = new JButton("\t开\t始\t");reStaBut = new JButton("\t重新开始\t");// jC1 = new JComboBox<String>(myComb);// jC1.setSelectedIndex(0); //默认显示第一个//设置布局管理器setLayout(new BorderLayout());jP1.setLayout(new GridLayout(3,1,5,1));//添加组件this.add(mp,BorderLayout.CENTER);mp.setBackground(Color.WHITE);// jP2.add(jL3);jP2.add(staBut);// jP2.add(jL4);// jP2.add(jC1);jP2.add(reStaBut);jP1.add(jP2);jP1.add(jP3);jP1.add(jL2);this.add(jP1,BorderLayout.SOUTH);jP1.setBackground(Color.YELLOW);this.add(jL1,BorderLayout.NORTH);//注册监听staBut.addActionListener(mp);reStaBut.addActionListener(mp);// setBut.addActionListener((ActionListener) myComb); // jC1.addActionListener((ActionListener) myComb);//设置窗体属性this.setTitle("赛马游戏");this.setSize(1300, 700);// this.pack();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}class MyPanel extends JPanel implements ActionListener{/****/private static final long serialVersionUID = -7869482491734922949L;// private boolean state = true;Vector<Horse> hors = new Vector<Horse>();// public boolean getState() {// return state;// }// public void setState(boolean state) {// this.state = state;// }public MyPanel(int horsNum){for (int i = 0; i < horsNum; i++) {Horse horse = new Horse(0,10+(i*70));hors.add(horse);System.out.println(" 构造方法X = "+horse.getX()+"构造方法Y = "+horse.getY());}// System.out.println(hors.size());// horse1 = new Horse(0,10);// horse2 = new Horse(0,80);// horse3 = new Horse(0,150);// System.out.println(MyComboBox.getNum());}@Overridepublic void paint(Graphics g) {super.paint(g);//初始化场景图g.setColor(Color.RED);g.drawLine(0, 0, 1300, 0);g.drawLine(0, 70, 1300, 70);g.drawLine(0, 140, 1300, 140);g.drawLine(0, 210, 1300, 210);g.drawLine(0, 280, 1300, 280);g.drawLine(0, 350, 1300, 350);g.drawLine(116, 0, 116, 350);g.drawLine(1200, 0, 1200, 350);g.setColor(Color.BLACK);g.setFont(new Font("华文新魏",Font.BOLD,50));g.drawString("1",120,50);g.drawString("2",120,120);g.drawString("3",120,190);g.drawString("4",120,260);g.drawString("5",120,330);g.setColor(Color.red);g.setFont(new Font("华文新魏",Font.BOLD,20));g.drawString("起点", 116, 370);g.drawString("终点", 1200, 370);// drawHorse(horse1.getX(),horse1.getY(),g);// drawHorse(horse2.getX(),horse2.getY(),g);// drawHorse(horse3.getX(),horse3.getY(),g);for (int i = 0; i < hors.size(); i++) {drawHorse(hors.get(i).getX(),hors.get(i).getY(),g);// System.out.println(" i\t"+i);}// if(this.getState() == true){// System.out.println(" this.getState() +"+this.getState());// this.outPut();// }// if(Horse.rank == hors.size() && this.getState()){// JOptionPane.showMessageDialog(null, Horse.sbf, "比赛成绩", RMATION_MESSAGE);// this.setState(false);// }}// public void outPut(){// if(Horse.rank == hors.size()){//// JOptionPane.showMessageDialog(null, Horse.sbf, "比赛成绩", RMATION_MESSAGE);// System.out.println("能进来吗?");// this.setState(false);// System.out.println("why not? "+this.getState());// }// }public void drawHorse(int x,int y,Graphics g){Image img = Toolkit.getDefaultToolkit().getImage("images/horse.gif");g.drawImage(img,x,y,this);// System.out.println(" 画马\t"+1);this.repaint();}public void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根//开始按钮对应的事件处理// new Thread(horse1,"赤兔马").start();// new Thread(horse2,"汗血宝马").start();// new Thread(horse3,"白龙马").start();if(e.getSource() == MyHorseRacing.staBut){for (int i = 0; i < hors.size(); i++) {new Thread(hors.get(i),"赤兔马"+(i+1)).start();}MyHorseRacing.staBut .setVisible(false);}if(e.getSource() == MyHorseRacing.reStaBut){System.out.println("wahhaa");for (int i = 0; i < hors.size(); i++) {hors.get(i).setX(0);hors.get(i).setIsLive(true);Horse.sbf.replace(0, Horse.sbf.length() - 1, "");Horse.rank = 0;// new Thread(hors.get(i),"赤兔马").start();}}this.repaint();}}马匹Horse类:package java课程设计之模拟马赛跑;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JOptionPane;public class Horse implements Runnable{/*** @param args*/private int x;private int y;private int speed = 0;private boolean isLive = true; //是否存活的标志private long start;private long end;static int rank = 0;static StringBuffer sbf = new StringBuffer(); //打印最后成绩信息private Random rand = new Random();Icon icon=new ImageIcon("images/facebook2.gif");public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}public boolean getIsLive() {return isLive;}public void setIsLive(boolean isLive) {this.isLive = isLive;}public long getStart() {return start;}public void setStart(long start) { this.start = start;}public long getEnd() {return end;}public void setEnd(long end) { this.end = end;}public Horse() {}public Horse(int x, int y) {super();this.x = x;this.y = y;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public void run() {this.setStart(System.currentTimeMillis());// TODO 自动生成的方法存根while(true){try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}this.speed = rand.nextInt(11);x += this.speed;this.setX(x);System.out.println(Thread.currentThread()+" x ="+this.getX()+" y ="+this.getY()+" isLive ="+this.getIsLive());synchronized (this) { //操作共享数据引入同步if(this.getX()>=1200){// synchronized (this) {this.setEnd(System.currentTimeMillis());this.setIsLive(false);++Horse.rank;// }break;}}}MyHorseRacing.staBut.setVisible(true);// this.setX(0);// long temp = this.getEnd() - this.getStart();// System.out.println("花费的时间为:"+temp+" ms ");Date date = new Date((this.getEnd() - this.getStart()));SimpleDateFormat sdf = new SimpleDateFormat("ss.SSS");String str = sdf.format(date);System.out.println(Thread.currentThread().getName()+"花费的时间为:"+str+" s ");System.out.println(Thread.currentThread().getName()+" 名次为:"+Horse.rank );Horse.sbf.append(Thread.currentThread().getName()+" 名次为:"+Horse.rank).append("\n花费的时间为:"+str+" s \n");// JOptionPane.showMessageDialog(null, Thread.currentThread().getName()+" 名次为:"+Horse.rank// +"\n花费的时间为:"+str+" s ", "比赛成绩", RMATION_MESSAGE);if(Horse.rank == MyHorseRacing.horsNum){JOptionPane.showMessageDialog(null, Horse.sbf, "比赛成绩", RMATION_MESSAGE,this.icon);}}}四、调试:1.首先设置马匹数:2.选择“开始”按钮:3.奔跑中的马匹:4.比赛结果:5.可按“重新开始按钮”继续比赛:五、总结、心得与收获经过一个星期的奋斗,终于基本实现了该程序应由的功能,但这不意味着程序就完美无缺,例如程序界面不够美观,“重新比赛”后不能再次设置马匹的数量,也没有考虑到各种异常的产生。
GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称JAVA计算器程序设计课程名称JAVA程序设计课程号学院(系) 专业班级学生姓名学号实验地点完成日期实验JAVA计算器程序设计1)实验总结:刚做之前,勉强还能做些小程序,但在进行了计算器程序设计的时候,才发现很多语句还不能联系运用,大部分还是通过百度和书籍才勉勉强强完成,看来实践才是硬道理2)实验目的通过计算器程序设计,能够更加深入的了解JAVA,熟悉图形用户的设计原理和程序结构等4)实验内容和步骤实验内容应用JAVA软件设计一个简易的计算器,实现基本的四则运算及括号设计流程1. 分析该计算器需要完成的功能。
用户能够完成添加括号和负号的四则混合运算,并且计算器能够自动识别运算符的优先级,根据用户输入的运算表达式,自动计算出相应的结果。
同时还完成了计算器中C按钮清屏功能和Backspace退格键。
2. 考虑异常处理。
(1)当输入的表达式中出现除零的操作,显示框将显示“Infinity(无穷大)”。
(2)当输入的表达式错误时,将弹出提示框显示“表达式错误请重新输入”(3)当计算器的显示文本框里为没有输入内容时直接点击等号按钮,将弹出提示框显示“对不起,您没有任何输入,请重新输入:”。
(4)当第一次输入乘号键,除号键,右括号,小数点,求余键,等号键,ce键,Backspace 键时提示错误。
4. 考虑数据的处理目标计算表达式通过点击计算器界面上的按钮进行输入,当按下等号之后,计算器通过调用JAVA中script这个包中的相关类和方法来实现数据的处理。
5. 编码实现计算器的功能。
(1)新建相关的文件。
(2)引入JAVA中相关的包。
(3)新建类Jsq,并继承了类Frame,而且实现了接口ActionListener(4)定义相关的变量,创建相关组件,并对组件的属性进行设置。
(5)对所创建的组件进行布局,完成界面的实现。
(6)为各个组件添加事件监听器。
广东海洋大学课程设计报告成绩:评语:报告正文一,项目说明文档1.任务与内容设计一个简单的使用java语言编写的一个记事本程序,可以实现以下功能:A.文件的新建,打开,保存和另存B.对文件的编辑,如剪切,复制,粘贴,删除,还有查找替换等等C.对文本中字体的设置2.运行以及使用使用eclipse运行源程序,则可以出现:1)主界面2)点击窗口的文件按钮,可以实现打开保存等操作3)点击编辑菜单,可以实现对文本的复制粘贴剪切全选等功能4)点击编辑菜单,可以实现查找替换功能5)点击编辑菜单的全部替换功能,可以实现快速替换。
6)点击格式中的字体按钮,可以实现对文本区域的字体设置2.程序设计思路和关键数据结构在本程序中,在菜单栏上设置四大菜单,然后将相应的菜单项(功能)添加到各个菜单中,然后再具体实现各个菜单项的功能。
主要使用JButton,JFrame,Textarea (文本区),menu(创建菜单)等类和实现ActionListener,MouseListener,WindowListener等接口。
3.测试数据1)编辑菜单中的替换功能当查找文本中没有数据时,这时点击替换或全部替换,因为还没有内容,这这时会弹出一个消息对话框,提示“请先输入查找内容”。
2)编辑菜单中的查找功能打开查找菜单对话框,如果没有输入查找内容,点击查找下一个,则会弹出一个消息对话框,说“请先输入查找内容”。
4.在设计实现和测试中发现的问题以及我的解决方案1)在实现查找功能时,分为向上、向下查找,当第一次向下查找时,我们先设置rear变量为0,从头开始查找,当查找到时,对rear重新赋值,使它能够下次从正确位置开始遍历。
向上查找时,通过设置另一个变量head来控制实现。
2)在设计新建文件的类中,当用户点击新建时候,应该类中的成员变量(保存文件名,打开文件名)设为null,把是否第一次保存的标记设为false;3)在点击退出时,我们我先判断文本是否作过了改动,若改动过,看是否已经保存,保存过了,就直接退出,否则弹框提示是否保存,再点击相应的按钮进行后续的保存或不保存操作。
广东海洋大学学生实验报告书(学生用表)实验名称实验三数组与字符课程名称Java程序设计与开发技术课程号学院(系) 数学与计算机学院专业计算机科学与技术班级计科1141学生姓名邓超荣学号201411621110 实验地点钟海楼04017实验日期2016.10.22实验三数组与字符一实验目的:掌握Java数组的编程掌握字符串使用二实验内容:1 已知字符串:“This is a java program.”按要求编写下程序:(1)统计该字符串中字母a出现的次数(2)取出子字符串“java”,存在另一字符串中并输出。
(3)用两种方式将本字符串复制到另一个字符数组char[] str中,并输出(4)将字符串中每个单词的第一个字母变成大写,并输出整个字符串(5)用两种方式将该字符串逆序输出(用stringbuffer和for方式来实现)实验代码:package javademo2;public class Stringtest {GDOU-B-11-112public static void main(String[] args) {//问题1 统计该字符串中字母a出现的次数String s="This is a java program.";int count=0;char[] chs=s.toCharArray();for(int i=0;i<chs.length;i++){if(chs[i]=='a'){count++;}}System.out.println("a出现的次数:"+count);//问题2 取出子字符串“java”,存在另一字符串中并输出。
int index=s.indexOf("java");String ss=s.substring(index,index+4 );System.out.println(ss);//问题3 用两种方式将本字符串复制到另一个字符数组 char[] str中,并输出//方式一:char[] str=s.toCharArray();System.out.println(str);//方式二char[]str2=new char[s.length()];for(int i=0;i<str.length;i++){str2[i]=s.charAt(i);}System.out.println(str2);//问题4 将字符串中每个单词的第一个字母变成大写,并输出整个字符串//思路:先定义一个变量f用来标记是否是单词的开始位置,如果是开始位置就输出大写字母,并把f标记成false,如果遇到空格,就把f标记成true。
Java实验报告五实验名称:Java上机训练五课程名称:Java程序设计教程学院:信息学院专业:班级:学生姓名:学号:实验地点:钟海楼04004日期:2014-11-13实验五图形用户界面编程一、实验目的1、掌握常用组件的定义及使用2、理解常见的布局方式及其特点3、掌握事件处理机制二、实验要求1、编写Swing图形用户界面程序2、编写事件处理程序三、实验内容1、编写一个程序,创建如下的界面(使用FlowLayout)。
2、在上题的基础上,编写程序,使其将输入的姓名和密码插入到列表框中。
四、实验过程1、打开文本编辑器,编写下面的代码:import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.JPasswordField;import javax.swing.JTextArea;import javax.swing.JPanel;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JButton;import java.awt.Container;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.*;public class Demo{private JLabel label1,label2,labelf1,labelf2,labelf3;private JButton button1,button2,button3;private JTextField textfield1; //文本区private JPasswordField textfield2; //密码文本框private JTextArea textarea; //文本域private JPanel panel1,panel2; //面板两个private JDialog dialog1,dialog2,dialog3;//三个错误提示对话框String nametext="#";//用于记录姓名,防止重复输入public void init(){JFrame myWindow=new JFrame("测试"); //设置窗口标题myWindow.setLocation(300,300);//设定窗口开始显示在屏幕上的初始位置myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使窗口可以关闭 myWindow.setSize(600,200);//设置窗口的大小myWindow.setResizable(false);//设置用户不可以改变窗口大小dialog1=new JDialog(myWindow,"错误提示",true);//提示未输入姓名dialog1.setBounds(500, 320, 150, 100);//设置对话框的尺寸dialog1.setLayout(new FlowLayout());labelf1=new JLabel("错误:未输入姓名");button1=new JButton ("确定");dialog1.add(labelf1);dialog1.add(button1);dialog1.setResizable(false);//设置用户不可以改变窗口大小dialog2=new JDialog(myWindow,"错误提示",true);//提示重复输入的错误dialog2.setBounds(500, 320, 150, 100);//设置对话框的尺寸dialog2.setLayout(new FlowLayout());labelf2=new JLabel("错误:重复输入");button2=new JButton("确定");dialog2.add(labelf2);dialog2.add(button2);dialog2.setResizable(false);//设置用户不可以改变窗口大小dialog3=new JDialog(myWindow,"错误提示",true);//提示未输入密码的错误dialog3.setBounds(500, 320, 150, 100);//设置对话框的尺寸dialog3.setLayout(new FlowLayout());labelf3=new JLabel("错误:未输入密码");button3=new JButton("确定");dialog3.add(labelf3);dialog3.add(button3);dialog3.setResizable(false);//设置用户不可以改变窗口大小Container c=myWindow.getContentPane();c.setLayout(new BorderLayout()); //设置边界布局label1=new JLabel("输入姓名",JLabel.CENTER); //设置标签1,垂直居中label2=new JLabel("输入密码",JLabel.CENTER); //设置标签2,垂直居中 textfield1=new JTextField(12); //设置文本框textfield2=new JPasswordField(12); //设置密码文本框textarea=new JTextArea(10,10); //设置文本域textarea.setLineWrap(true);//设置文本区的边界处自动换行textarea.setWrapStyleWord(true);//设置文本区在文字的边界处自动换行panel1=new JPanel();//设置面板panel2=new JPanel();panel1.add(label1);panel1.add(textfield1);panel2.add(label2);panel2.add(textfield2);JScrollPane panel3=new JScrollPane(textarea);//给文本域添加滑动条 JSplitPane sp1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,panel1,panel2);JSplitPane sp2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,sp1,panel3);sp1.setDividerLocation(250);//设置分隔板最初显示的位置c.add(sp2,BorderLayout.CENTER);myEvent();//添加事件处理myWindow.setVisible(true);//设置窗口可见}public void myEvent(){button1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e2){dialog1.dispose();//关闭对话框}});dialog1.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){dialog1.dispose();//关闭对话框}});button2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e2){dialog2.dispose();//关闭对话框}});dialog2.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){dialog2.dispose();//关闭对话框}});button3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e2){dialog3.dispose();//关闭对话框}});dialog3.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){dialog3.dispose();//关闭对话框}});textfield2.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e1){if (e1.getKeyCode() == KeyEvent.VK_ENTER){//提示未输入姓名if((textfield1.getText()).equals(""))dialog1.setVisible(true);//提示重复输入的错误else if((textfield1.getText()).equals(nametext))dialog2.setVisible(true);//提示未输入密码的错误else if(String.valueOf(textfield2.getPassword()).equals(""))dialog3.setVisible(true);else{ nametext=textfield1.getText();//获取输入的姓名textarea.append("姓名:"+nametext);textarea.append(" ");//加10个空格来隔开姓名与密码//获取密码,注意:getPassword返回的是字符,不是字符串textarea.append("密码”+String.valueOf(textfield2.getPassword()));textarea.append("\r\n");//换行,以便下次操作}}}});}public static void main(String args[]) {Demo app=new Demo();app.init();}}运行的结果是:五、实验总结通过这次实验我学会了如何设计图形界面,我首先按照实验内容要求的界面来编写代码,发现标签、文本框与另一个之间分隔开的是分隔板,不是其他的。