* 根據成績表查詢某個人的各科成績
* 創建時間:2014-02-23 13:26
*/
//查詢個人的各科成績(課程名 成績)
private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String Sno = jTextField11.getText();
boolean flag = false;
Vector data = new Vector();
for (int k = 0; sc[k] != null; k++) {
Vector row = new Vector();
if (sc[k].GetSno()。equals(Sno)) {
flag = true;
int k1 = 0;
while (course[k1] != null) {
if (course[k1].GetCno()。equals(sc[k].GetCno())) {
row.add(course[k1].GetCname());
row.add(sc[k].GetGrade());
data.add(row);
}
k1 += 1;
}
}
}
if (!flag) {
JOptionPane.showMessageDialog(this, "該同學暫時還沒有選課成績或不存在在該同學");
}
Vector title = new Vector();
title.add("課程名");
title.add("成績");
DefaultTableModel dtm = new DefaultTableModel(data, title);
jTable4.setModel(dtm);
jTextField11.setText("");
}
/**
* 查詢該課程的選課學生信息
* 創建時間:2014-02-23 14:22
*/
//查詢課程已選人的信息
private void jButton14ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
DefaultTableModel dtm = new DefaultTableModel();//
String Cname = jTextField12.getText();
String Cno = null;
boolean flag = false;
int k1 = 0;
//由課程名從course中得到Cno
while (course[k1] != null) {
if (course[k1].GetCname()。equals(Cname)) {
Cno = course[k1].GetCno();
}
k1 += 1;
}
if (Cno == null) {
JOptionPane.showMessageDialog(this, "不存在該課程");
return;
}
Vector data = new Vector();
for (int k = 0; sc[k] != null; k++) {
if (sc[k].GetCno()。equals(Cno)) {
int k2 = 0;
flag = true;
//由課程名從course中得到Cno
Vector row = new Vector();
while (student[k2] != null) {
if (student[k2].GetSno()。equals(sc[k].GetSno())) {
row.add(student[k2].GetSno());
row.add(student[k2].GetSname());
row.add(student[k2].GetSsex());
row.add(student[k2].GetSdept());
data.add(row);
}
k2 += 1;
}
}
}
if (!flag) {
JOptionPane.showMessageDialog(this, "該課程暫時無人選");
return;
}
Vector title = new Vector();
title.add("學號");
title.add("姓名");
title.add("性別");
title.add("專業");
dtm = new DefaultTableModel(data, title);
jTable5.setModel(dtm);
jTextField12.setText("");
}
(七)、對數據的驗證代碼
public class Helper {
/**
* 功能:完成對學生學號的正確性檢驗
* 創建時間 2014-02-23 21:42
* @param Sno
*/
public static boolean checkSno(String Sno){
boolean flag=true;
char temp[]=Sno.toCharArray();
for(int i=0;i<temp.length;i++)< p="">
{
if(temp[i]<'0'||temp[i]>'9')
{
flag=false;break;
}
}
return flag;
}
/**
* 功能;完成對學號唯一性的檢驗
* 創建時間:2014-02-23 22:01
*/
public static boolean onlySno(Student []s,String Sno){
boolean flag=true;
for(int k=0;s[k]!=null;k++){
if(s[k].GetSno()。equals(Sno))
{
flag=false;break;
}
}
if(Sno==null)
{
flag=false;
}
return flag;
}
/**
* 功能:完成對學生表中年齡的正確性檢驗
* @param Sage
*/
public static boolean checkSage(String Sage)
{
boolean flag=false;
int temp=Integer.parseInt(Sage);
if(temp!=0&&temp>0&&temp<150){
flag=true;
}
return flag;
}
/**
* 功能:完成對選課表學分的正確性驗證
* @param Ccredit
* @return
*/
public static boolean checkCcredit(String Ccredit){
boolean flag=false;
double temp=Double.parseDouble(Ccredit);
if(temp>0&&((temp+"")。length()-(temp+"")。indexOf(".")-1)==1){
flag=true;
}
return flag;
}
/**
* 功能:完成對選課表的課程號的唯一性驗證
* @param Cno
* @return
*/
public static boolean onlyCno(Course []c,String Cno)
{
boolean flag=true;
for(int k=0;c[k]!=null;k++)
{
if(c[k].GetCno()。equals(Cno))
{
flag=false;break;
}
}
if(Cno==null)
{
flag=false;
}
return flag;
}
/**
* 功能:完成對選課表的課程名的唯一性驗證
* @param c
* @param Cname
* @return
*/
public static boolean onlyCname(Course []c,String Cname)
{
boolean flag=true;
for(int k=0;c[k]!=null;k++)
{
if(c[k].GetCname()。equals(Cname))
{
flag=false;break;
}
}
if(Cname==null){
flag=false;
}
return flag;
}
/**
* 功能:完成成績表的對學號的存在性驗證
* 創建時間:2014-02-24 15:29
*/
public static boolean existSno(Student s[],String Sno)
{
boolean flag=false;
for(int k=0;s[k]!=null;k++)
{
if(s[k].GetSno()。equals(Sno))
{
flag=true;break;
}
}
return flag;
}
/**
* 功能:完成成績表的對課程號的存在性驗證
* 創建時間:2014-02-24 15:35
*/
public static boolean existCno(Course c[],String Cno){
boolean flag=false;
for(int k=0;c[k]!=null;k++)
{
if(c[k].GetCno()。equals(Cno)){
flag=true;break;
}
}
return flag;
}
/***
* 功能:完成成績表的成績值的合格性驗證
* 創建時間:2014-02-24 15:40
*/
public static boolean checkGrade(String Grade)
{
boolean flag=false;
double temp=Double.parseDouble(Grade);
if(temp>=0&&temp<=100&&((temp+"")。length()-(temp+"")。indexOf(".")-1)==1){
flag=true;
}
return flag;
}
/***
* 檢測該生的該課程是否只有一個成績
* 創建時間:2014-03-11 23:02
*/
public static boolean checkOnlyOneSC(SC sc[],String sno,String cno)
{
boolean flag=true;
for(int k=0;sc[k]!=null;k++)
{
if(sc[k].GetSno()。equals(sno)&&sc[k].GetCno()。equals(cno)){
flag=false;break;
}
}
return flag;
}
四、使用說明
//對學生表的單獨操作說明如下:
1、可直接對學生表進行插入,但是學號不能重複,且學號爲只能數字。
2、點擊修改時先從表格選中要修改的行,再點擊修改,只能對除學號以外的信息修改,然後修改變爲保存字樣。
點擊保存後出現提示,是則修改,提示修改成功。否則放棄修改,將界面恢復爲主界面(第一張圖)
3、刪除時也要先從表格中選定要刪除的行,讓後點擊刪除,是則刪除,否則返回界面
4、查找時直接點擊查找按鈕,彈出一個文本框,提示只能按學號查找。
若存在該同學,則將該學生信息顯示到主界面,若不存在,則提示不存在該同學。
//對課程表的單獨操作說明如下:
1、添加時課程號不能重複,課程名也不能重複,學分只能是以爲小數。
2、修改也要先選定,在進行修改,只能修改課程的學分。與學生表操作類似。
3、刪除操作在選定後直接刪除即可,附加判斷,是否真的刪除,是則刪,不是則返回;
4、查找時直接點擊查找按鈕,彈出一個文本框,輸入課程名,按課程名查找。若找到,則顯示信息到主界面,找不到則提示不存在。
//對成績表的綜合操作
1、插入時要判斷該學生號和課程號是否在Student.txt和COurse.txt文件中存在。還有成績是不是在0~100之間,若其中有一個條件不滿足,則插入不會成功。
2、修改時只能對成績進行修改。然後點擊保存,是則保存,不是則返回。
3、刪除時從表格中選中後刪除即可。
//綜合查詢部分
//查詢個人所有課程成績
1、文本框中輸入學生學號,點擊查詢,可以查到該生所有課程成績
//查詢某門科目的選課學生信息
輸入課程名後查詢,講查詢結果添加到表格中,若不存在在該課程,則會提示課程不存在。
五、設計總結
本次課程設計其實從寒假就看到任務書,但是一直沒有下定決心去做,所以以前有好多時間可以去準備的,但是沒有付諸於實踐。開學後經過老師的詳細安排,自己也之前瞭解過數據庫的基本知識,所以一下子想到了要實現的功能,以及要控制的數據,報括學號,課程號的唯一性,成績,年齡的參照完整性,還有可控數據的處理。雖然還是有好多問題沒有得意解決,但是的確學到了好多東西,一直是我感覺到,學着去做一個大的東西,分析清楚他的各種功能,然後一點一點的查找,學習,這種學習方法真的很好。就拿這次課程設計來說,老師提出了好多界面化。考慮到用戶體驗,於是我就想用java做,但是好多東西之前根本不知道,更不用說用了。就開始網上搜索,查找資料,等一系列學習途徑,一個一個問題解決,各個擊破。最終做出了還可以操作的簡單界面,但是好多控制都沒有加上去,好多該處理的問題都出來了,途中遇到了很棘手的問題,就是刪除某一項數據,然後添加時他會給你返回"該學生學號已經存在","該課程號已經存在"等錯誤,經過仔細分析,原來是我把文件中的數據的確是刪除了,但是沒有對存儲結構裏的數據驚醒更新,也就是對象數組裏那些值還是存在的,而我所添加的判斷正是又對象數組裏的值進行處理,故而提醒新添加的數據時已經存在的。
還有就是我的綜合查詢,差一個學生的各科成績,表格中就給我重複列出各科成績信息,並且一個考場信息不止重複一次,搞得我真是煩啊,最後才發現,前面添加之後,我的對象數組是靜態的,由於對他的操作是放在類外,對後面的沒有初始化,所以給我出錯。
還有就是這次的課程設計從開始設計到初步完成,再到細化到各個功能,我都是先做了設計步驟的。今天完成那些功能,用怎麼樣的方法去完成,我都寫了詳細的文檔,所以做的時候思路清晰,遇到問題都能很快的處理掉,還有數據的存儲結構,還有完整性控制我都重新建了兩個類。這樣操作方便,容易找到錯誤,測試也很方便。所以我有了一個完整的設計思想,以及一定的設計理念,這樣對我以後用其他語言,開發其他的項目,都是很好的參考。