A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0从谷0 中级黑马   /  2013-11-27 15:20  /  984 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

还差10分不能入学呀!之前参加新生报名系统活动写的代码,代码写的很糟糕。面向对象不太合理,方法写了太多行为,太乱。分享下代码希望哪位版主帅哥加点写代码的辛苦分,在此表示感谢!由于字节限制,我只贴了yi个类上去。

package com.itcast;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Scanner;
import java.io.*;

public class Manager implements Person{


        Form form;
        private static int index=0;
       
        public void newrun(Student student)
        {
               
                                /*
                                 * 第二步,选择是否缴费还是办理助学贷款
                                 */
                                System.out.println("选择缴费在下面键入y,选择助学贷款在下面键入n");
                                //在这里使用scanner接收键盘输入
                                Scanner scanner=new Scanner(System.in);
                               
                                boolean b1=true;
                                while(b1)
                                {
                                        String strValue1=scanner.next();
                                        //选择缴费
                                        if(strValue1.equals("y"))
                                        {
                                                //开始缴费
                                                charge();
                                                b1=false;
                                        }
                                       
                                else if(strValue1.equals("n"))
                                {
                                        //办理助学贷款
                                        financeByTransact();
                                        student.setRemark("助学贷款");
                                        b1=false;
                                }       
                                else
                                        System.out.println("重新选择你的交费方式!");
                                }
                        
                                //创建一个宿舍管理
                        ManageDorm md=new ManageDorm();
                        
                        /*
                         * 第三步,是否需要购买床上用品
                         */
                        System.out.println("选择购买床上用品在下面键入y,选择自带床上用品在下面键入n");
                        boolean b2=true;
                        while(b2)
                        {
                                String strValue2=scanner.next();
                            if(strValue2.equals("y"))
                            {
                                    /*
                                     * 第四步,领取床上用品
                                     */
                                    ManageDorm.pullDownDedding();
                                    //该名同学没有带被褥
                                    student.setHavaQuilt(false);
                                    b2=false;
                            }       
                            else if(strValue2.equals("n"))
                            {
                                    Manager.index++;
                                    System.out.println("该生已经自带被褥!");
                                   
                                    student.setHavaQuilt(true);
                                    //在这里的代码不会被调用
                                    if(index>=6)
                                    {
                                            md.joinQueue(form.toStudent());
                                            md.joinQueue(form.toStudent().getParent());
                                            md.validateRes();
                                            try
                                            {
                                                    Thread.sleep(100);
                                            }
                                            catch(Exception e)
                                            {
                                                    e.printStackTrace();
                                            }
                                    }
                                   
                                    b2=false;
                            }
                            else
                                    System.out.println("重新选择!");
                }
                        
                        
                        /*
                         * 第五步, 办理新生宿舍,绑定床位
                         */
                        //给这名学生分配一个宿舍
                        student.setDormNum(md.getDormNum(student.isSex()));
                        //打印某男或女宿舍当前床位占用情况
                        md.printRemanentBed(form.isSex());
                        
                        //获取输入的床位号
                        int bedNumber=scanner.nextInt();
                        //设置这名学生的床位号
                        student.setBedNum(bedNumber);
                        
                        //更新info.ini表中床位信息
                        md.setBedNum(form.isSex(), bedNumber);
                        //scanner.close();
                        System.out.println("你选择的宿舍是"+student.getDormNum()+",床位号"+student.getBedNum());
                        System.out.println("*****************完成报名!********************");
        }
        //在这里还是不让我们的管理员先生走多线程路线了
        public void run()
        {
               
        }
       
        //不带参的构造方法
        public Manager()
        {
                System.out.println("等待新生前来报道");
                form=new Form();
        }
       
