java教学计划编制的全部代码
java课程设计及代码画布

java课程设计及代码画布一、教学目标本课程的教学目标是使学生掌握Java编程语言的基本语法、编程思想和方法,能够运用Java语言编写简单的应用程序。
具体目标如下:1.掌握Java语言的基本语法和数据类型。
2.了解面向对象编程的基本概念和方法。
3.熟悉常用Java类库和API的使用。
4.能够使用Java语言编写简单的控制台应用程序。
5.能够使用Java语言编写简单的图形用户界面(GUI)应用程序。
6.能够使用Java语言进行简单的文件操作。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生的问题解决能力。
2.培养学生的团队协作意识和沟通能力。
3.使学生认识到编程语言在现代社会的重要性和应用价值。
二、教学内容根据课程目标,教学内容主要包括Java语言的基本语法、数据类型、面向对象编程、常用类库和API、简单的应用程序编写等。
具体安排如下:1.Java语言的基本语法和数据类型:介绍Java语言的基本语法规则,包括变量声明、数据类型、运算符、控制结构等。
2.面向对象编程:讲解面向对象编程的基本概念和方法,包括类和对象、封装、继承、多态等。
3.常用Java类库和API:介绍Java语言中常用的类库和API,如ng、java.util、java.awt等。
4.简单的应用程序编写:通过实例讲解如何使用Java语言编写简单的控制台应用程序和GUI应用程序,包括文本输入输出、图形界面设计等。
5.文件操作:讲解如何在Java中进行文件操作,包括文件的读取、写入、删除等。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解Java语言的基本语法、数据类型、面向对象编程等理论知识。
2.案例分析法:通过分析实际案例,使学生掌握Java语言的应用方法和技巧。
3.实验法:安排上机实验,让学生亲自动手编写Java程序,巩固所学知识,提高实际编程能力。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备等。
java课程设计一万行代码

java课程设计一万行代码一、教学目标本节课的教学目标是使学生掌握Java编程的基本语法和结构,能够运用Java 编写简单的程序。
具体目标如下:1.理解Java编程语言的基本语法。
2.掌握Java的数据类型、变量、运算符。
3.理解Java的控制结构,如条件语句、循环语句。
4.了解Java的面向对象编程思想,如类、对象、封装、继承。
5.能够使用Java编写简单的程序,解决实际问题。
6.能够阅读和理解简单的Java程序。
7.能够对已有的Java程序进行修改和优化。
情感态度价值观目标:1.培养学生的编程兴趣,激发学生学习Java编程的动力。
2.培养学生解决问题的能力,使学生能够通过编程解决实际问题。
3.培养学生的团队协作意识,使学生在编程过程中能够与他人合作。
二、教学内容根据教学目标,本节课的教学内容如下:1.Java编程语言的基本语法和结构。
2.Java的数据类型、变量、运算符。
3.Java的控制结构,如条件语句、循环语句。
4.Java的面向对象编程思想,如类、对象、封装、继承。
三、教学方法为了达到教学目标,本节课将采用以下教学方法:1.讲授法:教师讲解Java编程语言的基本语法和结构,引导学生掌握知识。
2.案例分析法:通过分析典型案例,让学生理解Java编程的应用。
3.实验法:让学生动手编写Java程序,培养学生的编程能力。
四、教学资源为了支持教学内容和教学方法的实施,本节课需要准备以下教学资源:1.教材:Java编程基础。
2.多媒体资料:PPT、编程实例。
3.实验设备:计算机。
通过以上教学资源,学生可以更好地学习Java编程,提高编程能力。
五、教学评估为了全面、客观地评估学生的学习成果,本节课将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和理解程度。
2.作业:布置与课程内容相关的编程作业,要求学生在规定时间内完成,评估学生的编程能力和掌握程度。
教学计划编制源代码(5篇)

