//写了两个小时啊,兄弟,要采纳我啊
//Site(站点类)
package?transit;
import?java.util.ArrayList;
import?java.util.List;
public?class?Site
{
private?Integer?id;?//?给每个站点分配一个ID
private?String?name;?//?站点的名字
private?ListRoute?list;?//?经过该站点的线路
public?Site()
super();
}
public?Site(Integer?id,?String?name)
this.id?=?id;
this.name?=?name;
this.list?=?new?ArrayListRoute();
public?Integer?getId()
return?id;
public?void?setId(Integer?id)
public?String?getName()
return?name;
public?void?setName(String?name)
public?ListRoute?getList()
return?list;
public?void?setList(ListRoute?list)
this.list?=?list;
//?添加线路
public?boolean?addRoute(Route?route)
return?this.getList().add(route);
//?删除线路
public?boolean?removeRoute(Route?route)
return?this.getList().remove(route);
public?String?toString()
public?boolean?equals(Object?obj)
if?(obj?instanceof?Site)
Site?s?=?(Site)?obj;
return?this.id?==?s.getId()?this.name.equals(s.getName());
return?false;
//线路类
import?java.util.Date;
public?class?Route
private?Integer?id;?//?给每个线路分配一个ID
private?String?name;?//?线路名称
private?ListSite?list;?//?线路所包含的站点
private?Date?startDate;?//?发班时间,从首站点算起
private?Date?endDate;?//?收班时间,从首站点算起
public?Route()
public?Route(Integer?id,?String?name,?Date?startDate,?Date?endDate)
this.startDate?=?startDate;
this.endDate?=?endDate;
this.list?=?new?ArrayListSite();
public?ListSite?getList()
public?void?setList(ListSite?list)
public?Date?getStartDate()
return?startDate;
public?void?setStartDate(Date?startDate)
public?Date?getEndDate()
return?endDate;
public?void?setEndDate(Date?endDate)
public?boolean?isHasThisSite(Site?site)
for?(Site?l_site?:?this.getList())
if?(l_site.equals(site))
return?true;
//?添加站点,成功返回true
public?boolean?addSite(Site?site)
return?this.getList().add(site);
//?移除站点,成功返回true
public?boolean?removeSite(Site?site)
return?this.getList().remove(site);
//公交系统类
public?class?TransitSystem
/**
*?1)增加、修改、删除一个条公交线路信息.
*/
private?ListRoute?routeList?;?//系统所管理的线路
private?ListSite?siteList;?//系统所管理的站点
public?TransitSystem(){
routeList?=?new?ArrayListRoute();
siteList?=?new?ArrayListSite();
//增加一条线路
public?void?addRoute(Route?route){
if(!routeList.add(route)){
throw?new?RuntimeException("系统中已存在该线路");
//修改一条线路
public?void?updateRoute(Route?route){
//根据route?的id?获取已存在系统中的route
Route?l_route?=?getRoute(route.getId());
if(l_route!=null){
//注入值
l_route.setName(route.getName());
l_route.setList(route.getList());
l_route.setStartDate(route.getStartDate());
l_route.setEndDate(route.getEndDate());
}else{
throw?new?RuntimeException("线路id不匹配,无法修改");
//获取该系统中的线路,根据id获取
public?Route?getRoute(Integer?id){
for?(Route?route?:?this.getRouteList())
if(route.getId().equals(id)){
//删除一条线路,根据对象删除
public?void?removeRoute(Route?route){
if(!this.getRouteList().remove(route)){
throw?new?RuntimeException(route.getId()+"线路不存在");
//增加一条公交站点
public?void?addSite(Site?site){
if(!this.siteList.add(site)){
throw?new?RuntimeException(site.getId()+"站点已存在");
//删除一条公交站点
public?void?removeSite(Site?site){
if(!this.getSiteList().remove(site)){
throw?new?RuntimeException(site.getId()+"站点不存在");
//修改一条公交站点
public?void?updateSite(Site?site){
Site?l_site?=?getSite(site.getId());
if(l_site!=null){
l_site.setName(site.getName());
l_site.setList(site.getList());
throw?new?RuntimeException("站点id不匹配,无法修改");
//获取该系统中的公交站点,根据id获取
public?Site?getSite(Integer?id){
for?(Site?site?:?this.getSiteList())
if(site.getId().equals(id)){
//按线路名称查询公交线路信息
public?Route?getRouteByName(String?name){
if(route.getName().equals(name)){
return?route;
return?null;
//根据途经车站查询公交线路
public?ListRoute?getRouteBySite(Site?site){
return?site.getList();
public?ListRoute?getRouteList()
return?routeList;
public?void?setRouteList(ListRoute?routeList)
this.routeList?=?routeList;
public?ListSite?getSiteList()
return?siteList;
public?void?setSiteList(ListSite?siteList)
this.siteList?=?siteList;
//测试类
import?java.text.ParseException;
import?java.text.SimpleDateFormat;
import?java.util.Random;
public?class?_Test
public?static?void?main(String[]?args)?throws?ParseException
TransitSystem?system?=?new?TransitSystem();
SimpleDateFormat?format?=?new?SimpleDateFormat("hh:MM");
if?(i?10)
system.addRoute(new?Route(i,?"线路"?+?i,?startDate,?endDate));
system.addSite(new?Site(i,?"站点"?+?i));
ListSite?siteList?=?system.getSiteList();
//?为系统中的站点添加线路
for?(Route?route?:?system.getRouteList())
//?每条线路?随机添加N个站点
int?n?=?new?Random().nextInt(siteList.size());
for?(int?i?=?0;?i?n;?i++)
//?每个站点也是随机,如重复,则添加失败
int?x?=?new?Random().nextInt(siteList.size());
if?(!route.isHasThisSite(siteList.get(x)))
route.addSite(siteList.get(x));
//?同时该站点也添加该线路
siteList.get(x).addRoute(route);
//?查询所有的线路所包含的站点
System.out
.println(route.getName()?+?"?:对应的站点集合:"?+?route.getList());
//?查询所有的站点对应的线路
for?(Site?site?:?system.getSiteList())
System.out.println("站点"?+?site.getName()?+?"?:对应的线路集合:?"
+?site.getList());
你说的java源代码是指编译成的class文件前的java文件.
当我们运行.java文件时,它会被系统编译成.class文件,例如Test.java编译之后就是Test.class,
源文件就是指Test.java文件,
一般部署项目时,有.class文件就可以发布运行了,但是如果想修改这个系统,.class是不能修改的,要有.java文件才能修改
也可以上网去下反编译软件,就是能把.class文件大部分还原成.java文件的工具,但不是100%还原,而且如果不是正版的,小心有毒啊,什么的.
package com.regex;
import java.io.*;
import java.net.URLDecoder;
import java.util.regex.*;
public class Regex {
private int REMARK=0;
private int LOGIC=0;
private int PHYSIC=0;
boolean start=false;
* @param args
public static void main(String[] args) { //测试方法
// TODO Auto-generated method stub
Regex re=new Regex();
re.regCount("Regex.java");
System.out.println("remark Line: "+re.REMARK);
System.out.println("logic Line: "+re.LOGIC);
System.out.println("physic Line: "+re.PHYSIC);
}/**
* @author BlueDance
* @param s
* @deprecated count
public void regCount(String s){
String url=null;
try {
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
BufferedReader br=new BufferedReader(new FileReader(new File(url)));
String s1=null;
while((s1=br.readLine())!=null){
PHYSIC++;
if(CheckChar(s1)==1){
REMARK++;
System.out.println("纯注释行:"+s1);
LOGIC++;
System.out.println("非纯注释行:"+s1);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
}catch(IOException e){
*
* @return int
* @version check s
public int CheckChar(String s){
if(s!=null)
s1=s.trim();
//System.out.println(regCheck(s1,re));
if(regCheck(s1,"(//.*)")) //判断//开头的为纯注释行
return 1;
if(regCheck(s1,"(.*[;{})] *//.*)")) //判断不是//开头的非纯注释行
if(regCheck(s1,"(//*.*)")){ //判断/*开头的纯注释行
start=true;
if(regCheck(s1,"(.*[;{})]//*.*)")){ //判断不是/*开头的非纯注释行
if(regCheck(s1,"(.* */*/)")){ //判断*/结尾的纯注释行
start=false;
if(regCheck(s1,"(.* */*/.*)")!strCheck(s1)){ //判断不是*/结尾的非纯注释行
if(strCheck(s1)){
if(start==true) //状态代码,start即/*开始时start=true*/结束时为false
}//aeee
* @param re
* @return boolean
public boolean regCheck(String s,String re){ //正则表达试判断方法
return Pattern.matches(re,s);
public boolean strCheck(String s){ //中间有*/的字符判断 此方法最关键
if(s.indexOf("*/")0){
int count=0;
String y[]=s.split("/*/");
boolean boo[]=new boolean[y.length];
for (int i = 0; i y.length-1; i++) {
char c[]=y[i].toCharArray();
for (int j = 0; j c.length; j++) {
if(c[j]=='\\'c[j+1]=='"'){
count++;
boo[i]=true;
boo[i]=false;
for(int i=0;iboo.length;i++){
if(!boo[i])
return false;
return true;
public int countNumber(String s,String y){ //此方法为我前面写的字符串出现次数统计方法,不懂的可以看我前面的文章
String [] k=y.split(s);
if(y.lastIndexOf(s)==(y.length()-s.length()))
count=k.length;
else
count=k.length-1;
if(count==0)
System.out.println ("字符串\""+s+"\"在字符串\""+y+"\"没有出现过");
return count;
return -1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GoodLucky extends JFrame implements ActionListener{
JTextField tf = new JTextField(); //实例化一个文本域
//设置两个按钮
JButton b1 = new JButton("开始");
boolean isGo = false;
//构造函数
public GoodLucky(){
b1.setActionCommand("start");//在开始按钮上设置一个动作监听 start
JPanel p = new JPanel(); //实例化一个可视化容器
//将两个按钮添加到可视化容器上面,用add方法
p.add(b1);
//在两个按钮上增加监听的属性,自动调用下面的监听处理方法actionPerformed(ActionEvent e),如果要代码有更好的可读性,可用内部类实现动作
//监听处理.
b1.addActionListener(this);
this.getContentPane().add(tf,"North"); //将上面的文本域放在面板的北方,也就是上面(上北下南左西右东)
this.getContentPane().add(p,"South"); //将可视化容器pannel放在南边,也就是下面
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置用户在此窗体上发起 "close" 时默认执行的操作,参数EXIT_ON_CLOSE是使用 System exit 方法退出应用程序.仅在应用程序中使用
Cursor cu = new Cursor(Cursor.HAND_CURSOR); //用指定名称创建一个新的定制光标对象,参数表示手状光标类型
this.setCursor(cu); //为指定的光标设置光标图像,即设置光标图像为上面所创建的手状光标类型
this.setVisible(true); //将面板可视化设置为true,即可视,如果为false,即程序运行时面板会隐藏
tf.setText("welcome you! "); //设置面板的标题为欢迎
this.go(); //调用go方法
public void go(){
if(isGo == true){ //上面所定义的isGo的初始值为false,所以程序第一次到此会跳过
String s = ""; //设置空字符串
if(i 10){
s = s + " 0" + i; //如果产生的随机数小于10的话做处理:这里就牵扯到一个重要的概念,简单叙述一下:
/*
当一个字符串与一个整型数项相加的意思是连接,上面的s = s + " 0" + i的意思是字符串s链接0再连接整型i值,而不会导致0和整型的i相加,
s = s + " " + i; //如果产生的随机数比10打的话,那么加上空格显示,即数字和数字之间有个空格
tf.setText(s); //将产生的随机数全部显示在文本域上,用文本域对象tf调用它的设置文本的方法setText(String)实现.
//以下为线程延迟
try{
Thread.sleep(10); //线程类同步方法sleep,睡眠方法,括号里的单位为ms.
}catch(java.lang.InterruptedException e){
e.printStackTrace(); //异常捕获,不用多说.
//以下是上面设置的事件监听的具体处理办法,即监听时间处理方法,自动调用
public void actionPerformed(ActionEvent e){ //传入一个动作事件的参数e
String s = e.getActionCommand(); //设置字符串s来存储获得动作监听,上面的start
执行else语句块中的语句,isGo设置为false,将不执行上面go中的循环语句块,从而停止产生随机数,并显示,并且把开始按钮设置为可用,而把
停止按钮设置为不可用,等待用户按下开始再去开始新一轮循环产生随机数.
if(s.equals("start")){ //如果捕获到start,也就是用户触发了动作监听器,那么下面处理
isGo = true; //设置isGo为true
b1.setEnabled(false); //将开始按钮设置为不可用
isGo = false; //将isGo设置为false,isGo为循环标志位
b1.setEnabled(true); //设置开始按钮为可用
public static void main(String[] args){
new GoodLucky(); //产生类的实例,执行方法
要是web呢,就要看看wap的相关知识,还要准备好空间和域名,租一个就行.
这个系统你要有公交的数据,这个数据不知道你怎么获得,但是必须要有才能做.常用的sql语句增删改查(select、insert、delete、update)就够了.
还有,你要做成地图的形式还是文本框查询的形式?地图的形式你还要弄到地图的数据......不是那么简单的事情.当然你可以看看Google和mapabc等提供没有相关接口,调用它们的接口你会省很多事.
这个你看 那里的,有的地方的公交公司有webserver接口,你直接调用查询
在Eclipse中查看JDK类库的源代码
设置:
①点 "window"- "Preferences" - "Java" - "Installed JRES"
dt.jar是关于运行环境的类库,主要是swing的包?
tools.jar是关于一些工具的类库?
rt.jar包含了jdk的基础类库,也就是你在java doc里面看到的所有的类的class文件
使用:
执行下列其中一项操作:?
①从菜单栏中,选择浏览 打开声明?