學(xué)了兩天面向?qū)ο蟮乃枷耄趯懘a的過程中逐步理解舅柜,已經(jīng)對(duì)重要信息的封裝梭纹。
首先學(xué)生的一個(gè)類,對(duì)需要的基本對(duì)象進(jìn)行聲明
public class Student {//學(xué)生類
private int number;
private String name;
private int age;
private int java;
private int c_char;
private int html;
private int sql;
private int sum;
private int avg;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getJava() {
return java;
}
public void setJava(int java) {
this.java = java;
}
public int getC_char() {
return c_char;
}
public void setC_char(int c_char) {
this.c_char = c_char;
}
public int getHtml() {
return html;
}
public void setHtml(int html) {
this.html = html;
}
public int getSql() {
return sql;
}
public void setSql(int sql) {
this.sql = sql;
}
public int getSum() {
return sum;
}
public void setSum() {
this.sum = this.java+this.c_char+this.html+this.sql;
}
public int getAvg() {
return avg;
}
public void setAvg() {
this.avg = this.sum/4;
}
public String toString(){
String all="\t"+this.number+"\t"+this.name+"\t"+this.age+"\t"+this.java+"\t"+this.c_char+"\t"+this.html+"\t"+this.sql+"\t"+this.sum+"\t"+this.avg;
return all;
}
}
主程序
import java.util.*;
public class Text {//主程序
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("---請(qǐng)定義人數(shù)---");
Student[] stuArr=new Student[in.nextInt()];
Admin adminStu=new Admin();
while(true){
System.out.println("請(qǐng)選擇你要執(zhí)行的功能:");
System.out.println("10:添加一個(gè)學(xué)生");
System.out.println("11:查找一個(gè)學(xué)生");
System.out.println("12:根據(jù)學(xué)生編號(hào)更新學(xué)生信息");
System.out.println("13:根據(jù)學(xué)生編號(hào)刪除學(xué)生");
System.out.println("14:根據(jù)編號(hào)輸入學(xué)生各門成績");
System.out.println("15:根據(jù)某門成績進(jìn)行排序");
System.out.println("16:根據(jù)總分進(jìn)行排序");
System.out.println("99:退出系統(tǒng)");
String abc=in.next();
if(abc.equals("10")){
System.out.println("請(qǐng)輸入學(xué)生的姓名:");
String name=in.next();
System.out.println("請(qǐng)輸入學(xué)生的年齡:");
int age=in.nextInt();
adminStu.create(name, age, stuArr);
}else if(abc.equals("11")){
System.out.println("執(zhí)行查找學(xué)生的基本信息操作");
System.out.println("請(qǐng)輸入學(xué)生的編號(hào)進(jìn)行查找:");
int number=in.nextInt();
adminStu.select(number,stuArr);
}else if(abc.equals("12")){
System.out.println("執(zhí)行查找學(xué)生的基本信息操作");
System.out.println("請(qǐng)輸入學(xué)生的編號(hào):");
int number=in.nextInt();
System.out.println("請(qǐng)輸入學(xué)生的姓名:");
String name=in.next();
System.out.println("請(qǐng)輸入學(xué)生的年齡:");
int age=in.nextInt();
adminStu.update(number, name, age, stuArr);
}else if(abc.equals("13")){
System.out.println("刪除學(xué)生的基本信息操作");
System.out.println("請(qǐng)輸入學(xué)生的編號(hào):");
int number=in.nextInt();
adminStu.delete(number, stuArr);
}else if(abc.equals("14")){
System.out.println("----輸入成績----");
System.out.println("請(qǐng)輸入學(xué)生的編號(hào):");
int number=in.nextInt();
adminStu.input(number, stuArr);
}else if(abc.equals("15")){
System.out.println("----根據(jù)科目排序----");
System.out.println("請(qǐng)選擇需要排序的科目");
System.out.println("1:java");
System.out.println("2:c#");
System.out.println("3:html");
System.out.println("4:sql");
int num=in.nextInt();
adminStu.courseSort(num, stuArr);
}else if(abc.equals("16")){
System.out.println("----根據(jù)總分排序----");
adminStu.sumSort(stuArr);
}else if(abc.equals("99")){
System.out.println("程序退出致份!");
break;//跳出循環(huán)变抽;;System.exit(0)..程序結(jié)束
}
}
}
}
每一個(gè)功能都需要一個(gè)方法來調(diào)用氮块,所以把所有的方法弄成一個(gè)類绍载,也就是管理學(xué)生,對(duì)學(xué)生操作的一個(gè)類
import java.util.*;
public class Admin {//管理學(xué)生類
String pri="\t編號(hào)\t姓名\t年級(jí)\tjava\tc#\thtml\tsql\t總分\t平均分";
public void print(Student[] arr){//結(jié)果輸出顯示
System.out.println(pri);
for(int i=0;i<arr.length;i++){
if(arr[i]!=null){
arr[i].setSum();//調(diào)用才會(huì)執(zhí)行
arr[i].setAvg();
System.out.println(arr[i]);
}
}
}
public boolean exist(int number,Student stu){//很多子功能都與判斷比較的過程
if(stu!=null){
if(stu.getNumber()==number){;
return true;
}else{
return false;
}
}
return false;
}
public void create(String name,int age,Student[] arr){//添加學(xué)生的方法
Student stu=new Student();
stu.setName(name);
stu.setAge(age);
int i=this.setIndex(arr);
stu.setNumber(i);//編號(hào)
if(i==99999){
System.out.println("人已滿");
}else{
arr[i]=stu;
}
this.print(arr);
}
public int setIndex(Student[] arr){//有返回,輸入的值返回顯示
for(int i=0;i<arr.length;i++){
if(arr[i]==null){
return i;
}
}
return 99999;
}
public void select(int number,Student[] arr){//查詢
for(int i=0;i<arr.length;i++){
if(this.exist(number, arr[i])){
System.out.println(pri);
System.out.println(arr[i]);
return;//執(zhí)行直接結(jié)束
}
}
System.out.println("沒有這個(gè)學(xué)生存在");
}
public void update(int number,String name,int age,Student[] arr){//更新學(xué)生信息
for(int i=0;i<arr.length;i++){
if(this.exist(number, arr[i])){
arr[i].setName(name);
arr[i].setAge(age);
System.out.println("---更新學(xué)生信息成功滔蝉!---");
this.print(arr);
return;//執(zhí)行直接結(jié)束
}
}
System.out.println("---更新信息沒有成功.---");
}
public void delete(int number,Student[] arr){//刪除學(xué)生信息
for(int i=0;i<arr.length;i++){
if(this.exist(number, arr[i])){
arr[i]=null;
this.print(arr);//輸出封裝性好
return;
}
}
System.out.println("無此學(xué)生");
}
public void input(int number,Student[] arr){
for(int i=0;i<arr.length;i++){
if(this.exist(number, arr[i])){
Scanner in=new Scanner(System.in);
System.out.println("請(qǐng)輸入:"+arr[i].getName()+"的java成績");
arr[i].setJava(in.nextInt());
System.out.println("請(qǐng)輸入:"+arr[i].getName()+"的c#成績");
arr[i].setC_char(in.nextInt());
System.out.println("請(qǐng)輸入:"+arr[i].getName()+"的html成績");
arr[i].setHtml(in.nextInt());
System.out.println("請(qǐng)輸入:"+arr[i].getName()+"的sql成績");
arr[i].setSql(in.nextInt());
this.print(arr);
break;
}
}
}
public void courseSort(int num,Student[] arr){//科目排序
if(num==1){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getJava()<arr[j].getJava()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}else if(num==2){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getC_char()<arr[j].getC_char()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}
else if(num==3){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getHtml()<arr[j].getHtml()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}
else if(num==4){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getSql()<arr[j].getSql()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}
this.print(arr);
}
public void sumSort(Student[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getSum()<arr[j].getSum()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
this.print(arr);
}
}
在寫的過程中击儡,會(huì)發(fā)現(xiàn)有些操作會(huì)被重復(fù)寫(造成代碼的冗余),因此可以將重復(fù)需要的操作也寫為一個(gè)方法蝠引,只需要調(diào)用即可曙痘。寫的時(shí)候并不是一個(gè)一個(gè)類寫,需要相通的寫立肘,一邊寫一邊完善边坤。
但這個(gè)系統(tǒng)相當(dāng)?shù)暮喡热鐚W(xué)生課程名是固定的谅年,并沒有對(duì)課程做一些操作茧痒,基本的控制都是輸入數(shù)字,如果不小心輸入字符串融蹂,代碼就需要重新運(yùn)行旺订,很不方便。