Java Project

the name of this project is ProjecTest:

class ProjectTest

//Written by Tianmo

import java.util.*;

/*
 * package file include write and read
 */
import java.io.File ;
import java.io.OutputStream ;
import java.io.FileOutputStream ;

/*
 * package IOE try and catch
 */
import java.io.IOException;
import java.awt.Desktop;
import java.lang.*;

/*
 * the project:projectTest.java
 * 
 * the access of the whole project
 */

public class ProjectTest {
	
	  protected Member ms[] = null;
	  
	  protected int num = 0;//接收用户输入,将产生的对象
	  
	  protected String fileName = "test.html";//默认存储HTML文件名字
	  
	  protected String savePath = "D:" + File.separator + fileName;//默认存储于HTML文件路径
	   
	  public static void main(String[] args) {
		  
		  //global pointer
		  ProjectTest p = new ProjectTest();
		
		  //the choice which you want to 		
		  char choice;
		 
		  while(true){
			 
			 p.showMenue();//display menu
			 
			 choice = ScreenIO.promptForChar("Enter H/?,G,S,I,L ,D or ?(for help):");
			 
			 switch(Character.toUpperCase(choice)){
			 
			 case 'G':p.generateMembers();break;
			  
			 case 'S':p.sortMembers();break;
			  
			 case 'I':try {
				 
						p.saveIntoHTMLFile();
						
					} catch (Exception e) {
						
						e.printStackTrace();
						
					}break;
					
			 case 'L':try {
				  
						p.lauchBrowserFile();
						
					} catch (IOException e) {
						
						e.printStackTrace();
						
					}break;
					
			 case '?':p.showMenue();break;
			  
			 case 'H':p.showMenue();break;
			  
			 case 'D':p.display();break;
			  
			 case 'E':System.exit(0);
			 
			  		  System.out.println("exit !");
			  		  
			  		  return;			  
			  
			  }//end switch
			 
			}//end while
		
	}//end main
	  
	
	//generate Members
	public void generateMembers(){
		
		num = ScreenIO.promptForInt("\tHow many members to be generaterd: ");
		
		ms = new Member[ num ];

		Random rdn = new Random();
		
		int randNum = 0;
		 
		for(int i = 0; i < num; i++){
			
			randNum = rdn.nextInt(5);
			
			switch( randNum ){
			
			case 0:ms[i] = new Member();;break;
			case 1:ms[i] = new Student();break;
			case 2:ms[i] = new Employee();break;
			case 3:ms[i] = new Staff();break;
			case 4:ms[i] = new Faculty();break;
			
			}//end switch
			 
		 }//end for
		 
	}//end generateMembers
	
	//sort members
	public void sortMembers(){
		
		//按ID 姓名排序
		if(null == ms){
			
			System.out.println("Please run the gernerate function first.");
			return;
		}//end if
	
		java.util.Arrays.sort(ms);	
		
		
	}//end sortMembers
	