教学计划编制源代码(5篇)第一篇:教学计划编制源代码#include #include #include #include #include #include#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE-1 #define Status int #define Boolean int #define MAX_NAME 10 #define MAXCLASS 100 #define MAX_VERTEX_NUM 100 #define STUDY 1 #define NOTSTUDY 0 #define STACK_INIT_SIZE 10 #define STACKINCREMENT 2 typedef int SElemType;typedef struct SqStack {SElemType *base;SElemType *top;int stacksize;}SqStack;typedef char VertexType[MAX_NAME];typedef struct ArcNode {int adjvex;//该弧指向顶点的位置struct ArcNode *nextarc;//指向下一条弧的指针 }ArcNode;typedef struct {VertexType data;int credit;int state;int indegree;ArcNode *firstarc;//指向第一条依附该顶点的弧的指针 }VNode,AdjList[MAX_VERTEX_NUM];typedef struct { AdjList vertices;int vexnum,arcnum;int kind;}ALGraph;int LocateVex(ALGraph G,VertexType u){int i;for(i=0;iif(strcmp(u,G.vertices[i].data)==0)return i;return-1;} Status CreateGraph(ALGraph &G){int i,j,k;VertexType va,vb;ArcNode *p;printf(“请输入教学计划的课程数: ”);scanf(“%d”,&G.vexnum);printf(“请输入拓扑排序所形成的课程先修关系的边数: ”);scanf(“%d”,&G.arcnum);printf(“请输入%d个课程的代表值(<%d个字符):n”,G.vexnum,MAX_NAME);for(i=0;i{scanf(“%s”,&G.vertices[i].data);G.vertices[i].firstarc=NULL;G.vertices[i].state=NOTSTUDY;G.vertices[i].indegree=0;}printf(“请输入%d个课程的学分值(<%d个字符):n”,G.vexnum,MAX_NAME);for(i=0;i{scanf(“%d”,&(G.vertices[i].credit));}printf(“请顺序输入每条弧(边)的弧头和弧尾(以空格作为间隔):n”);for(k=0;k{scanf(“%s%s”,va,vb);i=LocateVex(G,va);j=LocateVex(G,vb);p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=j;p->nextarc=G.vertices[i].firstarc;G.vertices[i].firstarc=p;}return OK;} Status Display(ALGraph G){int i;ArcNode *p;printf(“%d个顶点:n”,G.vexnum);for(i=0;iprintf(“%s”,G.vertices[i].data);printf(“n%d条弧(边):n”,G.arcnum);for(i=0;i{p=G.vertices[i].firstarc;while(p!=NULL){printf(“%s→%s ”,G.vertices[i].data,G.vertices[p->adjvex].d ata);p=p->nextarc;}printf(“n”);} } Status FindInDegree(ALGraph G,int indegree[]){int i;ArcNode *p;for(i=0;iindegree[i]=0;for(i=0;i{p=G.vertices[i].firstarc;while(p){indegree[p->adjvex]++;p=p->nextarc;}} } Status InitStack(SqStack *S){(*S).base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!(*S).base)exit(OVERFLOW);(*S).top=(*S).base;(*S).stacksize=STACK_INIT_SIZE;return OK;} Status StackEmpty(SqStack *S){if((*S).top==(*S).base)return TRUE;elsereturn FALSE;} Status Pop(SqStack *S,SElemType *e){if((*S).top==(*S).base)return ERROR;*e=*--(*S).top;return OK;} Status Push(SqStack *S,SElemType e){if((*S).top-(*S).base>=(*S).stacksize){(*S).base=(SElemType*)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof (SElemType));if(!(*S).base)exit(OVERFLOW);(*S).top=(*S).base+(*S).stacksize;(*S).stacksize+=STACKINCREMENT;}*((*S).top)++=e;return OK;} Status TopologicalSort(ALGraph &G,int numterm,int upterm){ArcNode *p;SqStack S;int indegree[MAX_VERTEX_NUM];//存放各节点的入度int i,j, k, m,n,q;int count;//课程编排数目计数器int sumcredit;//每个学期的课程学分累加器FindInDegree(G, indegree);for(i=0;iG.vertices[i].indegree=indegree[i];InitStack(&S);count=0;k=0;while((count!=G.vexnum)&&(k<=numterm)){sumcredit=0;q=0;for(i=0;iif((G.vertices[i].indegree==0)&&(G.vertices[i].state==NOTST UDY)){Push(&S,i);G.vertices[i].state=STUDY;//避免入度为零节点重复入栈}if(!StackEmpty(&S)&&(q<=upterm)){k= k+1;printf(“第%d个学期学的课程:”,k);printf(“n”);while((!StackEmpty(&S))&&(q{Pop(&S,&j);q=q+1;sumcredit=sumcredit+G.vertices[j].credit;printf(“%s ”,G.vertices[j].data);count++;for(p=G.vertices[j].firstarc;p;p=p->nextarc)//对j号顶点每个邻接点的入度减一G.vertices[p->adjvex].indegree--;}printf(“学分为:n”);printf(“%dn”,sumcredit);}}return OK;} Status TopologicalSort1(ALGraph G,int numterm,int uplcredit){ArcNode *p;SqStack S;int indegree[MAX_VERTEX_NUM];//存放各节点的入度int i,j, k, m,n;int count;//课程编排数目计数器int sumcredit;//每个学期的课程学分累加器FindInDegree(G, indegree);for(i=0;iG.vertices[i].indegree=indegree[i];InitStack(&S);count=0;k=0;while(count!=G.vexnum && k<=numterm){sumcredit=0;for(i=0;iif((G.vertices[i].indegree==0)&&(G.vertices[i].state==NOTST UDY)){Push(&S,i);G.vertices[i].state = STUDY;//避免入度为零节点重复入栈}if(!StackEmpty(&S)&&(sumcredit<=uplcredit)){k= k+1;printf(“n”);printf(“第%d个学期学得课程有:n”,k);sumcredit=0;while((!StackEmpty(&S))&&(sumcredit{Pop(&S,&j);sumcredit=sumcredit+G.vertices[j].credit;if(sumcredit<=uplcredit){printf(“%s ”,G.vertices[j].data);count++;for(p=G.vertices[j].firstarc;p;p=p->nextarc)//对j号顶点每个邻接点的入度减一G.vertices[p->adjvex].indegree--;}else{Push(&S,j);//将未输出的节点重新压入栈count--;}}printf(“n学分为:n”);printf(“%dn”,sumcredit);}}if(count==G.vexnum)printf(“编排成功”);else printf(“编排不成功”);} int main(){int x,y,z;ALGraph G;printf(“以下为教学计划编制问题的求解过程:n”);printf(“请输入学期总数:”);scanf(“%d”,&x);printf(“每学期课程上限:”);scanf(“%d”,&y);printf(“输入学分上限:”);scanf(“%d”,&z);CreateGraph(G);Display(G);TopologicalSort1(G,x,z);}第二篇:教学计划编制问题背景大学的每个专业都要制定教学计划。
java课程设计代码