        //给每一位新生分配一个学号
        public int admeasureNum()
        {
                try
                {
                       
                        FileInputStream fis=new FileInputStream("txt\\info.ini");
                        Properties ps=new Properties();
                        //加载信息文件,从中读取学号
                        ps.load(fis);
                        int value=Integer.valueOf(ps.getProperty("number"));
                        FileOutputStream fos=new FileOutputStream("txt\\info.ini");
                        //将学号+1保存到文件,给下一位学生使用
                        ps.setProperty("number", new Integer(value+1).toString());
                        ps.store(fos,"key=value");
                        fos.close();
                        fis.close();
                       
                        return value;
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                }
               
                return 0;
        }
        //提供表格填写
        public void affordForm()
        {
                System.out.println("领取报道表格");
               
        }
        //交费
        public void charge()
        {
                System.out.println("交费完成!");
        }
        //办理助学贷款
        public void financeByTransact()
        {
                System.out.println("已经办理助学贷款!");
        }
       
       
        public static void main(String[] args) {
                /*因为没有使用数据库,所以使用2个Map作为临时存储学生信息的数据库
                 * map的key是报名的顺序号,map的value是字符数组,保存学生信息
                 * m1保存男同学信息
                 * m2保存女同学信息
                 */
               
                HashMap<Integer,String[]> m1=new HashMap<Integer, String[]>();
                HashMap<Integer,String[]> m2=new HashMap<Integer, String[]>();
                FileReader fr;
                BufferedReader br;
               
                Manager wang=new Manager();
               
                try
                {
                       
                        fr=new FileReader("txt/studentInfo.txt");
                        //用于从文本文件中读取一行
                        br=new BufferedReader(fr);
                        String txtinfo=null;
                        txtinfo=br.readLine();
                        //用于保存学生信息的个部分
                        String[] strs=new String[5];
                        //counter循环计数器和2个map的key
                        int counter=1,k1=1,k2=1;
                        //读取的一行,且不为空
                        while(null!=(txtinfo=br.readLine()))
                        {
                               
                                switch(counter)
                                {
                                        case 3:
                                                {
                                                        //因为没有break语句,所以执行case 10。它们的代码都是一样的,使用if..else..也是一样地
                                                }
                                        case 10:
                                                {
                                                        /*下面代码的意思是,举个列子(*代表空格)
                                                         * 1.str=***a**b*c***d**
                                                         * 2.先去前后空白str=a**b*c***d
                                                         * 3.取出字符(第一个是a)保存到string[i],str=**b*c***d
                                                         * 4.第二步--第三步--第二步--第三步
                                                         * 最后str=***d,去空后直接保存
                                                         */
                                                        for(int i=0;i<strs.length;i++)
                                                        {
                                                               
                                                                String str=txtinfo.trim();
                                                                if(i==strs.length-1)
                                                                {
                                                                        strs[i]=str;
                                                                        System.out.println(i+","+strs[i]);
                                                                        break;
                                                                }
                                                                int length=str.length();
                                                                int index=str.indexOf(" ");
                                                                strs[i]=str.substring(0,index);
                                                                txtinfo=str.substring(index, length);
                                                                System.out.println(i+","+strs[i]);
                                                        }
                                                       
                                                }break;
                                        default:
                                                {
                                                        //同上
                                                        for(int i=0;i<strs.length-1;i++)
                                                        {
                                                               
                                                                String str=txtinfo.trim();
                                                                if(i==strs.length-2)
                                                                {
                                                                        strs[i]=str;
                                                                        System.out.println(i+","+strs[i]);
                                                                        break;
                                                                }
                                                                int length=str.length();
                                                                int index=str.indexOf(" ");
                                                                strs[i]=str.substring(0,index);
                                                                txtinfo=str.substring(index, length);
                                                                System.out.println(i+","+strs[i]);
                                                        }
                                               
                                                }break;
                                }
                                System.out.println("循环:"+counter);
                               
                               
                               
                                //创建一个家长对象
                                StudentParent sp=new StudentParent();
                                //创建一个学生对象       
                                Student stu=new Student(strs[1],strs[2].equals("男"),wang.admeasureNum(),sp);
                                //将学生对象添加到家长对象中
                                sp.addChild(stu);
                               
                                //第一步,提供表格给新生
                                wang.affordForm();
                                //学生填写表格
                        stu.fillForm(wang.form);//填表为将学生信息添加到文件中
                        //开始走报名流程
                        wang.newrun(stu);
                        
                        
                      //用于保存学生信息的数组
                                String[] studentInfo=new String[6];
                               
                                studentInfo=stu.getInfo();
                               
                                //是男添加studentInfo到map1,是女添加studentInfo到map2
                                if(stu.isSex())
                                {
                                        m1.put(k1, studentInfo.clone());
                                        k1++;
                                }
                                else
                                {
                                        m2.put(k2, studentInfo.clone());
                                        k2++;
                                }
                        
                        
                        if(0==counter%5)
                        {
                                System.out.print("男生报道"+m1.size()+"人"+"\t\t");
                                    System.out.println("女生报道"+m2.size()+"人\r\n");
                                    System.out.println("男生报道情况\r\n");
                                    System.out.println("学号\t\t"+"姓名\t\t"+"宿舍\t\t"+"床位\t\t"+"是否自带被褥\t\t"+"学费缴纳情况\r\n");
                                    wang.printMap(m1);
                                    System.out.println("\r\n");
                                    System.out.println("女生报道情况\r\n");
                                    System.out.println("学号\t\t"+"姓名\t\t"+"宿舍\t\t"+"床位\t\t"+"是否自带被褥\t\t"+"学费缴纳情况\r\n");
                                    wang.printMap(m2);
                               
                        }
                        counter++;
                        }
                       
                       
                        br.close();//上面提示为关闭,注意这时关闭会不会有问题
                          
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                }       
        }
       
        @SuppressWarnings("null")
        public void printMap(HashMap<Integer,String[]>m)
        {
                if(m!=null||!m.isEmpty())
                {
                        for(int i=1;i<=m.size();i++)
                        {
                                String[] strs=m.get(i);
                                for(String str:strs)
                                {
                                        if(str!=null)
                                                System.out.print(str);
                                        System.out.print("\t\t");
                                }
                                System.out.println();
                        }
                }
               
        }

}



studentManageSys.rar

18.84 KB, 下载次数: 37

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马