private void jButton

  * 根據成績表查詢某個人的各科成績

  * 創建時間: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做,但是好多東西之前根本不知道,更不用說用了。就開始網上搜索,查找資料,等一系列學習途徑,一個一個問題解決,各個擊破。最終做出了還可以操作的簡單界面,但是好多控制都沒有加上去,好多該處理的問題都出來了,途中遇到了很棘手的問題,就是刪除某一項數據,然後添加時他會給你返回"該學生學號已經存在","該課程號已經存在"等錯誤,經過仔細分析,原來是我把文件中的數據的確是刪除了,但是沒有對存儲結構裏的數據驚醒更新,也就是對象數組裏那些值還是存在的,而我所添加的判斷正是又對象數組裏的值進行處理,故而提醒新添加的數據時已經存在的。

  還有就是我的綜合查詢,差一個學生的各科成績,表格中就給我重複列出各科成績信息,並且一個考場信息不止重複一次,搞得我真是煩啊,最後才發現,前面添加之後,我的對象數組是靜態的,由於對他的操作是放在類外,對後面的沒有初始化,所以給我出錯。

  還有就是這次的課程設計從開始設計到初步完成,再到細化到各個功能,我都是先做了設計步驟的。今天完成那些功能,用怎麼樣的方法去完成,我都寫了詳細的文檔,所以做的時候思路清晰,遇到問題都能很快的處理掉,還有數據的存儲結構,還有完整性控制我都重新建了兩個類。這樣操作方便,容易找到錯誤,測試也很方便。所以我有了一個完整的設計思想,以及一定的設計理念,這樣對我以後用其他語言,開發其他的項目,都是很好的參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章