南昌大学JAVA语言程序设计实验期末大作业
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
30
积分
还剩页未读,继续阅读
关 键 词:南昌大学
JAVA
语言程序设计
实验
期末
作业
资源描述:
南昌大学实验报告
学生姓名: 学 号: 专业班级:
实训类型:□ 验证 □ 综合 □ 设计 □ 创新 实验日期:2018.1.3 实验成绩:
一、 实验项目名称
2017~2018 -1 《java语言程序设计实验》期末大作业
二、 实验的评分标准
实验分为A~F,A为最高,F最低。
F:在规定时间内没有完成所有的实验,而且没有及时提交实验报告,或者实验过程中出现了抄袭复制他人实验代码。
D:能完成实验,但是实验结果出现严重错误,不能体现对教学内容的理解。
C:能基本完成实验,实验结果基本正确。但是实验内容有较少的错误,提交的实验代码质量一般。
B:能较好的完成实验,实验报告条理清楚,实验代码结构清晰,代码质量较高,及时更正试验中出现的错误,并对运行中一些异常错误进行分析,解释错误产生的原因。
A:能较好的完成实验,实验代码质量高,实验报告完成度高,能在实验完成的基础上,根据个人的理解增加实验的新功能,具有一定的创新能力。
三、实验内容
1.8皇后问题(支持手动设置,判断位置,生成解决方案,n皇后扩展,图形界面)
当用户没有进行皇后数量设定时,默认为8
当用户输入皇后数量太大时,将自动纠正为正确范围,因为本程序提供了n皇后所有的解法,对于太大的n,将影响计算速度。
当在棋盘上点击,添加完N个皇后之后,棋盘会自动锁定,相应的事件被取消,单击Check按钮进行解法的检测,会有相应的弹出框提示解法的正确与否。
单击Reset,进行清盘,可以重新进行皇后的添加。
右上方有两种模式进行选择,PlayMode是玩家自己添加皇后,SoluMode是程序给出解决办法的模式。
单击Last和Next进行解法的查看。
因为程序中存储了所有的解法,这里的底层棋盘采用boolean类型,解法采用了byte类型的数组,进行减少空间的占用
退出游戏的一个提醒。
因为程序代码太多,这里给出它的一个源代码结构图(MVC模式):
2.轻量级成绩管理系统(采用文件存储数据,支持成绩录入,成绩查询,三种排序下的成绩显示方式)
在右边选择不同的功能,主界面会跳转到相应的功能页面。
只有当查询功能被选中时,下面提供的三种排序选择方式才会显示可用。
简单的录入界面,将信息输入后,单击Submit,后台将记录存入文件。
单击Next进行下一条记录的输入。输入完成后,单击Quit,返回主界面
单击成绩查询,刚才被锁定的三个排序选项可以使用了,点击不同的排序方式,中心文本域将出现不同排序方式的内容。
这里给出程序的源代码结构图(MVC模式):
3.储蓄管理系统(面向用户!支持开户,存取款功能,查询记录)
主界面提供不同的功能,同样的,单击不同的功能,主界面会进行跳转,然后到相应的界面完成功能即可。
开户:正确填写信息后,单击提交。
开户成功,客户文件中会增加一条记录,同时有弹窗提醒。
这里给账户中设置一个默认金额1元。
存款界面:正确填写信息,经办人签名,然后单击Comfirm,进行存款业务的提交。
存款成功后弹窗消息提醒。
取款操作时,会有一个检测的步骤,当取款金额大于了账户拥有的金额,会提示金额非法,不给予取款。
取款成功后也会有相应提醒。同时在交易文件中会写入一条记录。
进行账户查询时,首先要求用户登录
因为系统面向用户,所以合法用户才能查看自己的交易记录和账户信息。
没有提供查看所有账户信息的接口,但是所有记录是存放在一起的!
如果用户不存在,或者密码输入错误,会禁止进入查询页面,同时弹窗提醒。
当身份信息验证合格后,跳转到信息界面,展示了该用户的所有信息。
其中:上半部分信息来自客户文件。
下半部分信息来自交易记录文件内容的筛选。
这里是编号为0 的一个测试账户,没有进行任何操作,所以记录为空。
这里给出源代码的结构图(MVC模式):
4、 实验小结
5、 实验源代码
1. 八皇后问题
package one.model;
import java.util.ArrayList;
public class EightQueenModel {
public static int N = 8;
private boolean[][] arr;
private ArrayListsolutionList;
private int pointer;
private static EightQueenModel eightQueenModel = null;
public static EightQueenModel getInstance(){
if(eightQueenModel == null)
eightQueenModel = new EightQueenModel();
return eightQueenModel;
}
public static void setN(int n){
N = n;
}
private EightQueenModel(){
arr = new boolean[N][N];
solutionList = new ArrayList<>();
pointer = 0;
}
public ArrayListgetSolutionList() {
return solutionList;
}
public int getPointer(){
return pointer;
}
public void addPointer(){
pointer = (pointer + 1) % solutionList.size();
}
public void subPointer(){
pointer = (pointer - 1 + solutionList.size()) % solutionList.size();
}
public boolean addQueen(int i, int j){
if(i=0&&m>=0;i--,m--){
if(arr[i][m]) //left-up
return false;
}
for(int i=k-1,m=j+1;i>=0&&m<=N-1;i--,m++){
if(arr[i][m]) //right-up
return false;
}
return true;
}
public void findSolution(int i){
if(i==N){
byte[] solution = new byte[N];
for(byte q = 0; qlist;
private static QueenList queenList = null;
public static QueenList getInstance(){
if(queenList == null)
queenList = new QueenList();
return queenList;
}
private QueenList(){
list = new ArrayList<>();
}
public void add(Queen q){
list.add(q);
}
public void clear(){
list.clear();
}
public int size(){
return list.size();
}
public Queen get(int i){
return list.get(i);
}
}
package one.view;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Paint;
import one.model.EightQueenModel;
public class ChessBoard {
public static final int SIZE = 66;
public static final int PSIZE = 52;
private Canvas canvas;
private GraphicsContext gc;
private static ChessBoard chessBoard = null;
public static ChessBoard getInstance(){
if(chessBoard == null)
chessBoard = new ChessBoard();
return chessBoard;
}
private ChessBoard(){
canvas = new Canvas(SIZE* EightQueenModel.N, SIZE* EightQueenModel.N);
gc = canvas.getGraphicsContext2D();
drawBoard();
}
public void updateChessBoard(){
gc.clearRect(0,0,SIZE* EightQueenModel.N,SIZE* EightQueenModel.N);
canvas.setHeight(SIZE* EightQueenModel.N);
canvas.setWidth(SIZE* EightQueenModel.N);
}
public GraphicsContext getGc() {
return gc;
}
public Canvas getCanvas() {
return canvas;
}
public void drawBoard(){
for(int i = 0;i{
if(numOfQueen < EightQueenModel.N){
double tempX = event.getX();
double tempY = event.getY();
int x = (int)(tempX/ ChessBoard.SIZE);
int y = (int)(tempY/ ChessBoard.SIZE);
//position is valid
if(eightQueenModel.addQueen(x,y)){
Queen queen = new Queen(x,y);
qlist.add(queen);
drawQueen(queen);
numOfQueen++;//make sure only 8 queens are available
}
}
});
}
public static void cancelAddQueenEvent(){
chessBoard.getCanvas().setOnMouseClicked(event -> {});
}
public static void clearBoard(){
chessBoard.updateChessBoard();
chessBoard.drawBoard();
numOfQueen = 0;
}
private static void drawQueen(Queen queen){
double startX = queen.getX()* ChessBoard.SIZE + (ChessBoard.SIZE - ChessBoard.PSIZE) / 2;
double startY = queen.getY()* ChessBoard.SIZE + (ChessBoard.SIZE - ChessBoard.PSIZE) / 2;
chessBoard.getGc().drawImage(queen.getImage(),startX,startY, ChessBoard.PSIZE, ChessBoard.PSIZE);
}
public static void drawSolution(){
clearBoard();
byte[] pos = eightQueenModel.getSolutionList().get(eightQueenModel.getPointer());
for(int i = 0; i{
ChessBoardControl.addChessBoardEvents();
clearAll();
consoleView.getFunction(0).setDisable(false);
consoleView.getFunction(1).setDisable(false);
consoleView.getFunction(2).setDisable(true);
consoleView.getFunction(3).setDisable(true);
});
consoleView.getMode(1).setOnAction(event -> {
generateSolution();
ChessBoardControl.cancelAddQueenEvent();
clearAll();
consoleView.getFunction(2).setDisable(false);
consoleView.getFunction(3).setDisable(false);
consoleView.getFunction(0).setDisable(true);
consoleView.getFunction(1).setDisable(true);
});
}
private static void setScaleEvent(){
consoleView.getSet().setOnAction(event -> {
getScale();//change the scale of the game
clearAll();
});
}
private static void resetEvent(){
consoleView.getFunction(1).setOnAction(event -> {
clearAll();
});
}
private static void checkEvent(){
consoleView.getFunction(0).setOnAction(event -> {
boolean valid = false;
if(qlist.size() == 8) {
for (int i = 0; i < qlist.size(); ++i) {
if (eightQueenModel.isValid(qlist.get(i).getX(), qlist.get(i).getY()))
valid = true;
}
}
showInfo(valid);
});
}
private static void quitEvent(){
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Confirmation");
alert.setHeaderText("");
alert.setContentText("Do you want to quit the game?");
consoleView.getFunction(4).setOnAction(event -> {
Optionalresult = alert.showAndWait();
if(result.isPresent() && result.get() == ButtonType.OK){
System.exit(0);
}
});
}
private static void clearAll(){
ChessBoardControl.clearBoard();//draw a new chess board
qlist.clear();
eightQueenModel.clear();
}
private static void showInfo(boolean valid){
String result = "The result is " + (valid ? "Correct!" : "Incorrect!");
Alert a = new Alert(Alert.AlertType.INFORMATION);
a.setTitle("Information");
a.setHeaderText("Checking result...");
a.setContentText(result);
a.showAndWait();
}
private static void generateSolution(){
eightQueenModel.findSolution(0);
}
private static void stepEvent(){
consoleView.getFunction(2).setOnAction(event -> {
eightQueenModel.subPointer();
ChessBoardControl.drawSolution();
});
consoleView.getFunction(3).setOnAction(event -> {
eightQueenModel.addPointer();
ChessBoardControl.drawSolution();
});
}
private static void getScale(){
int scale = 8;
String s = consoleView.getTextField().getText();
if(!s.equals("") && Integer.parseInt(s) > 7 && Integer.parseInt(s) < 14)
scale = Integer.parseInt(s);
EightQueenModel.setN(scale);
}
}
==============================================================================================
2.成绩管理系统
package two.model;
import java.io.Serializable;
public class StuInfo implements Serializable{
private String name;
private String id;
private double score;
public StuInfo(String name, String id){
this.name = name;
this.id = id;
}
public StuInfo(String name, String id, Double score){
this(name, id);
this.score = score;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
public Double getScore() {
return score;
}
@Override
public String toString() {
return "[ 姓名: " + this.name + " 学号: " + this.id + " 成绩: " + this.score + " ]\n";
}
}
package two.model;
import java.util.Comparator;
public class Comparators {
public static class nameComparator implements Comparator{
@Override
public int compare(StuInfo s1, StuInfo s2){
return s1.getName().compareTo(s2.getName());
}
};
public static class idComparator implements Comparator{
@Override
public int compare(StuInfo s1, StuInfo s2) {
return s1.getId().compareTo(s2.getId());
}
};
public static class scoreComparator implements Comparator{
@Override
public int compare(StuInfo s1, StuInfo s2) {
if(s1.getScore() == s2.getScore())
return 0;
else
return (s1.getScore() < s2.getScore()) ? 1 : -1;
}
};
}
package two.view;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
public class Console {
private VBox vBox;
private Button[] funcs;
private RadioButton[] selecs;
private ToggleGroup toggleGroup;
private Font font;
private static Console console = null;
public static Console getConsole(){
if(console == null)
console = new Console();
return console;
}
private Console(){
vBox = new VBox(20);
funcs = new Button[3];
selecs = new RadioButton[3];
toggleGroup = new ToggleGroup();
font = Font
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:南昌大学JAVA语言程序设计实验期末大作业
链接地址:https://www.renrendoc.com/p-48732984.html