	public void saveIntoHTMLFile()throws Exception{
		 
		//第1步、声明File对象
		File f = new File(savePath);// 声明File对象
		
		// 第2步、通过子类实例化父类对象
		OutputStream out = null ;	// 准备好一个输出的对象
		out = new FileOutputStream(f)  ;	// 通过对象多态性,进行实例化
		
		// 第3步、进行写操作.准备输入的内容
		String head = "<!DOCTYPE html><html><head><title>saveIntoHtml</title></head><body><table border=1><tr>" +
				      "<td>ClassName</td><td>ID</td><td>firtName</td><td>lastName</td><td>Major</td>" + 
				      "<td>GPA</td><td>Department</td><td>yearHired</td><td>Degree</td><td>jobTitle</td></tr>" ;		
		String body = "" ;
		String className = "";
		
		for(int i = 0; i < num; i++){
			
			body += "<tr>" ;
			
			className = ms[i].getClass().getName();//get className
			
			if("Member" == className)		
				body += "<td>Member</td>" + ms[i].toString() + "<td>null</td><td>null</td><td>null</td><td>null</td><td>null</td><td>null</td>";
			
			else if("Employee" == className)
				body += "<td>Employee</td>" + ms[i].toString()+ "<td>null</td><td>null</td>";
			
			else if("Student" == className)
				body += "<td>Student</td>"  + ms[i].toString();
			else
				body += ms[i].toString();
			//end if
			
			//body += ms[i].toString();
			
			body += "</tr>";
		}		
		String tail = "</table></body></html>" ;
		
		String str = head + body + tail;
		byte b[] = str.getBytes();// 只能输出byte数组,所以将字符串变为byte数组
		
		for(int i = 0; i < b.length; i++){// 采用循环方式写入
			
			out.write(b[i]); // 每次只写入一个内容
		}
		
		// 第4步、关闭输出流
		out.close() ;
		
	}//end saveIntoHTMLFile
	
	
	//使用浏览器打开已经保存的网页
	public void lauchBrowserFile()throws IOException{
		
		//使用默认浏览器打开
		//环境:需要jdk1.6以上版本
        //判断当前系统是否支持Java AWT Desktop扩展
        if(java.awt.Desktop.isDesktopSupported()){
        	
            try {
                //创建一个URI实例            
                java.net.URI uri = java.net.URI.create(savePath.replace('\\', '/')); //生成uri,将文件分隔符'\'替换成'/'
                
                //获取当前系统桌面扩展
                java.awt.Desktop dp = java.awt.Desktop.getDesktop();
                
                //判断系统桌面是否支持要执行的功能
                if(dp.isSupported(java.awt.Desktop.Action.BROWSE)){
                   
                	//获取系统默认浏览器打开链接
                    dp.browse(uri);    
                }//end if
                
            } catch(java.lang.NullPointerException e){
            	
                //此为uri为空时抛出异常
            } catch (java.io.IOException e) {
            	
                //此为无法获取系统默认浏览器
            }//end try
            
        }//end if	

	}//lauchBrowserFile
	
	
	//display menu	
	public void showMenue(){
		
		String menu = "";
		menu += "\t============== CS 294 Assignment 1 ===============\n";
		menu += "\tG/g:   Ask for a N, and generate N members of mixed \n"+
              "\tMember class's objects, and store in Vector  Class Object.\n";
		menu += "\tS/s/ : Sort the memebr in the array in ascending order.\n";
		menu += "\tI/i/ : Save objects inside vector into a HTML file.\n";
		menu += "\tL/l  : Launch the default internet browser to\n"+ "\t display the generated HTML file.\n";
		menu += "\t--------------------------------------------------\n";
		menu += "\tH/h/?: Show menu.\n";
		menu += "\tD/d  : Display all members.\n";
		menu += "\tE/e  : Exit\n";
		menu += "\t=================================================\n";
		
		System.out.println(menu);//show menu
		
	}
	
	//print the object which already generate
	public void display(){
		
		for(int i = 0;i < num;i ++){
			
			System.out.println("\tThe object is :" + i+ "  " + ms[i]);
			
		}//end for
		
	}//end display	

}//end the projectTest

public interface Names {

    // Fields in interface are always and implicitly public, static and final.
    // All methods in interface are implicitly public and abstract.

    public static final String sport [] = {
	"Basketball", "Table Tennis", "Swiming", "Tennis", "Golf", "Hockey",
	"Target Shooting", "VolleyBall", "Soccer", "FootBall"};

    public static final String department [] = {
	"Math", "Business", "Moden Language", "Dentistry", "Optomistry",
	"Computer Sci.", "Pharmacy", "Engineering", "Fine Arts", "MIS",
	"Biology", "Nursing"};

    public static final String title [] = {
	"Accountant", "Adm. Assit.", "Techician", "Manager" };
 
