




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北汽车工业学院程序技术基础实验报告姓名: 学号: 班级: 实验B01:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。三、实验内容1、如何从键盘输入年月日,然后显示出来 。package shiyan1;/1、如何从键盘输入年月日,然后显示出来 。public class Date private String year;private String month;private String day;public Date(String year, String month, String day) super();this.year = year;this.month = month;this.day = day;public String getYear() return year;public Date() super();public void setYear(String year) this.year = year;public String getMonth() return month;public void setMonth(String month) this.month = month;public String getDay() return day;public void setDay(String day) this.day = day;public void display() System.out.println(day + - + month + - + year);package shiyan1;import java.util.Scanner;public class DateTest public static void main(String args) Date date = new Date();String str;Scanner t=new Scanner(System.in);System.out.println(请输入年);date.setYear(str=t.next();System.out.println(请输入月);date.setMonth(str=t.next();System.out.println(请输入日);date.setDay(str=t.next();System.out.println(您输入的年月日为);System.out.println(date.getYear()+-+date.getMonth()+-+date.getDay();2、编写一个Java Application程序,输出区间100,300上的所有素数,并要求写出程序的运行结果。package shiyan1;public class SuShu public static void main(String args) int count = 0;for (int i = 100; i =300; i+) boolean flag = false;for (int j = 2; j i; j+) if (i % j = 0) flag = true;if (!flag) count+;System.out.print(i+ );System.out.println(素数共有: + count);四:心得体会实验B02:Java类与对象、继承与多态一、实验目的(1)掌握Java类的继承关系和派生方法。(2)理解多态的概念与使用。(3)掌握接口的定义和使用。(4)掌握Java类的定义和使用方法。(5)掌握对象的声明和使用。(6)构造函数的概念和使用。(7)掌握类及其成员的访问控制符的使用。(8)掌握包的概念和使用。二、实验任务(1)按要求编写三个Java程序。(2)按要求完善三个Java程序,编译、运行这个程序,并写出运行结果。三、实验内容假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:(1)经理(Manager)每月获得一份固定的工资(2)销售人员(Salesman)在基本工资的基础上每月还有销售提成。(3)一般工人(Worker)则按他每月工作的天数计算工资。根据上述要求试用类的继承和相关机制描述这些功能,并编写一个Java Application程序,演示这些类的用法。(提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法ComputeSalary( ),使得可以通过这个类计算所有雇员的工资。经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。)1、 题目3和4 的继承有何不同2、 指出实训题目中抽象类和抽象方法,写出自己对抽象类和抽象方法的理解。完善上课ppt中的相关抽象类的例题。3、 对练习5加一个问题:总经理的工资=3*(经理工资+销售人员工资+普通工人工资),如何实现。4、 说明super和this关键字的理解,如果去掉this和super如何改写程序。package shiyan2;abstract class Employeeprivate String name;public Employee(String name)=name;public String getName()return name;public abstract double computeSalary();package shiyan2; class EmployeeDemo public static void main(String args)Manager e1=new Manager(张三,10000);Salesman e2=new Salesman(李四,2000,50.4,63);Worker e3=new Worker(王五,79.5,28);ZongManager e4 = new ZongManager(刘六);System.out.println(经理+e1.getName()+的月工资为:+puteSalary();System.out.println(销售人员+e2.getName()+的月工资为:+puteSalary();System.out.println(工人+e3.getName()+的月工资为:+puteSalary();System.out.println(总经理+e4.getName()+的月工资为:+(puteSalary()+puteSalary()+puteSalary();package shiyan2;class Manager extends Employeeprivate double monthSalary;public Manager(String name,double monthSalary)super(name);this.monthSalary=monthSalary;public double computeSalary()return monthSalary;package shiyan2;class Salesman extends Employeeprivate double baseSalary;private double commision;private int qualtities;public Salesman(String name,double baseSalary,double commision,int qualtities)super(name);this.baseSalary=baseSalary;mision=commision;this.qualtities=qualtities;public double computeSalary()return baseSalary+commision*qualtities;package shiyan2;class Worker extends Employeeprivate double dailySalary;private int days;public Worker(String name,double dailySalary,int days)super(name);this.dailySalary=dailySalary;this.days=days;public double computeSalary()return dailySalary*days;package shiyan2;public class ZongManager extends Employeepublic ZongManager(String name) super(name);public double computeSalary() return 0;四:心得体会实验B03: 顺序表的操作实验一、实验目的1掌握线性表的顺序存储结构的表示和实现方法。2掌握顺序表基本操作的算法实现。3了解顺序表的应用。二、实验内容1建立顺序表。2在顺序表上实现插入、删除和查找操作(验证性内容)。3删除有序顺序表中的重复元素(设计性内容)。4完成一个简单学生成绩管理系统的设计(应用性设计内容)。四、设计性实验编程实现删除有序顺序表中的所有重复元素,即使有序顺序表中相同的元素只保留一个。1. 实验要求 根据输入的n个非递减的有序数据建立一个有序顺序表,并输出有序顺序表中各元素值。 删除有序顺序表中所有的重复元素,并显示删除后的有序顺序表中各元素值。1package shiyan3;public class SY3_SqList public Object listElem; / 线性表存储空间public int curLen; / 当前长度/ 顺序表的构造函数,构造一个存储空间容量为maxSize的线性表public SX3_SqList(int maxSize) curLen = 0; / 置顺序表的当前长度为0listElem = new ObjectmaxSize;/ 为顺序表分配maxSize个存储单元/ 在线性表的第i个数据元素之前插入一个值为x的数据元素。其中i取值范围为:0ilength()。如果i值不在此范围则抛出异常,当i=0时表示在表头插入一个数据元素x,当i=length()时表示在表尾插入一个数据元素xpublic void insert(int i, Object x) throws Exception if (curLen = listElem.length) / 判断顺序表是否已满throw new Exception(顺序表已满);/ 输出异常if (i curLen) / i小于0或者大于表长throw new Exception(插入位置不合理);/ 输出异常for (int j = curLen; j i; j-)listElemj = listElemj - 1;/ 插入位置及之后的元素后移listElemi = x; / 插入xcurLen+;/ 表长度增1/ 将线性表中第i个数据元素删除。其中i取值范围为:0ilength()- 1,如果i值不在此范围则抛出异常public void remove(int i) throws Exception if (i curLen - 1) / i小于1或者大于表长减1throw new Exception(删除位置不合理);/ 输出异常for (int j = i; j curLen - 1; j+)listElemj = listElemj + 1;/ 被删除元素之后的元素左移curLen-; / 表长度减1/ 输出线性表中的数据元素public void display() for (int j = 0; j curLen; j+)System.out.print(listElemj + );System.out.println();/ 换行2package shiyan3;import java.util.Scanner;public class SY3_Test public static void main(String args) throws Exception SX3_SqList L = new SY3_SqList(20);Scanner sc = new Scanner(System.in);System.out.println(请输入顺序表的长度:);L.curLen = sc.nextInt();System.out.println(请输入顺序表中的各个数据元素:);for (int i = 0; i L.curLen; i+)L.listElemi = sc.nextInt();System.out.println(请输入待插入的位置i:);int i = new Scanner(System.in).nextInt();System.out.println(请输入待插入的数据值x:);int x = sc.nextInt();L.insert(i, x);System.out.println(插入后的顺序表为:);L.display();System.out.println(请输入待删除元素的位置:);i = new Scanner(System.in).nextInt();L.remove(i);System.out.println(删除后的顺序表为:);L.display();五:心得体会 实验B04: 链表的操作实验一、实验目的1掌握线性表的链式存储结构的表示和实现方法。2掌握链表基本操作的算法实现。二、实验内容1建立单链表,并在单链表上实现插入、删除和查找操作(验证性内容)。2建立双向链表,并在双向链表上实现插入、删除和查找操作(设计性内容)。3计算已知一个单链表中数据域值为一个指定值x的结点个数(应用性设计内容)。三、设计性实验编程实现在双向循环链表上的插入和删除操作1 实验要求(1)输入链表的长度和各元素的值,用尾插法建立双向循环链表,并输出链表中各元素值,观察输入的内容与输出的内容是否一致。(2)在双向循环链表的第i个元素之前插入一个值为x的元素,并输出插入后的链表中各元素值。(3)删除双向循环链表中第i个元素,并输出删除后的链表中各元素值。(4)在双向循环链表中查找值为x元素,如果查找成功,则显示该元素在链表中的位序号,否则显示该元素不存在。1package shiyan4;import java.util.Scanner;public class DuCircleLinkList private DuLNode head;/ 双向循环链表的头结点/ 构造函数:构造一个只含头结点的空双向循环链表public DuCircleLinkList() Object x = null;head = new DuLNode(x); / 初始化头结点head.setPrior(head);/ 初始化头结点的前驱和后继head.setNext(head); / 根据输入的一系列整数,以0标志结束,用尾插法建立单链表 public void creat() throws Exception Scanner sc = new Scanner(System.in); / 构造用于输入的对象 for (int x=sc.nextInt(); x!=0; x=sc.nextInt() / 输入若干个数据元素的值(以0结束)insert(0, x);/ 生成新结点,插入到表尾 /返回带头结点的循环链表中第i个结点的数据域的值。其中:0icurLen-1 public Object get(int i) throws Exception DuLNode p = head.getNext();/ 初始化,p指向首结点,j为计数器 int j = 0;while (p!= head & j i | p = head) / i小于0或者大于表长减1throw new Exception(第 + i + 个元素不存在);/ 抛出异常return p.getData(); / 返回结点p的数据域的值 / 输出线性表中的数据元素public void display() DuLNode p = head.getNext();/ 取出带头结点的单链表中的首结点元素while (p!= head) System.out.print(p.getData() + );/ 输出数据元素的值p = p.getNext();/ 取下一个结点System.out.println();/ 换行/在当前带头结点的双向循环链表上的插入操作的算法public void insert(int i, Object x) throws Exception /DuLNode p = head.getNext();/ 初始化,p指向首结点,j为计数器DuLNode p = head.getPrior();/ 初始化,p指向首结点,j为计数器int j = 0;while (!p.equals(head) & j i) / 确定插入位置i/p = p.getNext();/ 指向后继结点p = p.getPrior();/ 指向后继结点+j;/ 计数器的值增1if (j !=i ) / i小于0或者大于表长throw new Exception(插入位置不合理);/ 输出异常DuLNode s = new DuLNode(x);/ 生成新结点sp.getNext().setPrior(s);/将结点s插入到p结点的前面s.setNext(p.getNext();s.setPrior(p);p.setNext(s);/在当前带头结点的双向循环链表上的删除操作算法void remove(int i) throws Exception DuLNode p = head.getNext();/ 初始化,p指向首节点结点,j为计数器int j = 0;while (!p.equals(head) & j i) / 确定删除位置ip = p.getNext();/ 指向后继结点+j;/ 计数器的值增1if (j != i|p.equals(head) / i小于0或者大于表长减1throw new Exception(删除位置不合理);/ 输出异常p.getPrior().setNext(p.getNext();p.getNext().setPrior(p.getPrior();/在带头结点的双向循环链表上的查找操作算法int indexOf(Object x) DuLNode p = head.getNext();/ 初始化,p指向首结点,j为计数器int j = 0;while (!p.equals(head) & !p.getData().equals(x) / 从链表中的首结点元素开始查找,直到p.getData()指向元素x或到达链表的表尾p = p.getNext();/ 指向下一个元素+j;/ 计数器的值增1if (!p.equals(head)/ 如果p指向表中的某一元素return j;/ 返回x元素在双向循环链表中的位置elsereturn -1;/ x元素不在双向循环链表中2package shiyan4;public class DuLNode private Object data;/ 存放结点值 private DuLNode prior; / 前驱结点的引用 private DuLNode next; / 后继结点的引用public Object getData() return data;public void setData(Object data) this.data = data;public DuLNode getPrior() return prior;public DuLNode(Object data, DuLNode prior, DuLNode next) this.data = data;this.prior = prior;this.next = next;public void setPrior(DuLNode prior) this.prior = prior;public DuLNode(Object data) this.data=data;prior=next=null;public DuLNode getNext() return next;public void setNext(DuLNode next) this.next = next;3package shiyan4;import java.util.Scanner;public class SY4_Test public static void main(String args) throws Exception Scanner sc=new Scanner(System.in); DuCircleLinkList L=new DuCircleLinkList(); System.out.println(请输入链表中的各个数据元素(0为结束):); L.creat(); System.out.println(建立的循环链表为:); L.display(); System.out.println(请输入待插入的位置i(0curLen):); int i=sc.nextInt(); System.out.println(请输入待插入的数据值x:); int x= sc.nextInt(); L.insert(i, x); System.out.println(插入后的链表为:); L.display(); System.out.println(请输入待删除元素的位置(0curLen-1):); i=sc.nextInt(); L.remove(i); System.out.println(删除后的链表为:); L.display(); System.out.println(请输入待查找的数据元素的位序号(0curLen-1):); i=sc.nextInt(); Object o=L.get(i); System.out.println(此循环链表中第+i+个结点的数据元素值为+o); 五:心得体会实验B05: 栈的操作实验一、实验目的1掌握栈的存储结构的表示和实现方法。2掌握栈的入栈和出栈等基本操作算法实现。3了解栈在解决实际问题中的简单应用。二、实验内容1建立顺序栈,并在顺序栈上实现入栈和出栈操作(验证性内容)。2建立链栈,并在链栈上实现入栈和出栈操作(设计性内容)。3实现汉诺(Hanoi)塔求解问题(应用性设计内容)。三、设计性实验编程实现链栈的入栈和出栈操作。1实验要求(1)根据输入的栈中元素个数和各元素值建立一个链栈,并输出链栈中各元素值, 观察输入的内容与输出的内容是否一致,特别注意栈顶元素的位置。(2)将数据元素e入栈,并输出入栈后的链栈中各元素值。(3)将链栈中的栈顶元素出栈,并输入出栈元素的值和出栈后链栈中各元素值。1package shiyan5;public class Node private Object data; / 存放结点值private Node next; / 后继结点的引用public Node(Object e) this.data=e;public Object getData() return data;public void setData(Object data) this.data = data;public Node getNext() return next;public void setNext(Node next) this.next = next;2package shiyan5;public class SqStack private Object stackElem; /对象数组private Node top; /当栈非空时,top始终指向栈顶元素的下一个存储位置;当栈为空时,top值为0/ 栈的构造函数,构造一个存储空间容量为maxSize的栈public SqStack(int maxSize) top = null; / 初始化top为0stackElem = new ObjectmaxSize;/ 为栈分配maxSize个存储单元/ 在当前链栈上的入栈操作算法public void push(Object e) Node p = new Node(e); / 构造一个值为e新结点pp.setNext(top); / 将p插入到链栈的栈顶top = p;/ 在当前链栈上的出栈操作算法public Object pop() if (top = null) / 如果栈空return null;else Node p = top; / p指向待删的栈顶元素top = top.getNext(); / 删除栈顶元素return p.getData(); / 返回被删的栈顶元素的数据值 public void insert(int i, Object x) throws Exception int j = -1;while (top != null & j i - 1 | top = null) / i不合法throw new Exception(插入位置不合理);/ 输出异常Node s = new Node(x); / 生成新结点s.setNext(top.getNext();/ 插入单链表中top.setNext(s);public void remove(int i) throws Exception Node p = top;/ 初始化p为头结点,j为计数器int j = -1;while (p.getNext() != null & j i - 1 | p.getNext() = null) / i小于0或者大于表长减1throw new Exception(删除位置不合理);/ 输出异常p.setNext(p.getNext().getNext();/ 删除结点public void display() Node p = top.getNext();/ 取出带头结点的链栈表中的首结点元素while (p != null) System.out.print(p.getData() + );/ 输出数据元素的值p = p.getNext();/ 取下一个结点System.out.println();/ 换行3package shiyan5;import java.util.Scanner;public class SY5_SqStack public static void main(String args) throws Exception SqStack S = new SqStack(100); / 初始化一个新的容量为100的顺序栈 Scanner sc=new Scanner(System.in); System.out.print(请输入顺序栈的长度:); int n=sc.nextInt(); System.out.println(请输入顺序栈中的各个数据元素值:); for(int i=0;i 0) / 先根和中根非空char r = preOrder.charAt(preIndex);/ 取先根字符串中的第一个元素作为根结点int i = 0;for (; i count; i+)/ 寻找根结点在中根遍历字符串中的索引if (r = inOrder.charAt(i + inIndex)break;root = new BiTreeNode(r);/ 建立树的根结点root.setLchild(creatBiTree(preOrder, inOrder, preIndex + 1,inIndex, i);/ 建立树的左子树root.setRchild(creatBiTree(preOrder, inOrder, preIndex + i + 1,inIndex + i + 1, count - i - 1); / 建立树的右子树return root;public static boolean isEqual_pre(BiTreeNode T1, BiTreeNode T2) if (T1 = null & T2 = null)return true;if (T1 != null & T2 != null)if (T1.getData().equals(T2.getData()if (isEqual_pre(T1.getLchild(), T2.getLchild()if (isEqual_pre(T1.getRchild(), T2.getRchild()return true;return false;/ 用中根遍历方法判断两棵二叉树是否相等的算法public static boolean isEqual_in(BiTreeNode T1, BiTreeNode T2) if (T1 = null & T2 = null)return true;if (T1 != null & T2 != null)if (isEqual_in(T1.getLchild(), T2.getLchild()if (T1.getData().equals(T2.getData()if (isEqual_in(T1.getRchild(), T2.getRchild()return true;return false;public static boolean isEqual_post(BiTreeNode T1, BiTreeNode T2) if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025汽车销售聘用合同
- 代驾服务与保险理赔一体化合同
- 2025咨询服务合同范本
- 2025《综合项目管理咨询合同》
- 2025年新材料产业技术突破与市场应用前景研究报告
- 2025上海合作购房合同
- 2025年电子游戏行业电竞产业链与电竞赛事市场研究报告
- 水果皮渣环保建材创新创业项目商业计划书
- 小龙虾标准化养殖创新创业项目商业计划书
- 数码维修节目创新创业项目商业计划书
- 2025年全国企业员工全面质量管理知识竞赛题及参考答案
- 带状疱疹及带状疱疹后神经痛
- 2022年毕节市农业发展集团有限公司招聘笔试试题及答案解析
- 状态-特质焦虑问卷STAI
- hsp运营高感训练家长手册
- 中药鉴定学习题集全
- 罐车司机培训试题含答案
- 110KV线路断路器控制回路
- 行业资料3东广场地热井招标文件
- 中学“全员德育导师制”实施方案报告书
- 移动加权平均法自动计算表
评论
0/150
提交评论