定義乙個學生選課的操作表:三張表
學生表:編號,姓名,年齡
課程表:課程編號,課程名稱,學分
學生-課程關聯表:學生編號,課程編號,成績。
要求可以輸出如下資訊:
(1)可以找到一門課程參加此課程的所有資訊以及成績
(2)根據乙個學生,找到所參加的所有課程和每門課程的成績
第一步:定義出基本類,暫不考慮所有的關係。
public class student
public student(int stuid,string name,int age)
public string getinfo()
}public class course
public course(int cid,string name,int credit)
public string getinfo()
}第二步:乙個學生有多門課,一門課有多個學生,所以應該儲存有各自物件的陣列,
即在student中新增private course courses;
在course中新增private student students;
第三步:學生和每門課程之間都有乙個成績。現在發現關聯表中不僅有關聯字段,而且有普通字段成績,那麼應該再建立乙個類studentcourse,其中在studentcourse中有了對於course的定義,所以可刪除。(因為這是在student表中進行選課的操作,所以刪除student中 的course,而且在student中加入studentcourse有student來進行操作)
第四步:進行要實現的操作.
最終的**如下:
public class test );
stu2.setstudentcourses(new studentcourse );
stu3.setstudentcourses(new studentcourse );
//3設定課程和學生的關係
ca.setstudentcourses(new studentcourse );
cb.setstudentcourses(new studentcourse );
//根據結構取出資料
//1 可以找到一門課程,以及參加此課程的所有學生資訊,和他的成績
system.out.println(ca.getinfo());
for(int x=0;xsystem.out.println(ca.getstudentcourses()[x].getstudent().getinfo()+",成績"+ca.getstudentcourses()[x].getscore());
system.out.println();
}//2 根據學生找到與其相關的課程資訊
system.out.println(stu1.getinfo());
for(int x=0;xsystem.out.println(stu1.getstudentcourses()[x].getcourse().getinfo()+",成績是"+stu1.getstudentcourses()[x].getscore());}}
}public class course
public void setstudentcourses(studentcourse studentcourses)
public student getstudents()
public void setstudents(student students)
public course()
{}public course(int cid,string name,int credit)
public string getinfo()
}public class student
public void setstudentcourses(studentcourse studentcourses)
/** * public course getcourses()
public void setcourses(course courses)
* @return
*///建構函式
public student()
{}public student(int stuid,string name,int age)
public string getinfo()
}public class studentcourse
public studentcourse(student student,course course,double score)
public student getstudent()
public course getcourse()
public double getscore()
結果是:
課程編號為1001,名稱為物理,學分是3
學生編號為1,姓名為張颯,年齡是12,成績78.0
學生編號為3,姓名為阿史蒂芬,年齡是123,成績90.0
學生編號為1,姓名為張颯,年齡是12
課程編號為1001,名稱為物理,學分是3,成績是78.0
課程編號為1002,名稱為英語,學分是4,成績是90.0
資料表與簡單Java類(多對多)
定義乙個學生選課的操作表 三張資料表 要求 可以實現如下的資訊輸出 定義出基本類,暫時不考慮所有的關係class student public student int stuid,string name,int age public string getinfo class course publi...
資料表多對多
今天學習了資料表多對多,由於有圖理解起來也輕鬆了很多,使用聯合主鍵進行多對多表的關係的管理 中間表 create database auth character set utf8 使用者表 create table users id varchar 32 primary key,name varch...
在MySQL資料庫建立多對多的資料表關係
一 問題 在業務中遇到這樣的情況 我有兩張無關表student和course。student表中的字段是 stu id 和stu name。如圖 course表中的字段是cour id和cour name。如圖 我想要查詢某個同學選了哪些課和某門課被哪些同學選了。這是資料庫中典型的多對多的問題,二 ...