4. Java反射机制,了解反射在运行时动态获取类信息和进行方法调用的能力;
5. Java注解(Annotation)的使用,理解标准注解及其自定义注解的编写与解析;
6. Java泛型的高级应用,探讨通配符、边界、类型擦除等高级概念。
java课程设计代码
一、教学内容
本节示范课为Java课程设计代码,依据教材《Java编程思想》第八章“对象与类”设计。主要内容包括:
1.类的定义与对象创建;
2.类的属性与方法的定义;
3.构造方法的使用;
4.封装与访问控制符;
5.继承与多态;
6.抽象类与接口。
本节课将带领学生深入了解这些概念,并通过实际编程练习,巩固所学知识。教学内容与教材紧密相关,注重实践操作,提高学生的编程能力。
4、教学内容
本阶段的教学内容将着重于以下方面:
1. Java中的设计模式,介绍常用的设计模式如单例模式、工厂模式、观察者模式等,并分析其在实际编程中的应用场景;
2. Java并发编程进阶,深入学习线程池、并发集合、锁机制、同步工具类等,理解并发编程中的高级概念;
3. Java网络编程深入,探讨TCP/UDP协议,实现复杂网络通信程序,了解网络编程中的安全性问题;
2、教学内容
本节课程延续上一讲的内容,进一步深入学习以下教学内容:
1.异常处理机制,包括try-catch-finally结构,自定义异常;
2.集合框架的使用,涉及List、Set、Map接口及其实现类的使用方法;
3.泛型的概念及应用,理解泛型在集合和类定义中的作用;
4.输入输出流(I/O),掌握文件读写操作,理解字节流与字符流的区别;
java课设及其代码

java课设及其代码以下是一个简单的 Java 课程设计示例,包含了一个学生管理系统的设计和相关代码:**一、课程设计题目:** 学生管理系统**二、设计目标:**实现学生信息的增删改查等基本操作。
**三、系统功能:**1. 学生信息录入:可以将学生的信息录入到系统中。
2. 学生信息查询:可以根据学生的姓名或学号查询学生的信息。
3. 学生信息修改:可以修改学生的信息,如姓名、年龄等。
4. 学生信息删除:可以删除学生的信息。
**四、系统模块设计:**1. 学生类:包含学生的学号、姓名、年龄等信息。
2. 学生管理类:对学生信息进行增删改查等操作。
**五、代码实现:**1. 学生类:```javapublic class Student {private String studentId;private String name;private int age;// 构造方法public Student(String studentId, String name, int age) {this.studentId = studentId; = name;this.age = age;}// 获取学号的方法public String getStudentId() {return studentId;}// 设置学号的方法public void setStudentId(String studentId) { this.studentId = studentId;}// 获取姓名的方法public String getName() {return name;}// 设置姓名的方法public void setName(String name) { = name;}// 获取年龄的方法public int getAge() {return age;}// 设置年龄的方法public void setAge(int age) {this.age = age;}// 重写 toString 方法,以便在控制台打印学生信息 @Overridepublic String toString() {return "Student{" +"studentId='" + studentId + '\'' + ", name='" + name + '\'' +", age=" + age +'}';}}```2. 学生管理类:```javaimport java.util.ArrayList;import java.util.List;public class StudentManager {private List<Student> students;// 构造方法,初始化学生列表public StudentManager() {students = new ArrayList<>();}// 添加学生的方法public void addStudent(Student student) {students.add(student);}// 删除学生的方法public void deleteStudent(String studentId) {for (int i = 0; i < students.size(); i++) {if (students.get(i).getStudentId().equals(studentId)) {students.remove(i);break;}}}// 修改学生信息的方法public void updateStudent(String studentId, String name, int age) { for (int i = 0; i < students.size(); i++) {if (students.get(i).getStudentId().equals(studentId)) {students.get(i).setName(name);students.get(i).setAge(age);break;}}}// 查询学生信息的方法public Student queryStudent(String studentId) {for (Student student : students) {if (student.getStudentId().equals(studentId)) {return student;}}return null;}// 获取所有学生信息的方法public List<Student> getStudents() {return students;}}```**六、总结:**通过这个课程设计,我们实现了一个简单的学生管理系统,包含了学生信息的增删改查等基本操作。
java编写课程表代码