    public static final String position[] = {
	"Lecturer", "Assoc. Prof", "Assit. Prof.", "Professor" };
	
    public static final String degree[] = { "B.S.", "M.S.", "Ph.D.", "M.D." };

    public static final String skill[] = {
	"Typist", "Admin", "Admin. Assist.", "PC Main.", "Elec.", "Account.", "Purch." };

    public static final String lastName [] = {
    	"Abdalla", "Andres", "Anzai", "Armstrong", "Arvig", "Ash", "Baca", "Badine",
	"Baehr", "Bair", "Baligad", "Barlow", "Barrett", "Becker", "Bell",
	"Benbow", "Biggs", "Blevins", "Blood", "Bohan", "Bond", "Bonner",
	"Bosch", "Bryson", "Buechele", "Bullis", "Burk", "Burns", "Byron",
	"Calderon", "Careuthers", "Carr", "Carson", "Carter", "Castle", "Chan",
	"Charney", "Christenson", "Cisneros", "Cliton", "Coldewey", "Coodey",
	"Cook", "Cooper", "Coy", "Currie", "Curtis", "Dirkse", "Dirscoll",
	"Dodrill", "Ehlert", "Elias", "Elliott", "Enterline", "Ericsson",
	"Fernandez", "Fisher", "Flory", "Freese", "Fruzza", "Fu", "Fuhrman", "Gage",
	"Garcia", "Garmon", "Giffith", "Gill", "Gillen", "Glascock", "Gomez",
	"Goraya", "Greer", "Hansen", "Hartley", "Hawkins", "Hemme", "Hensley",
	"Hentges", "Herron", "Hightower", "Hines", "Holloway", "Holmes",
	"Issac", "Jackson", "Jagodin", "Jiang", "Johnson", "Jordan", "Jouda", "Joven",
	"Kalpesh", "Katz", "Kaur", "Kegley", "Kimsey", "King", "Kohn", "Kone",
	"LaCasse", "Lackey", "Lathrop", "Le", "Levy", "Lynos", "Maas", "Mackall",
	"Madsen", "Magee", "Maldonado", "McDaneld", "McMillian", "McNeill",
	"Meadors", "Medina", "Metz", "Millikin", "Minner", "Mondragon", "Monge", "Moore",
	"Moreno", "Murkland", "Musick", "Myers", "Neal", "Ngo", "Nolan", "Nunez",
	"O'Neil", "Oropeza", "Owen", "Patel", "Pfister", "Philips", "Picato",
	"Porras", "Porter", "Pratt", "Pryor", "Ragle", "Rai", "Raja", "Rill",
	"Roberts", "Roddy", "Rose", "Roux", "Rubio", "Ruiz", "Saito", "Samidin",
	"Sampson", "Sanchez", "Scanlan", "Schmidt", "Schoberg", "Sheppard",
	"Simmons", "Sison", "Smith", "Snow", "Soto", "Sozinho", "Stevens",
	"Stidham", "Strange", "Sy", "Tamayo", "Taylor", "Thomas", "Tran", "Vincent",
	"Walker", "Wandke", "Ward", "Warner", "Waugh", "Webb", "Wells", "White",
	"Wilson", "Winther", "Wuertz", "Yong" }; 

