private void jButton

来源:互联网 发布:批处理编程 编辑:程序博客网 时间:2024/05/22 14:33

  * 根据成绩表查询某个人的各科成绩

  * 创建时间: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做,但是好多东西之前根本不知道,更不用说用了。就开始网上搜索,查找资料,等一系列学习途径,一个一个问题解决,各个击破。最终做出了还可以操作的简单界面,但是好多控制都没有加上去,好多该处理的问题都出来了,途中遇到了很棘手的问题,就是删除某一项数据,然后添加时他会给你返回"该学生学号已经存在","该课程号已经存在"等错误,经过仔细分析,原来是我把文件中的数据的确是删除了,但是没有对存储结构里的数据惊醒更新,也就是对象数组里那些值还是存在的,而我所添加的判断正是又对象数组里的值进行处理,故而提醒新添加的数据时已经存在的。

  还有就是我的综合查询,差一个学生的各科成绩,表格中就给我重复列出各科成绩信息,并且一个考场信息不止重复一次,搞得我真是烦啊,最后才发现,前面添加之后,我的对象数组是静态的,由于对他的操作是放在类外,对后面的没有初始化,所以给我出错。

  还有就是这次的课程设计从开始设计到初步完成,再到细化到各个功能,我都是先做了设计步骤的。今天完成那些功能,用怎么样的方法去完成,我都写了详细的文档,所以做的时候思路清晰,遇到问题都能很快的处理掉,还有数据的存储结构,还有完整性控制我都重新建了两个类。这样操作方便,容易找到错误,测试也很方便。所以我有了一个完整的设计思想,以及一定的设计理念,这样对我以后用其他语言,开发其他的项目,都是很好的参考。

0 0