java编写课程表代码随着现代科技的不断发展,学生课程表已经不再是仅仅存在于纸质上的东西,而是可以用计算机语言编写,便于随时查看。
其中,Java编程语言可以用于编写高效的课程表代码,下面分步骤来阐述。
第一步,定义数据结构先定义一个课程的数据结构,用于存储课程信息,包括课程名称、授课教师、上课时间和上课地点等。
public class Course {private String name; // 课程名称private String teacher; // 授课教师private int startHour; // 开始上课时间:小时private int startMinute; // 开始上课时间:分钟private int endHour; // 下课时间:小时private int endMinute; // 下课时间:分钟private String location; // 上课地点// 构造函数public Course(String name, String teacher, int startHour, int startMinute, int endHour, int endMinute, String location) { = name;this.teacher = teacher;this.startHour = startHour;this.startMinute = startMinute;this.endHour = endHour;this.endMinute = endMinute;this.location = location;}// getter和setter方法// ...}第二步,创建课程表在创建课程表的代码中,可以按照以下步骤进行:1. 定义一周的上课时间,即每个工作日的上班时间,也就是一天中的上午和下午。
可以用一个二维数组来表示,例如:int[][] classes = {// 周一到周五分别是 1 - 5{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};2. 创建一个方法,用于向课程表中添加课程,并将其作为一个二维数组返回,例如:public static Course[][] createTimetable(Course[] courses) {// 定义课程表数组Course[][] timetable = new Course[5][28];// 添加每个课程到课程表上for (Course course : courses) {int dayOfWeek = course.getDayOfWeek(); // 获取星期几int startTimeIndex = course.getStartTimeIndex(); // 获取开始上课时间在当天的时间段int endTimeIndex = course.getEndTimeIndex(); // 获取下课时间在当天的时间段for (int i = startTimeIndex; i <= endTimeIndex; i++) {if (timetable[dayOfWeek - 1][i] == null) {timetable[dayOfWeek - 1][i] = course;} else {System.out.println("时间冲突:" + course.getName() + " 和 " + timetable[dayOfWeek - 1][i].getName());}}}// 返回结果return timetable;}3. 在上述方法中,需要先根据课程信息计算出它在一周中的星期几和在当天的时间段,把课程添加到对应的时间段。
java课程设计(代码清单)

java课程设计(代码清单)一、教学目标本章节的Java课程设计旨在让学生掌握Java编程语言的基本语法、概念和编程技巧,培养学生具备基本的编程能力和解决问题的能力。
具体的教学目标如下:1.知识目标:–掌握Java语言的基本语法和结构。
–理解Java中的数据类型、变量、运算符和表达式。
–学习Java的控制结构,包括条件语句和循环语句。
–了解Java的面向对象编程概念,如类、对象、封装、继承和多态。
–熟悉Java的常用类库和API。
2.技能目标:–能够使用Java编程语言编写简单的程序。
–培养学生解决编程问题的能力,能够根据需求设计和实现简单的Java程序。
–培养学生使用Java开发工具和调试程序的能力。
3.情感态度价值观目标:–培养学生的团队合作意识和沟通能力,能够与他人合作完成编程任务。
–培养学生的创新思维和问题解决能力,鼓励学生积极探索和创造。
–培养学生的学习兴趣和主动性,激发学生对Java编程语言和计算机科学的热爱。
二、教学内容根据教学目标,本章节的教学内容如下:1.Java语言的基本语法和结构。
–数据类型、变量、运算符和表达式。
–控制结构,包括条件语句和循环语句。
2.面向对象编程概念。
–类和对象的概念及其关系。
–封装、继承和多态的原理和应用。
3.常用类库和API。
–Java标准库的基本数据结构和算法。
–Java的输入输出流处理。
–Java的网络编程基础。
4.编程实践。
–使用Java编写简单的程序,如计算器、排序算法等。
–练习使用Java开发工具和调试程序。
三、教学方法为了达到教学目标,本章节将采用以下教学方法:1.讲授法:通过讲解和示例来传授Java语言的基本语法和概念。
2.讨论法:引导学生进行小组讨论,共同解决问题和探讨编程技巧。
3.案例分析法:分析实际的Java程序案例,让学生理解面向对象编程的应用。
4.实验法:安排编程实践,让学生亲自动手编写程序,巩固所学知识。
四、教学资源为了支持教学内容和教学方法的实施,本章节将使用以下教学资源:1.教材:《Java编程语言》或《Java核心技术》等相关教材。
Java课程设计源代码

package ui;import java.awt.EventQueue; //线程分发import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException; import org.jvnet.substance.SubstanceLookAndFeel;import musicPlayer.MusicPanel;public class Main {public static void main(String[] args) {try {// 设置观感UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBu sinessBlackSteelLookAndFeel");// 设置水印SubstanceLookAndFeel.setCurrentWatermark("org.jvnet.substance.watermark.S ubstanceMangoLookAndFeel");// 设置渐变渲染SubstanceLookAndFeel.setCurrentGradientPainter("org.jvnet.substance.paint er.WaveGradientPainter");JFrame.setDefaultLookAndFeelDecorated(true); //窗体JDialog.setDefaultLookAndFeelDecorated(true); //对话框} catch (ClassNotFoundException |InstantiationException| IllegalAccessException | UnsupportedLookAndFeelException e) {e.printStackTrace(); //e为对象引用的名称//在命令行打印异常信息在程序中出错的位置及原因}EventQueue.invokeLater(() -> { //调用完毕,自动销毁(因为是一个匿名类)new MusicPanel();});}}package musicPlayer;import java.awt.BorderLayout;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.util.Vector;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableModel;import player.Player;public class MusicPanel extends JFrame {/****/private static final long serialVersionUID = 1L;private JButton add, playbtn, stopbtn, deletebtn, deleteAllbtn, upbtn,downbtn;private JTable table; // 歌曲信息表private Player player;public MusicPanel() {super("1400320223音乐播放器");initCompont();setVisible(true);}/*** 初始化界面* */private void initCompont() {//各个按钮赋初始值add = new JButton("导入");playbtn = new JButton("试听");stopbtn = new JButton("停止");deletebtn = new JButton("单曲删除");deleteAllbtn = new JButton("全部删除");upbtn = new JButton("上移");downbtn = new JButton("下移");// 导入按钮点击设置add.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addFile();}});// 试听按钮点击设置playbtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {if (player != null) {player.stop();player = null;}int rowNum = table.getSelectedRow(); // 选中行时返回-1if (rowNum != -1) {// getValueAt获取表格内容player = new Player((String)table.getValueAt(rowNum, 1)+ "\\", (String)table.getValueAt(rowNum, 0));System.out.printf((String)table.getValueAt(rowNum, 1)+ "\\", (String)table.getValueAt(rowNum, 0));player.play();}}});// 停止按钮点击设置stopbtn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){if (player != null){player.stop();player = null;}}});// 单曲删除按钮点击设置deletebtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {int rowNum = table.getSelectedRow();if (rowNum != -1) {((DefaultTableModel)table.getModel()).removeRow(rowNum);}}});// 删除全部按钮点击设置deleteAllbtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {for(int i= table.getRowCount() - 1; i>= 0; i--) {((DefaultTableModel)table.getModel()).removeRow(i);}}});downbtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {int n = table.getSelectedRow() + 1;if (n < table.getRowCount()) {table.setRowSelectionInterval(n, n);}}});upbtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {int n = table.getSelectedRow() - 1;if (n < -1) {n = table.getRowCount() - 1;}if (n >= 0) {table.setRowSelectionInterval(n, n);}}});// 添加各个按钮JPanel btnPanel = new JPanel();btnPanel.add(add);btnPanel.add(playbtn);btnPanel.add(stopbtn);btnPanel.add(deletebtn);btnPanel.add(deleteAllbtn);btnPanel.add(upbtn);btnPanel.add(downbtn);this.setLayout(new BorderLayout());this.add(btnPanel, BorderLayout.NORTH);Vector<String> tableContent = new Vector<String>();Vector<String> columnName = new Vector<String>();columnName.add("歌曲名称");columnName.add("存放路径");// 设置tabletable = new JTable(tableContent, columnName);table.setSelectionBackground(Color.blue);table.setSelectionForeground(Color.LIGHT_GRAY);this.add(new JScrollPane(table),BorderLayout.CENTER);this.setSize(600, 210);}/*** 添加文件* */private void addFile() {JFileChooser fc = new JFileChooser();// 设置选入文件类型FileNameExtensionFilter filter = new FileNameExtensionFilter("mp3 or wav file", "mp3", "wav", "MP3", "WAV");fc.setFileFilter(filter);fc.setFileSelectionMode(JFileChooser.FILES_ONLY); // 设置只选文件fc.setMultiSelectionEnabled(true); // 设置选择多个文件int intRetVal = fc.showDialog(this, "打开");// 获取文件并添加到tableif (intRetVal == JFileChooser.APPROVE_OPTION) { File[] file = fc.getSelectedFiles();String name;for (File var : file) {name = var.getName().toLowerCase();if (name.endsWith(".mp3") ||name.endsWith(".wav")) {this.addMusicItem(var.getName(),var.getParentFile().getAbsolutePath());}}}}/*** table的行中添加音乐文件名称name,音乐文件路径path*/private void addMusicItem(String name, String path) { Vector<String> rowData = new Vector<String>();rowData.add(name);rowData.add(path);DefaultTableModel tabMod = (DefaultTableModel) table.getModel();tabMod.addRow(rowData);}public static void main(String[] args){new MusicPanel();}}package player;import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.SourceDataLine;public class Player {private String path; // 文件路径private String name; // 文件名称private AudioFormat audioFormat; // 播放格式private AudioInputStream audioInputStream; // 音乐播放输入流private SourceDataLine sourceDataLine; // 播放设备private boolean isStop = false; // 播放停止标志/*** 创建对象时需要传入路径及文件名称* */public Player(String path,String name){this.path = path; // 代表该构造方法所创建的对象 = name;}/*** 播放音乐* */public void play(){File file = new File(path + name);try {// 获取音乐播package player;import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.SourceDataLine;public class Player {private String path; // 文件路径private String name; // 文件名称private AudioFormat audioFormat; // 播放格式private AudioInputStream audioInputStream; // 音乐播放输入流private SourceDataLine sourceDataLine; // 播放设备private boolean isStop = false; // 播放停止标志/*** 创建对象时需要传入路径及文件名称* */public Player(String path,String name){this.path = path; // 代表该构造方法所创建的对象 = name;}/*** 播放音乐* */public void play(){File file = new File(path + name);try {// 获取音乐播放流audioInputStream =AudioSystem.getAudioInputStream(file);// 获取播放格式audioFormat = audioInputStream.getFormat();// 其他格式音乐文件处理if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED);{audioFormat = newAudioFormat(AudioFormat.Encoding.PCM_SIGNED,audioFormat. getSampleRate(),16,audioFormat.getChannels(),audioFormat.getChannels( )*2,audioFormat.getSampleRate(),false);audioInputStream =AudioSystem.getAudioInputStream(audioFormat,audioInputSt ream);}// 打开输出设备 dataLineInfo = new(SourceDataLine.class,audioFormat,AudioSystem.NOT_SPECIFIED);sourceDataLine =(SourceDataLine)AudioSystem.getLine(dataLineInfo);sourceDataLine.open(audioFormat);sourceDataLine.start();// 启动播放线程new Thread() {public void run(){try{int n=0;byte tempBuffer[] = new byte[1024];while (n!=-1){// 停止播放入口,如果isStop被设置为真,结束播放if(isStop) break;// 将音乐输入流的数据读入tempBuffer缓存n =audioInputStream.read(tempBuffer,0,tempBuffer.length);if (n>0){// 将缓存数据写入播放设备,开始播放sourceDataLine.write(tempBuffer,0 ,n);}}audioInputStream.close();sourceDataLine.drain();sourceDataLine.close();}catch(IOException e){e.printStackTrace();throw new RuntimeException();}}}.start();}catch(Exception e){e.printStackTrace();System.exit(0);throw new RuntimeException();}}/*** 停止播放* */public void stop(){try{isStop = true;audioInputStream.close();sourceDataLine.drain();sourceDataLine.close();}catch(IOException e){e.printStackTrace();}}}放流audioInputStream =AudioSystem.getAudioInputStream(file);// 获取播放格式audioFormat = audioInputStream.getFormat();// 其他格式音乐文件处理if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED);{audioFormat = newAudioFormat(AudioFormat.Encoding.PCM_SIGNED,audioFormat. getSampleRate(),16,audioFormat.getChannels(),audioFormat.getChannels( )*2,audioFormat.getSampleRate(),false);audioInputStream =AudioSystem.getAudioInputStream(audioFormat,audioInputSt ream);}// 打开输出设备 dataLineInfo = new(SourceDataLine.class,audioFormat,AudioSystem.NOT_SPECIFIED);sourceDataLine =(SourceDataLine)AudioSystem.getLine(dataLineInfo);sourceDataLine.open(audioFormat);sourceDataLine.start();// 启动播放线程new Thread() {public void run(){try{int n=0;byte tempBuffer[] = new byte[1024];while (n!=-1){// 停止播放入口,如果isStop被设置为真,结束播放if(isStop) break;// 将音乐输入流的数据读入tempBuffer缓存n =audioInputStream.read(tempBuffer,0,tempBuffer.length);if (n>0){// 将缓存数据写入播放设备,开始播放sourceDataLine.write(tempBuffer,0 ,n);}}audioInputStream.close();sourceDataLine.drain();sourceDataLine.close();}catch(IOException e){e.printStackTrace();throw new RuntimeException();}}}.start();}catch(Exception e){e.printStackTrace();System.exit(0);throw new RuntimeException();}}/*** 停止播放* */public void stop(){try{isStop = true;audioInputStream.close();sourceDataLine.drain();sourceDataLine.close();}catch(IOException e){e.printStackTrace();}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package curriculumProject;//非连通图的深度优先搜索遍历和广度优先搜索遍历import linearList.Queue.SeqQueue; //顺序循环队列类public abstract class AbstractGraph<E> implements GGraph<E>//抽象图类{public abstract int vertexCount(); //返回顶点数,方法由子类实现public abstract E get(int i); //返回顶点vi的数据域public abstract int getFirstNeighbor(int i); //返回顶点vi的第一个邻接顶点的序号public abstract int getNextNeighbor(int i, int j); //返回vi在vj 后的下一个邻接顶点的序号// public abstract AbstractGraph prim();public void DFSTraverse(int v) //从顶点v出发对非连通图的一次深度优先搜索遍历{boolean[] visited = new boolean[vertexCount()]; //访问标记数组,元素初值为false,表示未被访问int i=v;do{if (!visited[i]) //若顶点vi未被访问{System.out.print("{ ");depthfs(i, visited); //从顶点vi出发的一次深度优先搜索遍历System.out.print("} ");}i = (i+1) % vertexCount(); //在其他连通分量中寻找未被访问顶点} while (i!=v);System.out.println();}private void depthfs(int v, boolean[] visited) //从顶点v开始发的一次深度优先搜索遍历{ //遍历一个连通分量System.out.print(this.get(v)+" "); //访问该顶点visited[v] = true; //置已访问标记int w = getFirstNeighbor(v); //获得第一个邻接顶点while (w!=-1) //若存在邻接顶点{if(!visited[w]) //若邻接顶点w未被访问depthfs(w, visited); //从w出发的深度优先搜索遍历,递归调用w = getNextNeighbor(v, w); //返回v在w后的下一个邻接顶点的序号}}public void BFSTraverse(int v) //从顶点v出发对非连通图进行一次广度优先搜索遍历{boolean[] visited = new boolean[vertexCount()]; //访问标记数组int i=v;do{if (!visited[i]) //若顶点vi未被访问{System.out.print("{ ");breadthfs(i, visited); //从顶点vi出发的广度优先搜索遍历System.out.print("} ");}i = (i+1) % vertexCount(); //在其他连通分量中寻找未被访问顶点} while (i!=v);System.out.println();}private void breadthfs(int v, boolean[] visited) //从顶点v出发的广度优先搜索遍历{ //遍历一个连通分量System.out.print(this.get(v)+" ");visited[v] = true;SeqQueue<Integer> que = new SeqQueue<Integer>(vertexCount()); //创建顺序队列que.enqueue(new Integer(v)); //访问过的顶点v的序号入队while (!que.isEmpty()) //当队列不空时循环{v = que.dequeue().intValue(); //出队int w = getFirstNeighbor(v); //获得顶点v的第一个邻接顶点序号while (w!=-1) //当邻接顶点存在时循环{if (!visited[w]) //若该顶点未访问过{System.out.print(this.get(w)+" "); //访问顶点visited[w] = true;que.enqueue(new Integer(w)); //访问过的顶点w的序号入队}w = getNextNeighbor(v, w); //返回v在w后的下一个邻接顶点的序号}}}}package curriculumProject;//图的邻接表import dataStructure.linearList.SeqList; //顺序表类import linearList.linkedList.SortedHSLinkedList; //排序的带头结点的单链表类//public class AdjListGraph<E> implements GGraph<E> //邻接表表示的图类public class AdjListGraph<E> extends AbstractGraph<E> implements GGraph<E> //邻接表表示的图类{protected SeqList<Vertex<E>> vertexlist; //顶点表public AdjListGraph(int n) //构造方法,n指定顶点数{this.vertexlist = new SeqList<Vertex<E>>(n);}public AdjListGraph(E[] vertices, Edge[] edges) //以顶点集合和边集合构造一个图{this(vertices.length);for (int i=0; i<vertices.length; i++)insertVertex(vertices[i]); //插入一个顶点for (int j=0; j<edges.length; j++)insertEdge(edges[j]); //插入一条边}public int vertexCount() //返回顶点数{return this.vertexlist.length();}public E get(int i) //返回顶点vi的数据元素{return this.vertexlist.get(i).data;}public boolean insertVertex(E vertex) //插入一个顶点,若插入成功,返回true{return this.vertexlist.add(new Vertex<E>(vertex)); //在顺序表最后插入一个元素}public boolean insertEdge(int i, int j) //插入一条权值为weight 的边〈vi,vj〉{if (i>=0 && i<vertexCount() && j>=0 && j<vertexCount() && i!=j){//SortedHSLinkedList<Edge> slink = new SortedHSLinkedList<Edge>();SortedHSLinkedList slink = this.vertexlist.get(i).adjlink;// slink = this.vertexlist.get(i).adjlink;// System.out.println(this.vertexlist.get(i));return slink.add(new Edge(i,j));//在第i条单链表最后增加边结点}return false;}public boolean insertEdge(Edge edge) //插入一条边{if (edge!=null)return insertEdge(edge.start, edge.dest);return false;}public String toString() //获得图的顶点集合和邻接表{String str= "顶点集合:"+vertexlist.toString()+"\n";str += "出边表:\n "; //+edgeCount+"条边\n";for (int i=0; i<vertexCount(); i++)str += this.vertexlist.get(i).adjlink.toString()+"\n"; //遍历第i条单链表return str;}public boolean removeEdge(int i, int j) //删除边〈vi,vj〉,i、j指定顶点序号{if (i>=0 && i<vertexCount() && j>=0 && j<vertexCount() && i!=j){SortedHSLinkedList slink = this.vertexlist.get(i).adjlink; //获得第i条边单链表return slink.remove(new Edge(i,j));}return false;}public boolean removeVertex(int v) //删除序号为v的顶点及其关联的边{ //若删除成功,返回trueint n=vertexCount(); //删除之前的顶点数if (v>=0 && v<n){SortedHSLinkedList<Edge> slink =this.vertexlist.get(v).adjlink; //获得欲删除的第v条边单链表int i=0;Edge edge = slink.get(i);while (edge!=null){this.removeEdge(edge.dest, edge.start); //删除对称的边i++;edge = slink.get(i);}this.vertexlist.remove(v); //删除顺序表的第i个元素,顶点数已减一for (i=0; i<n-1; i++) //未删除的边结点更改某些顶点序号{slink = this.vertexlist.get(i).adjlink; //获得第i条边单链表int j=0;edge = slink.get(j);while (edge!=null){if (edge.start>v)edge.start--; //顶点序号减一if (edge.dest>v)edge.dest--;j++;edge = slink.get(j);}}return true;}return false;}public int getFirstNeighbor(int v) //返回顶点v的第一个邻接顶点的序号{ //若不存在第一个邻接顶点,则返回-1return getNextNeighbor(v, -1);}public int getNextNeighbor(int v, int w) //返回v在w后的下一个邻接顶点的序号{ //若不存在下一个邻接顶点,则返回-1if (v>=0 && v<vertexCount() && w>=-1 && w<vertexCount()){SortedHSLinkedList<Edge> slink = this.vertexlist.get(v).adjlink; //获得第v条边单链表Edge edge = slink.get(0); //返回单链表的第一个结点表示的边int i=0;while (edge!=null) //寻找下一个邻接顶点{if (edge.dest>w)return edge.dest; //返回下一个邻接顶点的序号i++;edge = slink.get(i); //返回单链表的第一个结点表示的边}}return -1;}}package curriculumProject;//带权图的边类public class Edge implements Comparable<Edge> //带权值的边类{public int start; //边的起点序号public int dest; //边的终点序号//public int weight; //边的权值public Edge(int start, int dest){this.start = start;this.dest = dest;//this.weight = weight;}public String toString(){return "("+start+","+dest+")";}public int compareTo(Edge e) //约定两条边比较大小的规则{if (this.start!=e.start)return this.start - e.start;elsereturn this.dest - e.dest;}}package curriculumProject;//图接口public interface GGraph<E> //图接口{int vertexCount(); //返回顶点数E get(int i); //返回顶点vi的数据元素boolean insertVertex(E vertex); //插入一个顶点boolean insertEdge(int i, int j); //插入一条权值为weight的边〈vi,vj〉boolean removeVertex(int v); //删除序号为v的顶点及其关联的边boolean removeEdge(int i, int j); //删除边〈vi,vj〉int getFirstNeighbor(int v); //返回顶点v 的第一个邻接顶点的序号int getNextNeighbor(int v, int w); //返回v在w 后的下一个邻接顶点的序号}package curriculumProject;import java.util.*;import linearList.Queue.SeqQueue;;public class Graph_Main2 {/*** @param args*/int bian;// 定义边数HashSet array = new HashSet();// 定义一个集合保存顶点的值ArrayList list2 = new ArrayList();// 保存优先关系顶点的值ArrayList listrudu = new ArrayList();// 保存顶点的入度ArrayList result = new ArrayList();// 保存拓扑排序的结果ArrayList credit2 = new ArrayList();// 保存学分信息ArrayList credit3 = new ArrayList();// 保存学分信息int[][] relation;// 保存输入优先关系的所有值int[][] c_relation;Scanner scanner = new Scanner(System.in);public void input() {System.out.println("请输入课程总数,按回车确认");Scanner reader=new Scanner(System.in);int Input=reader.nextInt();System.out.println("请依次输入各个课程的学分:");int[] credit = new int[Input];for(int i = 0; i < Input; i++){credit[i] = reader.nextInt();credit2.add(credit[i]);}String[] vertices = new String[Input];for (int n = 0; n < Input; n++) {if (n < 9) {vertices[n] = "C0" + (n + 1);} else {vertices[n] = "C" + (n + 1);}}Scanner reader2=new Scanner(System.in);System.out.println("请输入课程之间的关系总和,即有多少条边?,按回车确认");bian = reader2.nextInt();relation = new int[bian][2];List<Edge> list = new ArrayList<Edge>();System.out.println("比如:C01是C02的先修课,则输入01 02");for (int i = 0; i < bian; i++) {System.out.print("请输入第" + (i + 1) + "条边的优先关系");for (int j = 0; j < 2; j++) {relation[i][j] = reader.nextInt();}list.add(new Edge(relation[i][0],relation[i][1]));}Edge[] edges = list.toArray(new Edge[0]);AdjListGraph<String> graph = new AdjListGraph<String>(vertices,edges);System.out.println("带权有向图,"+graph.toString());System.out.println("深度优先搜索遍历");for(int i=0;i<graph.vertexCount();i++){graph.DFSTraverse(i);}System.out.println("广度优先搜索遍历");for(int i=0;i<graph.vertexCount();i++){graph.BFSTraverse(i);}}public void sort() {for (int i = 0; i < bian; i++) {for (int j = 0; j < 2; j++) {array.add(relation[i][j]);}}Iterator iter = array.iterator();while (iter.hasNext()) {Object s = iter.next();list2.add(s);// 将各顶点的值保存在list里,方便后面查找入度时使用}int count = 0;// 定义一个记入度的计数器for (int i = 0; i < list2.size(); i++) {for (int j = 0; j < bian; j++) {if (list2.get(i).equals(relation[j][1])) {count++;}}listrudu.add(list2.get(i));listrudu.add(count);count = 0;}System.out.println();boolean flag = true;while (flag) {int check = 0;// 检查有没有入度为0for (int i = 0; i < listrudu.size(); i = i + 2) {if (listrudu.get((i + 1)).equals(0)) {result.add(listrudu.get(i));// for(int j=0;j<result.size();j++){// credit3.add(credit2.get(j)); // }//credit3.add(credit2.get(i));for (int j = 0; j < list2.size(); j++) {if (listrudu.get(i).equals(list2.get(j))) {for (int j2 = 0; j2 < bian; j2++) {if (list2.get(j).equals(relation[j2][0])) {relation[j2][1] = -9999;// 如果这个前驱是要被删除的话,那么把他的后继改值}}list2.remove(j);}}} else {check++;}}if (check == listrudu.size()/2) {System.out.println("课程关系输入错误,有环,无法排序");flag = false;}int count1 = 0;// 定义一个记入度的计数器for (int i = 0; i < list2.size(); i++) {for (int j = 0; j < bian; j++) {if (list2.get(i).equals(relation[j][1])) {count1++;}}listrudu.add(list2.get(i));listrudu.add(count1);count1 = 0;}if (list2.size() == 0) {System.out.println("存在拓扑排序");flag = false;}}// while循环结束}public void print() {* 这个for循环的作用是:因为我上面做的是根据listrudu来找的,* 所以它每进行一次循环就把前面的入度为0的值再保存了一遍,其实最后的结果是最后一次循环所得的值,打印的时候要把前面重复的去掉*/for (int i = result.size() - 1; i >= 0; i--) {for (int j = 0; j < i; j++) {if (result.get(j).equals(result.get(i))) {result.remove(j);}}}for (int i = 0; i < result.size(); i++) {System.out.print(result.get(i) + "-->");}System.out.println();System.out.println();System.out.println("请输入你的总学期数");Scanner reader3=new Scanner(System.in);int term = reader3.nextInt();System.out.println("请输入学期学分上线");int sum_credit = reader3.nextInt();System.out.println("如果要使课程均匀分布在各个学期,则为:");int sum=0;int sum2=0;for (int i = 0; i < result.size(); i++) {for(int j=0;j<result.size();j=j+2){Object res2 = result.get(j);Integer r2 = Integer.parseInt(res2.toString());Object obj = credit2.get(r2-1);Integer a = Integer.parseInt(obj.toString());sum += a;j=j+2;break;}double value = (double)credit2.size()/(double)term;int value2=0;if(value<=1.0)value=1.0;if((int)value==value)value2=(int)value;elsevalue2 = (int)value+1;if((i+1)%(value2)==0){System.out.print(result.get(i) + "-->");System.out.println();}else{if(sum<=sum_credit){for(int j3=0;j3<result.size();j3=j3+2){Object res = result.get(j3);Integer r = Integer.parseInt(res.toString());Object obj2 = credit2.get(r-1);Integer a2 = Integer.parseInt(obj2.toString());sum += a2;break;}if(sum<=sum_credit)System.out.print(result.get(i) + "-->");//System.out.print(result.get(i) + "-->");else{sum = 0;System.out.print(result.get(i) + "-->");}}else{System.out.println();sum = 0;System.out.print(result.get(i) + "-->");}}}System.out.println();System.out.println();System.out.println("如果要使课程分布在前几个学期,则为:");int j_=0;int j=0;for (int i = 0; i < result.size(); i++) {//for(int j=0;j<result.size();j=j+2){Object res4 = result.get(j);Integer r4 = Integer.parseInt(res4.toString());Object obj4 = credit2.get(r4-1);Integer a4 = Integer.parseInt(obj4.toString());sum += a4;j=j+1;//break;//}if(sum<=sum_credit){//for(int j=0;j<result.size();j=j+2){Object res3 = result.get(j_);Integer r3 = Integer.parseInt(res3.toString());Object obj3 = credit2.get(r3-1);Integer a3 = Integer.parseInt(obj3.toString());sum += a3;j_=j_+1;if(sum<=sum_credit)System.out.print(result.get(i) + "-->"); // if(sum<=sum_credit&&)// System.out.print(result.get(i) + "-->");else{sum = 0;System.out.print(result.get(i) + "-->");}}else{System.out.print(result.get(i) + "-->");System.out.println();sum = 0;}// if(sum<=sum_credit){// System.out.print(result.get(i) + "-->"); // }else{// System.out.println();// sum = 0;// System.out.print(result.get(i) + "-->"); // }}}public static void main(String[] args) {// TODO Auto-generated method stubGraph_Main2 s = new Graph_Main2();s.input();s.sort();s.print();}}package curriculumProject;import linearList.linkedList.SortedHSLinkedList; //排序的带头结点的单链表类public class Vertex<E> //顶点表{public E data; //顶点数据域public SortedHSLinkedList<Edge> adjlink; //该顶点的边单链表public Vertex(E data, SortedHSLinkedList<Edge> adjlink){this.data = data;this.adjlink = adjlink;}public Vertex(E data){this(data, new SortedHSLinkedList<Edge>()); //构造结点时创建空单链表}public String toString(){return this.data.toString();}。