   public static final String firstName [] = {
	"Aaron","Alan", "Ali", "Alicia","Andrew", "Anne", "Anthony", "Archie", "Ariel",
	"Arlene", "Barbara", "Bebedict", "Benjamin", "Bey-Fen", "Bikram", "Brain",
	"Brandon", "Brent", "Brian", "Brock", "Candice", "Cathleen", "Chad",
	"Charles", "Charlie", "Christopher", "Cindy", "Clinton", "Craig", "Daniel",
	"Danna", "David", "Dean", "Denise", "Dexter", "Diane", "Dinna", "Donna",
	"Douglas", "Eduardo", "Edward", "Elsa", "Eric", "Ernesto", "Fernando",
	"Francisco", "Frank", "Gabby", "Garmund", "Garvin", "Genevieve", "George",
	"Gil", "Gregory", "Gurinder", "Hemant", "Herman", "Hernando", "Isabel",
	"James", "Janet", "Janice", "Jarret", "Jason", "Javier", "Jeffrey",
	"Jennifer", "Jeremy", "Jerold", "Jerrie", "Jim", "Joanna", "Joe", "Joel", "John",
	"Jon", "Jonathan", "Jose", "Joseph", "Josephine", "Josh", "Joshua",
	"Julie", "Kenneth", "Kenny", "Kent", "Kristi", "Kurt", "Kyle", "Lance",
	"Laura", "Leslie", "Malcolm", "Maneje", "Manja", "Marco", "Marcos",
	"Marcus", "Marianna", "Maritza", "Mark", "Marques", "Masaaki", "Mathew", "Matt",
	"Mayur", "Melissa", "Michael", "Miera", "Mike", "Mina", "Mohamed", "Moises",
	"Morgan", "Muntaga", "Myron", "Nathan", "Nilli", "Norma", "Olga",
	"Paradorn", "Patel", "Patrick", "Paul", "Pedro", "Peter", "Philip",
	"Preet", "Ralf", "Ralph", "Raymond", "Reuben", "Ricardo", "Richard",
	"Robert", "Roberto", "Rohit", "Ronald", "Ronne", "Rosa", "Roy", "Rushabh",
	"Ryan", "Samat", "Sara", "Sarah", "Scott", "Sean", "Sergio", "Shahzad", "Shawn",
	"Shi-Wei", "Silvia", "Simon", "Stacy", "Stephanie", "Stephen", "Steven",
	"Sukhum", "Susan", "Suzanne", "Tahnee", "Tahra", "Tam", "Tammy", "Tate",
	"Terry", "Thomas", "Thonas", "To", "Todd", "Tommy", "Travis", "Trevor",
	"Troy", "Valerie", "Ven", "Victor", "Vidya", "Vikramjwed", "Wernher",
	"Wesley", "William", "Yu" } ;
}

import java.util.*;

/*
 * Member class : In file Member.java
 * 
 * Team Member: 
 * 
 * A based class for Student, Employee, Staff, and Faculty classes.
 */

/*
 * Access specficiers:public, protect, private, default (package-wide accessable)
 */

public class Member implements Comparable/*<Member>*/ {

	protected long ID;//100000000~999999999
	
	protected String fName;
	
	protected String lName;
	
	static Random rdn = new Random();
	
	
	//constructor is function with following function:
	//1. no return value;
	//2. name the same with class name	
	//3. default constructor with no Parameter		
	public Member(){
		
		generate();				
	}
	
	/*
	public int compareTo( Member m ){
		//return (int)(ID - m.ID); //sort by ID
		//sort by name 
		int k = lName.compareTo( m.lName );
		return k!=0 ? k:fName.compareTo ( m.fName );
		 
	}
	*/
	
	// copy constructor	: a constructor with one parameter of this class type	
	public void generate(){
		
		//ID = (long) (Math.random() % (1000000000 -100000000 +1)+100000000);
		
		ID = rdn.nextInt(1000000000 -100000000) + 100000000;
		
		fName = Names.firstName[(int) ( rdn.nextInt(Names.firstName.length) )];
		
		//fName = new String (Names.firstName[Math.rand() % Names.firstName.length]);
		
		lName = Names.lastName[(int) ( rdn.nextInt(Names.lastName.length))];	
		
	}// end generate
	
	//输出类的数据信息
	public String toString(){
		
		return toString(true);

	}
	
