软件工程第一次测试——学生管理系统设计

发表于:2019-12-06 11:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:赵代码    来源:博客园

  系统简介:
  该系统完成学生成绩录入,修改,绩点计算以及查询学生成绩的简单操作
  设计思路:
  程序分为四大部分:成绩录入,成绩修改,绩点计算以及退出程序
  成绩录入之前首先输入学号并验证是否存在,存在则继续输入并刷新屏幕,不存在则打印提示信息
  这里定义输入学号并验证的方法,返回值为布尔值,根据返回值使用if判断是否继续
  将每一次输入打印封装成一个方法,即,每进行一次输入,更新一次屏幕
  最后封装一个是否保存输入的方法,即,用户输入Y则保存并返回true,输入N则不保存并返回false
  保存的实现是总量total+1,不保存,即不加1即可
  根据返回的true或false写入while循环条件,即可实现页面的返回地点
  成绩修改之前同成绩输入一样,首先输入学号并验证是否存在,存在则继续刷新屏幕,不存在则打印提示信息
  这里定义输入学号并验证的方法,返回值为学号对应信息所在数组中的位置(索引)
  索引的功能是后续各方法分开实现可以通过索引获取相应的成绩信息
  为每个科目定义修改成绩的方法
  定义全局变量用来存储旧的成绩(每次只能修改一个成绩所以定义一个全局变量即可),并在每个修改成绩的方法里在更新其新成绩前给全局变量赋值为旧成绩
  旧成绩是当用户输入N,不提交保存结果时,用来将旧值再赋给原来成绩时用到的
  将每个修改成绩的方法通过输入的序号操作用switch语句集合起来,方法的返回值flag为输入的序号(这样可以记录修改的是哪一条科目,为后续不保存的行为做准备)
  定义是否保存函数,参数为刚刚提到的flag即id的index,根据用户输入的Y或N判断是否保存,若Y,则不进行其他操作,若N,则将旧值set给flag标注的科目,方法返回值为Boolean型
  将该方法置于while条件中用来控制页面的跳转位置
  绩点计算之前也要输入学号并验证是否存在,存在则继续刷新屏幕,不存在则打印提示信息
  定义输入学号并验证的方法,返回值为学号对应信息所在数组中的位置(索引)
  判断存在之后使用showpoint方法根据索引打印相应信息
  if elseif else条件语句用来定义绩点的值,将其封装为getpoint方法,参数为科目成绩
  将showpoint方法返回值类型设为Boolean,将其作为if的条件控制是否停留在当前页面
  退出系统功能较简单,这里使用system.exit(-1)方法强制结束程序,并将打印结束页面的功能一同封装为一个方法
  ScoreManagement类源码:
   1 package stu.information.com;
  2
  3 import java.util.Scanner;
  4
  5
  6 public class ScoreManagement {
  7     static String[] id_list= {"20183727","20183333","20183334","20183335","20183336"};
  8     static String[] name_list= {"赵世元","张三","李四","王五","李华"};
  9     static ScoreInformation[] si_list=new ScoreInformation[10];
  10     static int total=0;
  11     static double oldscore;
  12     static Scanner scanner = new Scanner(System.in);
  13     //打印主界面导航
  14     public static void showMainNav() {
  15         System.out.println("*******************************************************");
  16         System.out.println("              石家庄铁道大学软件工程系");
  17         System.out.println("               学生学籍管理系统2019版");
  18         System.out.println("*******************************************************");
  19         System.out.println("                1、学生考试成绩录入");
  20         System.out.println("                2、学生考试成绩修改");
  21         System.out.println("                3、计算学生成绩绩点");
  22         System.out.println("                4、退出学籍管理系统");
  23         System.out.println("*******************************************************");
  24     }
  25
  26     //判断学号是否存在
  27     public static int isIdExist(String a) {
  28         for(int i=0;i<id_list.length;i++)
  29         {
  30             if(id_list[i].equals(a))
  31                 return i;
  32         }
  33         return -1;
  34     }
  35
  36     //录入学号
  37     public static boolean addScoreInformation() {
  38         System.out.print("请输入学生学号:");
  39         String stu_id=scanner.next();
  40         if(isIdExist(stu_id)==-1)
  41         {
  42             System.out.println("该学号不存在!");
  43             //Runtime.getRuntime().exec("cmd /c start cls ");
  44             return false;
  45         }
  46         else
  47         {
  48             si_list[total]=new ScoreInformation();
  49             si_list[total].setStunumber(stu_id);
  50             si_list[total].setName(name_list[isIdExist(stu_id)]);
  51             System.out.println("*******************************************************");
  52             return true;
  53         }
  54     }
  55
  56     //录入高数成绩
  57     public static void addScoreInformation_second() {
  58         System.out.print("学生学号:");
  59         System.out.println(si_list[total].getStunumber());
  60         System.out.print("学生姓名:");
  61         System.out.println(si_list[total].getName());
  62         System.out.print("请输入高等数学成绩:");
  63         double math=scanner.nextDouble();
  64         si_list[total].setMathematicsscore(math);
  65         System.out.println("*******************************************************");
  66     }
  67
  68     //录入大英成绩
  69     public static void addScoreInformation_third() {
  70         System.out.print("学生学号:");
  71         System.out.println(si_list[total].getStunumber());
  72         System.out.print("学生姓名:");
  73         System.out.println(si_list[total].getName());
  74         System.out.print("高等数学成绩:");
  75         System.out.println(si_list[total].getMathematicsscore());
  76         System.out.print("请输入大学英语成绩:");
  77         double english=scanner.nextDouble();
  78         si_list[total].setEnglishscore(english);
  79         System.out.println("*******************************************************");
  80     }
  81
  82     //录入计算机网络成绩
  83     public static void addScoreInformation_forth() {
  84         System.out.print("学生学号:");
  85         System.out.println(si_list[total].getStunumber());
  86         System.out.print("学生姓名:");
  87         System.out.println(si_list[total].getName());
  88         System.out.print("高等数学成绩:");
  89         System.out.println(si_list[total].getMathematicsscore());
  90         System.out.print("大学英语成绩:");
  91         System.out.println(si_list[total].getEnglishscore());
  92         System.out.print("请输入计算机网络成绩:");
  93         double net=scanner.nextDouble();
  94         si_list[total].setNetworkscore(net);
  95         System.out.println("*******************************************************");
  96     }
  97
  98     //录入数据库成绩
  99     public static void addScoreInformation_fifth() {
  100         System.out.print("学生学号:");
  101         System.out.println(si_list[total].getStunumber());
  102         System.out.print("学生姓名:");
  103         System.out.println(si_list[total].getName());
  104         System.out.print("高等数学成绩:");
  105         System.out.println(si_list[total].getMathematicsscore());
  106         System.out.print("大学英语成绩:");
  107         System.out.println(si_list[total].getEnglishscore());
  108         System.out.print("计算机网络成绩:");
  109         System.out.println(si_list[total].getNetworkscore());
  110         System.out.print("请输入数据库成绩:");
  111         double database=scanner.nextDouble();
  112         si_list[total].setDatabasescore(database);
  113         System.out.println("*******************************************************");
  114     }
  115
  116     //录入软件工程成绩
  117     public static void addScoreInformation_sixth() {
  118         System.out.print("学生学号:");
  119         System.out.println(si_list[total].getStunumber());
  120         System.out.print("学生姓名:");
  121         System.out.println(si_list[total].getName());
  122         System.out.print("高等数学成绩:");
  123         System.out.println(si_list[total].getMathematicsscore());
  124         System.out.print("大学英语成绩:");
  125         System.out.println(si_list[total].getEnglishscore());
  126         System.out.print("计算机网络成绩:");
  127         System.out.println(si_list[total].getNetworkscore());
  128         System.out.print("数据库成绩:");
  129         System.out.println(si_list[total].getDatabasescore());
  130         System.out.print("请输入软件工程成绩:");
  131         double software=scanner.nextDouble();
  132         si_list[total].setSoftwarescore(software);
  133         System.out.println("*******************************************************");
  134     }
  135
  136     //打印是否提交提示信息
  137     public static void addScoreInformation_seventh() {
  138         System.out.print("学生学号:");
  139         System.out.println(si_list[total].getStunumber());
  140         System.out.print("学生姓名:");
  141         System.out.println(si_list[total].getName());
  142         System.out.print("高等数学成绩:");
  143         System.out.println(si_list[total].getMathematicsscore());
  144         System.out.print("大学英语成绩:");
  145         System.out.println(si_list[total].getEnglishscore());
  146         System.out.print("计算机网络成绩:");
  147         System.out.println(si_list[total].getNetworkscore());
  148         System.out.print("数据库成绩:");
  149         System.out.println(si_list[total].getDatabasescore());
  150         System.out.print("软件工程成绩:");
  151         System.out.println(si_list[total].getSoftwarescore());
  152         System.out.println("该学生成绩已录入完毕,是否提交?Y/N");
  153
  154     }
  155
  156     //是否保存录入内容
  157     public static boolean isSaveAdd()
  158     {
  159         String flag=scanner.next();
  160         if(flag.equals("Y"))
  161         {
  162             total++;
  163             return true;
  164         }
  165         else if(flag.equals("N"))
  166         {
  167             System.out.println("提交操作已取消!");
  168         }
  169         return false;
  170     }
  171
  172     //录入信息模块标题
  173     public static void showAddNav() {
  174         System.out.println("*******************************************************");
  175         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统2019版");
  176         System.out.println("                   学生考试成绩录入");
  177         System.out.println("*******************************************************");
  178     }
  179
  180     //测试打印所有
  181     public static void showall() {
  182         for(int i=0;i<total;i++)
  183         {
  184             System.out.println(si_list[i].getStunumber()+si_list[i].getName()+si_list[i].getMathematicsscore()+si_list[i].getEnglishscore()
  185                     +si_list[i].getNetworkscore()+si_list[i].getDatabasescore()+si_list[i].getSoftwarescore());
  186         }
  187     }
  188
  189     //修改成绩模块标题
  190     public static void showUpdateNav() {
  191         System.out.println("*******************************************************");
  192         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统2019版");
  193         System.out.println("                  学生考试成绩修改界面");
  194         System.out.println("*******************************************************");
  195     }
  196
  197     //根据学号获取索引
  198     public static int getIndex(String a) {
  199         for(int i=0;i<total;i++)
  200         {
  201             if(si_list[i].getStunumber().equals(a))
  202                 return i;
  203         }
  204         return -1;
  205     }
  206
  207     //修改成绩时输入学号
  208     public static String updateInputNum() {
  209         System.out.print("请输入学生学号:");
  210         String stu_id=scanner.next();
  211         if(isIdExist(stu_id)==-1)
  212         {
  213             System.out.println("该学号不存在!");
  214             //Runtime.getRuntime().exec("cmd /c start cls ");
  215             return null;
  216         }
  217         else
  218         {
  219             si_list[total]=new ScoreInformation();
  220             si_list[total].setStunumber(stu_id);
  221             si_list[total].setName(name_list[isIdExist(stu_id)]);
  222             System.out.println("*******************************************************");
  223             return stu_id;
  224         }
  225     }
  226
  227     //打印成绩信息
  228     public static void showScore(int i) {
  229         System.out.println("学生学号:"+si_list[i].getStunumber());
  230         System.out.println("学生姓名:"+si_list[i].getName());
  231         System.out.println("1、高等数学成绩:"+si_list[i].getMathematicsscore());
  232         System.out.println("2、大学英语成绩:"+si_list[i].getEnglishscore());
  233         System.out.println("3、计算机网络成绩:"+si_list[i].getNetworkscore());
  234         System.out.println("4、数据库成绩:"+si_list[i].getDatabasescore());
  235         System.out.println("5、软件工程成绩:"+si_list[i].getSoftwarescore());
  236     }
  237
  238     //打印姓名学号
  239     public static void showUpdateIDandName(int i) {
  240         showUpdateNav();
  241         System.out.println("学生学号:"+si_list[i].getStunumber());
  242         System.out.println("学生姓名:"+si_list[i].getName());
  243     }
  244
  245     //修改高数成绩
  246     public static double updateMath(int i) {
  247         showUpdateIDandName(i);
  248         System.out.print("请输入修改后高等数学成绩:");
  249         double old=si_list[i].getMathematicsscore();
  250         double math=scanner.nextDouble();
  251         si_list[i].setMathematicsscore(math);
  252         return old;
  253     }
  254     //修改大英成绩
  255     public static double updateEnglish(int i) {
  256         showUpdateIDandName(i);
  257         System.out.print("请输入修改后大学英语成绩:");
  258         double old=si_list[i].getEnglishscore();
  259         double English=scanner.nextDouble();
  260         si_list[i].setEnglishscore(English);
  261         return old;
  262     }
  263     //修改网络成绩
  264     public static double updateNet(int i) {
  265         showUpdateIDandName(i);
  266         System.out.print("请输入修改后计算机网络成绩:");
  267         double old=si_list[i].getNetworkscore();
  268         double net=scanner.nextDouble();
  269         si_list[i].setNetworkscore(net);
  270         return old;
  271     }
  272     //修改数据库成绩
  273     public static double updateDatabase(int i) {
  274         showUpdateIDandName(i);
  275         System.out.print("请输入修改后数据库成绩:");
  276         double old=si_list[i].getDatabasescore();
  277         double database=scanner.nextDouble();
  278         si_list[i].setDatabasescore(database);
  279         return old;
  280     }
  281     //修改软工成绩
  282     public static double updateSoftware(int i) {
  283         showUpdateIDandName(i);
  284         System.out.print("请输入修改后软件工程成绩:");
  285         double old=si_list[i].getSoftwarescore();
  286         double software=scanner.nextDouble();
  287         si_list[i].setSoftwarescore(software);
  288         return old;
  289     }
  290
  291     //修改成绩方法
  292     public static int updateScore(int i) {
  293         int flag;
  294         flag=scanner.nextInt();
  295         switch (flag) {
  296         case 1:
  297             oldscore=updateMath(i);
  298             break;
  299         case 2:
  300             oldscore=updateEnglish(i);
  301             break;
  302         case 3:
  303             oldscore=updateNet(i);
  304             break;
  305         case 4:
  306             oldscore=updateDatabase(i);
  307             break;
  308         case 5:
  309             oldscore=updateSoftware(i);
  310             break;
  311
  312         default:
  313             System.out.println("该选项不存在!");
  314             break;
  315         }
  316         return flag;
  317     }
  318
  319     //是否保存
  320     public static boolean isSaveUpdate(int i,int index) {
  321         System.out.println("该学生信息已修改完毕,是否提交?Y/N");
  322         String flag=scanner.next();
  323         if(flag.equals("N"))
  324         {
  325             switch (i) {
  326             case 1:
  327                 si_list[index].setMathematicsscore(oldscore);
  328                 break;
  329             case 2:
  330                 si_list[index].setEnglishscore(oldscore);
  331                 break;
  332             case 3:
  333                 si_list[index].setNetworkscore(oldscore);
  334                 break;
  335             case 4:
  336                 si_list[index].setDatabasescore(oldscore);
  337                 break;
  338             case 5:
  339                 si_list[index].setSoftwarescore(oldscore);
  340                 break;
  341
  342             default:
  343                 break;
  344             }
  345             System.out.println("提交操作已取消!");
  346             return false;
  347         }
  348         showMainNav();
  349         return true;
  350     }
  351
  352     //退出系统
  353     public static void exitProgram() {
  354         System.out.println("*****************************************************************");
  355         System.out.println("       感谢使用石家庄铁道大学软件工程系学生学籍管理系统2019版");
  356         System.out.println("                        制作人:赵世元");
  357         System.out.println("*****************************************************************");
  358         System.exit(-1);
  359     }
  360
  361     //打印绩点计算界面
  362     public static void showCalPoint() {
  363         System.out.println("*******************************************************");
  364         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统2019版");
  365         System.out.println("                学生考试成绩绩点计算界面");
  366         System.out.println("*******************************************************");
  367     }
  368
  369     public static double getPoint(double a) {
  370         if(a>=90)
  371             return 4.0;
  372         else if(a>=85&&a<89.9)
  373             return 3.7;
  374         else if(a>=82&&a<84.9)
  375             return 3.3;
  376         else if(a>=78&&a<81.9)
  377             return 3.0;
  378         else if(a>=75&&a<77.9)
  379             return 2.7;
  380         else if(a>=72&&a<74.9)
  381             return 2.3;
  382         else if(a>=68&&a<71.9)
  383             return 2.0;
  384         else if(a>=66&&a<67.9)
  385             return 1.5;
  386         else if(a>=60&&a<63.9)
  387             return 1.0;
  388         else
  389             return 0;
  390     }
  391
  392     public static boolean showPoint(int i) {
  393         System.out.println("学生学号:"+si_list[i].getStunumber());
  394         System.out.println("学生姓名:"+si_list[i].getName());
  395         double math=getPoint(si_list[i].getMathematicsscore());
  396         double english=getPoint(si_list[i].getEnglishscore());
  397         double net=getPoint(si_list[i].getNetworkscore());
  398         double database=getPoint(si_list[i].getDatabasescore());
  399         double software=getPoint(si_list[i].getSoftwarescore());
  400         System.out.println("1、高等数学成绩绩点:"+math);
  401         System.out.println("2、大学英语成绩绩点:"+english);
  402         System.out.println("3、计算机网络成绩绩点:"+net);
  403         System.out.println("4、数据库成绩绩点:"+database);
  404         System.out.println("5、软件工程成绩绩点:"+software);
  405         double average=(math*4+english*3+net*4+database*3+software*2)/(4+3+4+3+2);
  406         String result = String.format("%.2f", average);
  407         System.out.println("你的平均学分绩点为:"+result);
  408         if(average>=2)
  409             System.out.println("提示信息:你的学分绩点已达到毕业要求!");
  410         else
  411             System.out.println("提示信息:你的学分绩点不满足毕业要求!");
  412         System.out.println("是否返回系统主界面?Y/N");
  413         String flag=scanner.next();
  414         if(flag.equals("Y"))
  415             return true;
  416         return false;
  417     }
  418
  419     public static void main(String[] args) throws InterruptedException {
  420         // TODO 自动生成的方法存根
  421         int flag;
  422         showMainNav();
  423         String id;
  424
  425         for(;;)
  426         {
  427             flag=scanner.nextInt();
  428             switch (flag) {
  429             case 1:
  430                 showAddNav();
  431                 if(addScoreInformation())
  432                 {
  433                     addScoreInformation_second();
  434                     addScoreInformation_third();
  435                     addScoreInformation_forth();
  436                     addScoreInformation_fifth();
  437                     addScoreInformation_sixth();
  438                     addScoreInformation_seventh();
  439
  440                     while(isSaveAdd()==false)
  441                     {
  442                         showAddNav();
  443                         if(addScoreInformation())
  444                         {
  445                             addScoreInformation_second();
  446                             addScoreInformation_third();
  447                             addScoreInformation_forth();
  448                             addScoreInformation_fifth();
  449                             addScoreInformation_sixth();
  450                             addScoreInformation_seventh();
  451                         }
  452                     }
  453                 }
  454                 break;
  455             case 2:
  456                 showUpdateNav();
  457                 if((id=updateInputNum())!=null)
  458                 {
  459                     int index=getIndex(id);
  460                     showScore(index);
  461                     int f=updateScore(index);
  462                     while(isSaveUpdate(f, index)==false)
  463                     {
  464                         showUpdateNav();
  465                         if((id=updateInputNum())!=null)
  466                         {
  467                             index=getIndex(id);
  468                             showScore(index);
  469                             f=updateScore(index);
  470                         }
  471                     }
  472                 }
  473                 break;
  474             case 3:
  475                 showCalPoint();
  476                 if((id=updateInputNum())!=null)
  477                 {
  478                     int index=getIndex(id);
  479                     if(showPoint(index)==false)
  480                         Thread.sleep(60000);
  481                 }
  482                 break;
  483             case 4:
  484                 exitProgram();
  485                 break;
  486             default:
  487                 System.out.println("该选项不存在!");
  488                 break;
  489             }
  490             showMainNav();
  491         }
  492     }
  493 }
  ScoreInformation类源码:
   1 package stu.information.com;
  2
  3 public class ScoreInformation {
  4     private String stunumber;
  5     private String name;
  6     private double mathematicsscore;
  7     private double englishscore;
  8     private double networkscore;
  9     private double databasescore;
  10     private double softwarescore;
  11     public String getStunumber() {
  12         return stunumber;
  13     }
  14     public void setStunumber(String stunumber) {
  15         this.stunumber = stunumber;
  16     }
  17     public String getName() {
  18         return name;
  19     }
  20     public void setName(String name) {
  21         this.name = name;
  22     }
  23     public double getMathematicsscore() {
  24         return mathematicsscore;
  25     }
  26     public void setMathematicsscore(double mathematicsscore) {
  27         this.mathematicsscore = mathematicsscore;
  28     }
  29     public double getEnglishscore() {
  30         return englishscore;
  31     }
  32     public void setEnglishscore(double englishscore) {
  33         this.englishscore = englishscore;
  34     }
  35     public double getNetworkscore() {
  36         return networkscore;
  37     }
  38     public void setNetworkscore(double networkscore) {
  39         this.networkscore = networkscore;
  40     }
  41     public double getDatabasescore() {
  42         return databasescore;
  43     }
  44     public void setDatabasescore(double databasescore) {
  45         this.databasescore = databasescore;
  46     }
  47     public double getSoftwarescore() {
  48         return softwarescore;
  49     }
  50     public void setSoftwarescore(double softwarescore) {
  51         this.softwarescore = softwarescore;
  52     }
  53 }
  运行效果如下:


      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号