山东科技大学-Java数据结构实验六
- 格式:docx
- 大小:68.44 KB
- 文档页数:7
. 1 / 9 期中考试: 二、 package Exextra_2; import java.util.*; publicclass Test { publicstaticvoid main { int[] a=newint[10]; Scanner scan=new Scanner; for{ a[i]=scan.nextInt<>; } int max=a[0]; int min=a[0]; for{ ifmax> max=a[i]; } for{ if min=a[i]; } System.out.println<"max="+max+" min="+min>; } } 三、 package Exextra_3; publicclass Point { privateintx,y; privatedoubles; public Point<>{ } public Point{ this.x=x; this.y=y; } publicint getX<>{ returnx; } publicvoid setX{ this.x=x; } publicint getY<>{ returny; } . 2 / 9 publicvoid setY{ this.y=y; } public String toString<>{ return"<"+x+","+y+">"; } publicdouble distance{ int x1=p1.getX<>;int y1=p1.getY<>; int x2=p2.getX<>;int y2=p2.getY<>; s=Math.sqrt<*+*>; returns; } } package Exextra_3; publicclass Test { publicstaticvoid main { Point p1=new Point<4,5>; Point p2=new Point<2,1>; double s=p2.distance; System.out.println>; System.out.println>; System.out.println; } } 四、 package Exextra_4; publicinterface Shape{ publicabstractdouble area<>; } package Exextra_4; publicclass MyCircle implements Shape{ privatedoubler; public MyCircle{ this.r=r; } publicdouble area<>{ return Math.PI*r*r; } public String toString<>{ return"circle: r="+r+" area="+this.area<>; } } package Exextra_4; publicclass MyRectangle implements Shape { . 3 / 9 privatedoublew,h; public MyRectangle{ this.w=w; this.h=h; } publicdouble area<>{ returnw*h; } public String toString<>{ return"Rectangle: width="+w+" "+"height="+h+" area="+this.area<>; } } package Exextra_4; publicclass Test { publicstaticvoid main { Shape t1=new MyRectangle<10,5>; System.out.println>; Shape t2=new MyCircle<3>; System.out.println>; } } 五、 package Exextra_5; import javax.swing.*; import java.awt.*; import java.awt.event.*; publicclassMyFrmextends JFrame implements ActionListener{ intm=0; JButton btn1=new JButton<"点我">; JButton btn2=new JButton<"清零">; JLabel lb=new JLabel<"共点击了0次">; public MyFrm<>{ JPanel jp=this.getContentPane<>; jp.setLayout>; jp.add;jp.add;jp.add; btn1.addActionListener; btn2.addActionListener; this.setTitle<"ButtonDemol">; } publicvoid actionPerformed{ if==btn1>{ m=m+1; lb.setText<"共点击了"+m+"次">; } . 4 / 9 if==btn2>{ m=0; lb.setText<"共点击了"+m+"次">; } } publicstaticvoid main{ MyFrm frm=new MyFrm<>; frm.setSize<400,100>; frm.setVisible; } } 数据库调试: package mydb; import java.sql.*; publicclass StudentDao { private String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; private String url = "jdbc:odbc:mydb"; privatevoid executeUpdate { try { Class.forName; Connection con = DriverManager.getConnection; Statement cmd = con.createStatement<>; cmd.executeUpdate; con.close<>; } catch { ex.printStackTrace<>; } } publicvoid addStudent { String sql = "insert into student values<'" + sno + "','" + sname+ "','" + major + "'," + zg + ">"; executeUpdate; } publicvoid deleteStudentBySno { String sql = "delete from student where sno='" + sno + "'"; executeUpdate; } public String[][] queryStudents<> { String[][] rows = null; try { Class.forName; Connection con = DriverManager.getConnection; Statement cmd = con.createStatement<>; String sql = "select count<*> from student"; . 5 / 9 ResultSet rs = cmd.executeQuery; rs.next<>; int rowcount = rs.getInt<1>; rows = new String[rowcount][4]; sql = "select * from student"; rs = cmd.executeQuery; rowcount = 0; while > { for rows[rowcount][i - 1] = rs.getString; rowcount++; } con.close<>; } catch { ex.printStackTrace<>; } return rows; } } package mydb; import javax.swing.*; importjava.awt.*; import java.awt.event.*; publicclassMainFrmextends JFrame { privatevoid initMenu<> { JMenuBar bar = new JMenuBar<>; JMenu m1 = new JMenu<"学生管理">; JMenu m2 = new JMenu<"课程管理">; JMenuItem m11 = new JMenuItem<"学生信息管理">; JMenuItem m12 = new JMenuItem<"增加学生">; JMenuItem m13 = new JMenuItem<"退出">; m13.addActionListener{ publicvoid actionPerformed { exit_Clicked<>; } }>; m11.addActionListener { publicvoid actionPerformed { newSubFrm_Clicked<>; } }>; m12.addActionListener { publicvoid actionPerformed { newAddFrm_Clicked<>;
山东大学计算机科学与技术学院数据结构课程实验报告了Input函数和Output函数。
对问题三,仿课本所述,定义Term类作为SparseMatrix类的友元类,包含行、列、值三个要素的成员变量,用Term类的数组实现稀疏矩阵的行主映射存储。
查找行为的实现方式是,找到位于目标元素前一行的最后一个元素,再从这个元素开始向下搜索,直到找到和目标元素同一行但是列数小于目标元素的元素a[k-1],然后决定下一步的行为————插入一个新项Term作为a[k]并将已有元素向后移位,还是修改已存在的项a[k]。
以此原理编写了Store和Retrieve函数,并扩展编写了Input函数和Output函数。
对问题四,仿照课本例子编写了有序链表类SortedChain、开放寻址的散列表类HashTable、基于有序链表链接的散列表类ChainHashTable,并对这三个类分别扩展编写了Output函数。
3.测试结果(测试输入,测试输出)问题一:问题二:上图显示了输入不符合下三角方阵约束时,抛出异常并退出程序。
上图是正常运行的结果。
问题三:普通的输入和输出操作如下:矩阵相加:矩阵转置:问题四:以上图的数据为例。
从346就应该在链表链接的散列表上看到开放寻址解决冲突的例子。
返回开放寻址的输出段,可以看到符合预期的结果:4.实现源代码(程序风格清晰易理解,有充分的注释)/** TridiagonalMatrix.h** Created on: Nov 22, 2015* Author: xudp*/#ifndef TRIDIAGONALMATRIX_H_#define TRIDIAGONALMATRIX_H_#include<iostream>using namespace std;template<class T>class TridiagonalMatrix {public:// 1、创建三对角矩阵类,采用按列映射方式,提供 store 和 retrieve 方法。
数据结构实验指导书(JAVA版)实验一、单链表的基本操作一、实验目的1、掌握线性链表的操作特点,即指针是逻辑关系的映像。
2、掌握动态产生单链表的方法。
3、熟练掌握单链表的插入、删除操作特点,即指针赋值的先后次序。
4、熟练掌握单链表的取元素操作二、实验内容1、定义单链表类型并动态创建单链表;2、实现单链表的取元素操作、插入操作和删除操作;3、实现输出单链表中各元素值的操作;4、将单链表中的最小元素移到最前面。
三、实验环境eclipse环境四、实验步骤1、定义单链表节点类;2、定义单链表类,并实现单链表的创建、插入、删除、取元素操作和将单链表中的最小元素移到最前面的操作;3、从键盘上依次输入21、75、30、18、42、56,顺序或逆序创建单链表,并输出单链表中的各元素值;5、分别在单链表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出单链表中的各元素值;6、删除单链表中的第6个数据元素和第8个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值;7、取单链表中的第5个数据元素和第7个数据元素;8、将单链表中的最小元素移到最前面,并输出单链表中的各元素以检查操作是否正确实现。
五、问题讨论1、单链表具有什么优缺点?2、单链表的定义与顺序表的定义有什么区别?3、逆序创建单链表有什么好处?六、实验报告内容1、实验目的2、实验内容和具体要求3、完成情况和实验记录,实验记录为实验过程中遇到的问题及解决方法4、程序清单5、所输入的数据及相应的运行结果6、问题讨论回答7、实验心得实验二、二叉树的遍历和二叉查找树一、实验目的1、掌握二叉树的特点及其存储方式;2、掌握二叉树的创建;3、掌握二叉树前序、中序、后序遍历的基本方法及应用;4、掌握二叉查找树的特点;5、掌握二叉查找树查找(包含contain)、插入和删除操作的实现。
二、实验内容1、用前序方法建立一棵二叉树;2、实现前序、中序和后序遍历二叉树的操作;3、实现统计二叉树叶子结点个数或计算二叉树深度的操作;4、将输入的一组数据逐个插入实现创建二叉查找树;5、用非递归实现二叉查找树的查找和删除操作。
数据结构(Java版)习题解答与实验指导目录第1章绪论 (1)1.1 数据结构的基本概念 (1)1.2 算法 (2)第2章线性表 (3)2.1 线性表抽象数据类型 (3)2.2 线性表的顺序存储和实现 (4)2.2.1 线性表的顺序存储结构 (4)2.2.2 顺序表 (5)2.2.3 排序顺序表 (7)2.3 线性表的链式存储和实现 (9)2.3.1 单链表 (9)【习题2-8】单链表结点类问题讨论。
(10)【习2.1】使用单链表求解Josephus环问题。
(12)【习2.2】集合并运算,单链表深拷贝的应用。
(14)2.3.2 双链表 (16)【习2.3】循环双链表的迭代方法。
(19)【习2.4】循环双链表合并连接。
(20)第3章串 (21)3.1 串抽象数据类型 (21)3.2 串的存储和实现 (22)3.2.1 串的存储结构 (22)3.2.2 常量字符串类 (22)【习3.1】 C/C++语言,string.h中的strcpy()和strcat()函数存在下标越界错误。
(22)【思考题3-1】逆转String串,分析算法效率。
(24)【实验题3-1】MyString类,比较串大小,忽略字母大小写。
25【例3.2思考题3-2】MyInteger整数类,返回value的radix进制原码字符串。
(26)【实验题3-9】浮点数类。
(28)3.2.3 变量字符串类 (30)【实验题3-11】删除变量串中的所有空格。
4-样卷· 303.3 串的模式匹配 (32)3.3.1 Brute-Force模式匹配算法 (32)3.3.2 模式匹配应用 (32)【思考题3-4,实验题3-13】MyString类,replaceAll(pattern,s)改错。
(32)3.3.3 KMP模式匹配算法 (33)第4章栈和队列 (37)4.1 栈 (37)4.2 队列 (39)4.3 递归 (42)【习4.1】打印数字塔。
实验六Java 数据库技术学号:1142826131姓名:赵峰1.实验时间和地点时间:第十周周一,三第3节至第4节地点:南徐学院机房四2.实验内容1、安装并配置MySQL数据库,创建数据库student,在其中创建数据表stuinfo,包括stuid,stuname,math,english,history 五个字段, 类型分别为b5E2RGbCAP字符串型、字符串型、double 、double 、double, 并输入初始数据;2、在Access 中建立student 库和stuinfo 表, 内容同上;3、利用Java对MySQL和Access数据库中地stuinfo 表进行查询、插入、删除和更新操作;4、设计一个地联系簿管理系统, 联系簿包括联系人名、手机号码、联系人单位、联系人电邮、联系人住址等信息.通过联系簿管理系统,用户可以:p1EanqFDPw4.1新增联系人;4.2更新联系人;4.3删除联系人;4.4查询联系人;3.实验源程序import java.sql.*publicclass mysqlDelete {publicstaticvoid mai n(Stri ng[] args> throws SQLException { DXDiTa9E3d//此处不通过数据源连接数据库,直接通过数据库路径进行连接Stri ng dburl = "jdbc:mysql://localhost:3306/stude nt" 。
RTCrpUDGiTConn ecti on conn = null 。
PreparedStateme nt stmt = null 。
ResultSet rs = null 。
//定义删除关键字String delete_stuid = "104"。
try {Class. forName ("com.mysql.jdbc.Driver" >。
期中考试:二、package Exextra_2;import java.util.*;public class Test {public static void main(String[] args) {int[] a=new int[10];Scanner scan=new Scanner(System.in);for(int i=0;i<10;i++){a[i]=scan.nextInt();}int max=a[0];int min=a[0];for(int i=0;i<10;i++){if(a[i]>max)max=a[i];}for(int i=0;i<10;i++){if(a[i]<min)min=a[i];}System.out.println("max="+max+" min="+min);}}三、package Exextra_3;public class Point {private int x,y;private double s;public Point(){}public Point(int x,int y){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 String toString(){return"("+x+","+y+")";}public double distance(Point p1,Point p2){int x1=p1.getX();int y1=p1.getY();int x2=p2.getX();int y2=p2.getY();s=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));return s;}}package Exextra_3;public class Test {public static void main(String[] args) {Point p1=new Point(4,5);Point p2=new Point(2,1);double s=p2.distance(p1,p2);System.out.println(p1.toString());System.out.println(p2.toString());System.out.println(s);}}四、package Exextra_4;public interface Shape{public abstract double area();}package Exextra_4;public class MyCircle implements Shape{private double r;public MyCircle(double r){this.r=r;}public double area(){return Math.PI*r*r;精选文库}public String toString(){return"circle: r="+r+" area="+this.area();}}package Exextra_4;public class MyRectangle implements Shape {private double w,h;public MyRectangle(double w,double h){this.w=w;this.h=h;}public double area(){return w*h;}public String toString(){return"Rectangle: width="+w+" "+"height="+h+" area="+this.area();}}package Exextra_4;public class Test {public static void main(String[] args) {Shape t1=new MyRectangle(10,5);System.out.println(t1.toString());Shape t2=new MyCircle(3);System.out.println(t2.toString());}}五、package Exextra_5;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyFrm extends JFrame implements ActionListener{ int m=0;JButton btn1=new JButton("点我");JButton btn2=new JButton("清零");JLabel lb=new JLabel("共点击了0次");public MyFrm(){JPanel jp=(JPanel)this.getContentPane();jp.setLayout(new FlowLayout());精选文库jp.add(btn1);jp.add(btn2);jp.add(lb);btn1.addActionListener(this);btn2.addActionListener(this);this.setTitle("ButtonDemol");}public void actionPerformed(ActionEvent e){if(e.getSource()==btn1){m=m+1;lb.setText("共点击了"+m+"次");}if(e.getSource()==btn2){m=0;lb.setText("共点击了"+m+"次");}}public static void main(String[] args){MyFrm frm=new MyFrm();frm.setSize(400,100);frm.setVisible(true);}}数据库调试:package mydb;import java.sql.*;public class StudentDao {private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";private String url = "jdbc:odbc:mydb";private void executeUpdate(String sql) {try {Class.forName(driver);Connection con = DriverManager.getConnection(url);Statement cmd = con.createStatement();cmd.executeUpdate(sql);con.close();} catch (Exception ex) {ex.printStackTrace();}}public void addStudent(String sno, String sname, String major, int zg) {String sql = "insert into student values('" + sno + "','" + sname+ "','" + major + "'," + zg + ")";executeUpdate(sql);}public void deleteStudentBySno(String sno) {String sql = "delete from student where sno='" + sno + "'";executeUpdate(sql);}public String[][] queryStudents() {String[][] rows = null;try {Class.forName(driver);Connection con = DriverManager.getConnection(url);Statement cmd = con.createStatement();String sql = "select count(*) from student";ResultSet rs = cmd.executeQuery(sql);rs.next();int rowcount = rs.getInt(1);rows = new String[rowcount][4];sql = "select * from student";rs = cmd.executeQuery(sql);rowcount = 0;while (rs.next()) {for (int i = 1; i <= 4; i++)rows[rowcount][i - 1] = rs.getString(i);rowcount++;}con.close();} catch (Exception ex) {ex.printStackTrace();}return rows;}}package mydb;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MainFrm extends JFrame {private void initMenu() {JMenuBar bar = new JMenuBar();JMenu m1 = new JMenu("学生管理");JMenu m2 = new JMenu("课程管理");JMenuItem m11 = new JMenuItem("学生信息管理");JMenuItem m12 = new JMenuItem("增加学生");JMenuItem m13 = new JMenuItem("退出");m13.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {exit_Clicked();}});m11.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {newSubFrm_Clicked();}});m12.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {newAddFrm_Clicked();}});m1.add(m11);m1.add(m12);m1.addSeparator();m1.add(m13);bar.add(m1);bar.add(m2);this.setJMenuBar(bar);}private void newSubFrm_Clicked() {new StudentFrm();}private void newAddFrm_Clicked() {new AddStudent();}private void exit_Clicked() {if(JOptionPane.showConfirmDialog(this, "确认退出?", "退出系统",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION)System.exit(0);}public MainFrm() {JPanel jp = (JPanel) this.getContentPane();initMenu();this.setSize(1000, 600);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) {new MainFrm();}}package mydb;import javax.swing.*;import javax.swing.table.DefaultTableModel;import java.awt.*;import java.awt.event.*;public class StudentFrm extends JFrame {private JTable table = null;private String[] cols = { "学号", "姓名", "专业", "是否有资格" };private JButton deleteBtn = new JButton("删除");private StudentDao studentDao = new StudentDao();private void initTable() {String[][] rows = studentDao.queryStudents();for (int i = 0; i < rows.length; i++)if ("0".equals(rows[i][3]))rows[i][3] = "有资格";elserows[i][3] = "无资格";table = new JTable(rows, cols);}private void updateTable() {String[][] rows = studentDao.queryStudents();for (int i = 0; i < rows.length; i++)if ("0".equals(rows[i][3]))rows[i][3] = "有资格";elserows[i][3] = "无资格";table.setModel(new DefaultTableModel(rows, cols));}private boolean isCellEditable(int row,int col){return true;}private void deleteBtn_Clicked() {int row = table.getSelectedRow();if (row > -1) {String sno = (String) table.getValueAt(row, 0);studentDao.deleteStudentBySno(sno);JOptionPane.showMessageDialog(this, "学号为" + sno + "记录删除成功!");updateTable();}}public StudentFrm() {JPanel jp = (JPanel) this.getContentPane();initTable();JScrollPane jsp_table = new JScrollPane(table);jp.add(jsp_table);JPanel jp_top = new JPanel();jp_top.add(deleteBtn);jp.add(jp_top, BorderLayout.NORTH);deleteBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {deleteBtn_Clicked();}});this.setSize(600, 400);this.setVisible(true);}public static void main(String[] args) {new StudentFrm();}}package mydb;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class AddStudent extends JFrame implements ActionListener { StudentDao studentDao = new StudentDao();JButton btn_add=new JButton("确定");JButton btn_del=new JButton("取消");JLabel lb_name=new JLabel("姓名");JLabel lb_snum=new JLabel("学号");JLabel lb_enabled=new JLabel("是否有资格选课");JLabel lb_major=new JLabel("专业");JTextField txt_name=new JTextField();JTextField txt_snum=new JTextField();JTextField txt_enabled=new JTextField();JTextField txt_major=new JTextField();public AddStudent(){JPanel jp=(JPanel)this.getContentPane();JPanel jp1=new JPanel();jp1.setLayout(new GridLayout(5,2,5,10));jp1.add(lb_snum);jp1.add(txt_snum);jp1.add(lb_name);jp1.add(txt_name);jp1.add(lb_major);jp1.add(txt_major);jp1.add(lb_enabled);jp1.add(txt_enabled);jp1.add(btn_add);jp1.add(btn_del);jp.add(jp1,BorderLayout.NORTH);btn_add.addActionListener(this);btn_del.addActionListener(this);this.setSize(400, 220);this.setVisible(true);}public void actionPerformed(ActionEvent e){int zg=0;if(e.getSource()==btn_add){if(txt_snum.getText().equals("是"))zg=1;studentDao.addStudent(txt_snum.getText(),txt_name.getText(),txt_majo r.getText(),zg);dispose();}if(e.getSource()==btn_del){dispose();}}public static void main(String[] args){new AddStudent();}}。
算法与数据结构实验报告实验六实验名称:图的应用姓名:卢丽娟学号:211006289专业:软件工程班级:二班指导教师:陈亦萍日期: 2012年6月2日一、实验目的本实验是要根据图的性质,利用图的应用,来求解海盗建造的最少费用二、实验内容与实验步骤实验内容:有N个海岛(标号为1~N)分散在一片的海域上,每个海岛之间没有联系。
对于任意2个岛,它们之间必须直接或间接可以到达。
使用最少的钱数,来完成对这些岛屿的连接。
实验步骤:定义一个Find函数,查找各个顶点在图中的位置int Find(int i)//查找顶点在图中的位置{//判断是否查找成功if(f[i] == i) return i; else { f[i] = Find( f[i] );return f[i];}}再在主函数中调用Find函数,实现对边的求最小权值int main(){ printf("输入顶点数和边数:\n");scanf("%d %d",&n,&m);int i;printf("输入边连接的两个顶点和边的权值:\n");for(i = 1; i <= m; i++) {scanf("%d%d%d",&g[i].s,&g[i].t,&g[i].v);//输入边依附的顶点及权值}sort(g+1,g+m+1);//将其按照升序排列for(i = 1; i <= m; i++) f[i] = i;report= cnt = 0;int cur = 1;for(i = 1; i <= m; i++){ int a = Find(g[i].s);//其在图中位置int b = Find(g[i].t);//其在图中位置if(a != b) {report+= g[i].v; f[a] = b;cnt++;} }//求最小costint sumcost = cnt == n-1? report:-1;printf("结果为:\n");printf("sumcost=%d\n",sumcost);printf("\n"); return 0;}三、实验环境操作系统winXP,开发平台Microsoft Visual C++6.0四、实验过程与分析在调试过程中出现很多错误,有些没有定义,还有就是变量没有设好,大小写问题也出现不少,多括号还有少括号,不然就是漏了分号等,很多细节的错误经过慢慢调试被改正。
实验报告
课程名称:
学院:
专业:班级:
姓名:学号:
年月日
山东科技大学教务处制
实验报告
页
测试数据如上图所示:
2、彩票
(1)文字分析和代码详情
利用hash表来实现代码,详细解释在注释中import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Testb {
/*构造一个方法getLuck*/
public static HashSet<Integer> getLuck() {
(2)测试的结果和显示
测试结果如上图所示:
3、保皇
(1)文字分析和代码详情
程序启动后生成5个玩家,并自动给他们发牌。
然后输出:1)皇帝和侍卫的名字及其手里的牌(每张牌输出为“花色”+“点数”,如红桃5,牌之间用“,”分割),并按照大王、小王、2、A、K、Q、J、10、9、8、7、6、5、4、3的顺序排列,相同点数但不同花色的牌要把相同花色的牌放在一起;2)那张作为侍卫所特有的牌(“花色”+“点数”)。
测试结果如上图所示:。
数据结构(Java版)习题解答与实验指导目录第1章绪论 (1)1.1 数据结构的基本概念 (1)1.2 算法 (2)第2章线性表 (4)2.1 线性表抽象数据类型 (4)2.2 线性表的顺序存储和实现 (5)2.2.1 线性表的顺序存储结构 (5)2.2.2 顺序表 (6)2.2.3 排序顺序表 (9)2.3 线性表的链式存储和实现 (12)2.3.1 单链表 (12)【习题2-8】单链表结点类问题讨论。
(13)【习2.1】使用单链表求解Josephus环问题。
(16)【习2.2】集合并运算,单链表深拷贝的应用。
(19)2.3.2 双链表 (21)【习2.3】循环双链表的迭代方法。
(25)【习2.4】循环双链表合并连接。
(26)第3章串 (27)3.2 串的存储和实现 (28)3.2.1 串的存储结构 (28)3.2.2 常量字符串类 (28)【习3.1】C/C++语言,string.h中的strcpy()和strcat()函数存在下标越界错误。
(28)【思考题3-1】逆转String串,分析算法效率。
(31)【实验题3-1】MyString类,比较串大小,忽略字母大小写。
32【例3.2思考题3-2】MyInteger整数类,返回value的radix进制原码字符串。
(34)【实验题3-9】浮点数类。
(36)3.2.3 变量字符串类 (39)【实验题3-11】删除变量串中的所有空格。
4-样卷 (39)3.3 串的模式匹配 (41)3.3.1 Brute-Force模式匹配算法 (41)3.3.2 模式匹配应用 (42)【思考题3-4,实验题3-13】MyString类,replaceAll(pattern,s)改错。
(42)3.3.3 KMP模式匹配算法 (43)第4章栈和队列 (47)4.1 栈 (47)4.2 队列 (49)4.3 递归 (53)【习4.1】打印数字塔。
(53)第5章数组和广义表 (56)5.2 特殊矩阵的压缩存储 (57)5.2.1 三角矩阵、对称矩阵和对角矩阵的压缩存储 (57)5.2.2 稀疏矩阵的压缩存储 (60)5.3 广义表 (62)第6章树和二叉树 (63)6.2 二叉树 (63)6.3 线索二叉树 (72)6.4 Huffman树 (78)6.5 树的表示和实现 (79)第7章图 (80)7.1 图及其抽象数据类型 (80)7.2 图的表示和实现 (81)7.3 图的遍历 (83)7.4 最小生成树 (85)7.5 最短路径 (87)第8章查找 (90)8.1 查找的基本概念 (90)8.2 二分法查找 (91)8.4 散列 (93)8.5 二叉排序树 (95)【实验8-1】判断一棵二叉树是否为二叉排序树,改错。
数据结构(Java版)习题解答与实验指导目录第1章绪论 (1)1.1 数据结构的基本概念 (1)1.2 算法 (2)第2章线性表 (4)2.1 线性表抽象数据类型 (4)2.2 线性表的顺序存储和实现 (5)2.2.1 线性表的顺序存储结构 (5)2.2.2 顺序表 (6)2.2.3 排序顺序表 (9)2.3 线性表的链式存储和实现 (12)2.3.1 单链表 (12)【习题2-8】单链表结点类问题讨论。
(13)【习2.1】使用单链表求解Josephus环问题。
(16)【习2.2】集合并运算,单链表深拷贝的应用。
(19)2.3.2 双链表 (21)【习2.3】循环双链表的迭代方法。
(25)【习2.4】循环双链表合并连接。
(26)第3章串 (27)3.2 串的存储和实现 (28)3.2.1 串的存储结构 (28)3.2.2 常量字符串类 (28)【习3.1】C/C++语言,string.h中的strcpy()和strcat()函数存在下标越界错误。
(28)【思考题3-1】逆转String串,分析算法效率。
(31)【实验题3-1】MyString类,比较串大小,忽略字母大小写。
32【例3.2思考题3-2】MyInteger整数类,返回value的radix进制原码字符串。
(34)【实验题3-9】浮点数类。
(36)3.2.3 变量字符串类 (39)【实验题3-11】删除变量串中的所有空格。
4-样卷 (39)3.3 串的模式匹配 (41)3.3.1 Brute-Force模式匹配算法 (41)3.3.2 模式匹配应用 (42)【思考题3-4,实验题3-13】MyString类,replaceAll(pattern,s)改错。
(42)3.3.3 KMP模式匹配算法 (43)第4章栈和队列 (47)4.1 栈 (47)4.2 队列 (49)4.3 递归 (53)【习4.1】打印数字塔。
(53)第5章数组和广义表 (56)5.2 特殊矩阵的压缩存储 (57)5.2.1 三角矩阵、对称矩阵和对角矩阵的压缩存储 (57)5.2.2 稀疏矩阵的压缩存储 (60)5.3 广义表 (62)第6章树和二叉树 (63)6.2 二叉树 (63)6.3 线索二叉树 (72)6.4 Huffman树 (78)6.5 树的表示和实现 (79)第7章图 (80)7.1 图及其抽象数据类型 (80)7.2 图的表示和实现 (81)7.3 图的遍历 (83)7.4 最小生成树 (85)7.5 最短路径 (87)第8章查找 (90)8.1 查找的基本概念 (90)8.2 二分法查找 (91)8.4 散列 (93)8.5 二叉排序树 (95)【实验8-1】判断一棵二叉树是否为二叉排序树,改错。
实 验 报 告 课程名称:
学 院:
专 业: 班 级:
姓 名: 学 号:
年 月 日 山 东 科 技 大 学 教 务 处 制 实 验 报 告 页 组 别 姓 名 同组实验者
实验项目 名称 实验日期
教师评语 实验成绩: 指导教师(签名): 年 月 日 一、 实验目标 掌握Java GUI开发的基本原理。 熟练使用Java AWT或SWING类库中的容器、组件及事件响应机制开发图形化桌面应用程序。 二、 实验内容 1.使用Java设计实现一个带有GUI界面的学生成绩管理系统。基本功能包括: 1)增添、删除、修改学生基本信息:学号、姓名、出生日期、专业课程分数; 2)计算每门课的平均成绩; 3)统计优秀、良好、中等、及格、不及格的人数百分比,并以柱状图、饼图呈现【说明:可以使用SWING、AWT自己绘制;也可以使用开源类库,如JFreeChar】 4)按学号查询学生及成绩; 5)按照成绩分数排序; 6)提供数据存储功能(不使用数据库,全部使用流操作文件完成)。 三、实验步骤和结果 (1)文字分析和代码详情 登录界面的设置:设置密码进行验证。 private void initialize() { frame = new JFrame();
frame.setTitle("\u6210\u7EE9\u7BA1\u7406\u7CFB\u7EDF\uFF08\u767B\u5F55\uFF09");
frame.setIconImage(Toolkit.getDefaultToolkit().getImage(MainUI.class.getResource("/image/func_list7_privmana.png"))); frame.setBounds(400, 250, 450, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("\u5B66\u751F\u6210\u7EE9\u7BA1\u7406\u7CFB\u7EDF\u7528\u6237\u767B\u5F55\uFF01"); lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 16)); lblNewLabel.setBounds(111, 17, 287, 15); frame.getContentPane().add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("\u7528\u6237\u540D\uFF1A"); lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 14)); lblNewLabel_1.setBounds(87, 67, 67, 15); frame.getContentPane().add(lblNewLabel_1);
textField = new JTextField(); textField.setBounds(154, 64, 141, 21); frame.getContentPane().add(textField); textField.setColumns(10);
JLabel label = new JLabel("\u5BC6 \u7801\uFF1A"); label.setFont(new Font("宋体", Font.PLAIN, 14)); label.setBounds(87, 108, 67, 15); frame.getContentPane().add(label);
textField_1 = new JTextField(); textField_1.setColumns(10); textField_1.setBounds(154, 103, 141, 21); frame.getContentPane().add(textField_1);
JLabel lblNewLabel_2 = new JLabel("\u6211\u7684\u8EAB\u4EFD\u662F\uFF1A"); lblNewLabel_2.setFont(new Font("宋体", Font.PLAIN, 14)); lblNewLabel_2.setBounds(105, 150, 97, 15); frame.getContentPane().add(lblNewLabel_2);
final Choice choice = new Choice(); choice.setBounds(210, 147, 74, 21); choice.add("学生"); choice.add("教师"); choice.add("系统管理员"); frame.getContentPane().add(choice);
Button button = new Button("\u767B\u5F55"); button.setBounds(87, 194, 76, 23); button.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { String user=textField.getText(); String password=textField_1.getText(); String shenfen=choice.getSelectedItem(); if(user.equals("")||user==null){ JOptionPane.showMessageDialog(frame, shenfen+":您好,帐号不能为空!"); return; }else if(password.equals("")||password==null){ JOptionPane.showMessageDialog(frame, shenfen+":您好,密码不能为空!"); return; }else{ StudentInfo stu=new StudentInfo(Integer.parseInt(user), Integer.parseInt(password),shenfen); UserLoginValid dao=new UserLoginValid(); String result=dao.isValid(stu);
if("登录成功!".equals(result)){ JOptionPane.showMessageDialog(frame,result); StudentMainView index=new StudentMainView(stu); JFrame frame2=index.getFrame(); frame2.setVisible(true); frame.dispose(); }else{ JOptionPane.showMessageDialog(frame,result);
}
成绩内容设置:通过else if语句进行判断。 public void itemStateChanged(ItemEvent e) { Object[] objs=e.getItemSelectable().getSelectedObjects(); for(Object ob:objs){ // JOptionPane.showMessageDialog(frame, ob.toString()); if("高等数学".equals(ob.toString())){ textField_2.setText("高等数学"); textField_3.setText("98"); }else if("大学英语".equals(ob.toString())){ textField_2.setText("大学英语"); textField_3.setText("87"); }else if("马列主义".equals(ob.toString())){ textField_2.setText("马列主义"); textField_3.setText("88"); }else if("毛泽东思想".equals(ob.toString())){ textField_2.setText("毛泽东思想"); textField_3.setText("73"); }else if("计算机图形学".equals(ob.toString())){ textField_2.setText("计算机图形学"); textField_3.setText("97"); } }
学生登录:通过密码和用户名进入系统,通过this指针进行判断。
public StudentInfo(int idnum,int password, String identify) { super(); this.idnum = idnum; this.password = password; this.identify = identify; } public int getIdnum() { return idnum; } public void setIdnum(int idnum) { this.idnum = idnum; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPassword() { return password; } public void setPassword(int password) {