	//输出类的数据信息  lab用于控制显示表头
	public String toString( boolean Lab){
		
		//String.format 
		//-: 指定为左对齐,默认右对齐 
		//0: 指定缺字符时用0填充
		//return String.format("<td>%s</td>  <td>%03d-%02d-%04d</td>  <td>%15s</td>  <td>%-15s</td>",
							//Lab ? "Member":" ",
		return String.format("<td>%03d-%02d-%04d</td><td>%15s</td><td>%-15s</td>",
							ID/1000000,
							ID%1000000/10000,
							ID%10000,
							fName,
							lName);
	}// end toString

	//实现compareTo() 接口,用于排序  
	public int compareTo(Object o) {
		
		Member m = (Member)o;
		
		int result = 0;
		
		result = (int)(ID - m.ID);
		
		if(result == 0){
			
			result = fName.compareTo(m.fName);
			
			if(result == 0){
				
				result = lName.compareTo(m.lName);
			
			}//end if
			
		}// end if
		
		return result;
	}//end compareTo
	
}//end class Member

public class Student extends Member {
	
	protected String major; 
	
	protected float GPA;
	
	//constructor	
	public Student(){
		
		generate();
	}
	
	//generate data
	public void generate(){
		
		super.generate();
		
		//major=Names.department[(int)(Math.random())%Names.department.length];
		
		major = Names.department[(int) ( rdn.nextInt(Names.department.length) )];
		
		GPA = ( rdn.nextInt(300) + 100 ) / 100.0f;
		
	}//end generate
	
	
	//print the datas
	public String toString(){
		
		return toString(true);
		
	}
	
	//输出类的数据信息 ,lab用于控制显示表头
	public String toString( boolean lab){
		//return String.format("<td>%3s<td> %45s <td>%15s</td> <td>%-2.2f</td> <td>null</td><td>null</td><td>null</td><td>null</td>",
							//lab?"Student":" ",
		return String.format("%45s<td>%15s</td><td>%-2.2f</td><td>null</td><td>null</td><td>null</td><td>null</td>",
							super.toString(false),
							major,
							GPA);		
	}//end toString
	
	//实现compareTo() 接口,用于排序
	public int compareTo(Object o) {
		
		return super.compareTo(o);
		
	}//end compareTo

}//end class Student

/*
 * Employee class : In file Employee.java
 * 
 * Team Member: 
 * 
 * A based class for  Staff and Faculty classes.
 */

/*
 * Access specficiers:public, protect, private, default (package-wide accessable)
 */

public class Employee extends Member{

	protected String department;
	
	protected int yearHired;

	
	
	//constructor is function with following function:
	//1. no return value;
	//2. name the same with class name		
	//3. default constructor with no Parameter		
	public Employee(){
		
		generate();		
		
	}
	
	// copy constructor	: a constructor with one parameter of this class type
	public void generate(){
		
		super.generate();
		
		//department=Names.department[(int)(Math.random())%Names.department.length];
		
		department = Names.department[rdn.nextInt(Names.department.length)];
		
		yearHired  = rdn.nextInt(30);
	
	}//end generate
	
	//输出类的数据信息
	public String toString(){
		
		return toString(true);

	}
	
	//输出类的数据信息lab控制输出表头
	public String toString( boolean Lab){
	
		//return String.format("<td>%s</td>  %45s  <td>null</td><td>null</td><td>%15s</td>  <td>%2d</td> <td>null</td><td>null</td>",
							//Lab ? "Employee":" ",
		return String.format("%45s  <td>null</td><td>null</td><td>%15s</td>  <td>%2d</td>",
							super.toString(false),
							department,
							yearHired);	
		
	}//end toString
	
	public int compareTo(Object o) {
				
		return super.compareTo(o);
		
	}//end compareTo
	
}//end class Employee

public class Faculty extends Employee{
	
	protected String degreeHeld;
	
	public Faculty(){
		
		generate();		
		
	}

	public void generate(){
		
		super.generate();
		
		//degreeHeld=Names.degree[(int)(Math.random())%Names.degree.length];
		
		degreeHeld = Names.degree[rdn.nextInt(Names.degree.length)];
	
	}//end generate
	
	public String toString(){
		
		return toString(true);

	}
	
	public String toString( boolean Lab){
		
		return String.format("<td>%s</td> %45s  <td>%15s</td> <td>null</td>",
							Lab ? "Faculty":" ",
							super.toString(false),
							degreeHeld);			
	}//end toString
	
	
	public int compareTo(Object o) {
		
		return super.compareTo(o);
		
	}//compareTo
	
}//end class Faculty

public class Staff extends Employee{
	
	protected String jobTitle;

	
	public Staff(){
		
		generate();		
		
	}
	
	public void generate(){
		
		super.generate();
		
		//jobTitle=Names.title[(int)(Math.random()%Names.title.length];
		
		jobTitle = Names.title[rdn.nextInt(Names.title.length)];
	
	}//end generate
	
	public String toString(){
		
		return toString(true);

	}
	
	public String toString( boolean Lab){

		return String.format("<td>%s</td>  %45s <td>null</td><td>%15s</td>",
							Lab ? "Staff":" ",
							super.toString(false),
							jobTitle);		
	}//end toString
	
	public int compareTo(Object o) {
			
		return super.compareTo(o);
	
	}//end compareTo	

}//end class Staff



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Javaproject是一个开源的Java编程练手项目,提供了许多具有挑战性的编程任务,适合Java初学者和中级开发人员进行练习和提高。如果你想下载Javaproject,可以在GitHub上搜索Javaproject并找到其代码库。在这里,你可以选择从该项目的主页或Github代码库中下载项目,也可以使用命令行工具,如git clone来获取代码库。下载后,你可以通过导入项目到Eclipse或其他Java开发工具中来开始使用JavaprojectJavaproject包含多个难度级别的编程任务和测试用例,通过完成这些任务,你可以提高自己的Java编程能力和经验。如果你在使用Javaproject时遇到困难或有任何问题,请查看项目的文档和问题解答,或向Javaproject的开发者社区求助。总之,Javaproject对于提升Java编程能力和经验非常有帮助,具有非常高的学习和练习价值。 ### 回答2: 如果您想要下载Java项目,首先需要确定您需要下载的项目类型和源代码类型。在确定项目类型之后,您可以使用GitHub等开源代码托管平台或者SourceForge等资源库下载您需要的Java项目。同时,您也需要查找项目的依赖项,确保您可以正确地编译和运行项目。 如果您是一位Java应用程序员,可以从Eclipse或其他Java IDE的开发环境中下载Java项目。这样,您可以通过Eclipse的用户界面自动化完成以下工作: - 导入已有的Java项目 - 编译Java项目 - 调试Java代码 - 导出Java项目 另外,各种涉及Java的开发环境,如Eclipse、NetBeans、IntelliJ IDEA等,还提供了一些工具,如版本控制管理、代码质量评估等。这些工具有助于Java项目团队协作开发和代码管理。 如果您是Java开发新手,您可以首先寻找相关的Java教程、文档和示例。在学习的过程中逐渐了解Java项目的基本架构和原理,并适当地下载一些小型Java项目来练习实践。在编码中注意代码规范,确保您的Java项目兼容性较强。 ### 回答3: javaproject是一个在Java编程语言中使用的开源项目。如果您需要下载javaproject,您可以前往官方网站或者GitHub上进行下载。只需搜索javaproject,就能找到一些相关的链接。 这个项目的典型用例包括:Java SE和Java EE应用程序开发、Java后端服务和Web服务开发以及与不同数据库的连接等等。下载javaproject支持您在Java编程方面的许多需要。 在下载javaproject之前,请确保您已经安装了Java SDK和IDE等必要的开发环境。此外,建议您阅读一些相关的文档和教程以加深对Java编程的了解,并利用Java社区中的一些资源和帮助来支持您的项目。无论您是一位新手还是一位有经验的Java程序员,下载javaproject都将为您提供许多方便和帮助,使您能够更好地开发Java应用程序和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值