zoukankan      html  css  js  c++  java
  • 文件及输入输出流模拟学生系统

    好久没更新博客了,中间学的许多内容都没写上。学校的JAVA课程已经结课了,我的JAVA基本算是入门吧,还有许多要学的东西。之前的就不补了,正好老师留的三个大作业基本涵盖了之前学的所有东西,我就把他们写成博客吧。博客只写结构设计和一些关键细节,具体代码链接到Github上。

    评价:

    我已经决定要从事JAVA开发类的工作了。从这一篇博客开始,我要坚持认真写自己的学习博客了,学校的JAVA课程已经结束,我现在在自己学JAVA更多的内容。这是把这学期学到的东西总结一下,这三个作业都很不错,涵盖了几乎所有知识点,这三个作业应用到我本学期学到的所有内容了。

    不过这一篇写的比较早,结构很烂,也没写注释,习惯很不好,只能凑活看看。接下来两篇,我的源代码写的比较规范整齐,还有点参考价值。

    好,第一个作业:

    1、定义student类,其中包括五个私有变量(stunumber,name,age,sex,score)。

    各成员的含义如下:

    变量stunumber为字符串类型String,用于存储学生的学号(有8位数字组成)。

    变量name为字符串类型String,用于存储学生的姓名。

    变量age为int类型,用于存储学生的年龄。    

    变量sex为boolean类型,用于存储学生的性别,男生为false,女生为true。变量score为double类型,用于存储学生的成绩。

    并对每个变量定义get()(读取变量信息)和set()(设置变量信息)的方法。

    赋初值方法包括个参数,用于为变量(stunumber ,nameagesexscore)赋值。

    2、定义StudentManager类实现下列要求。

    1)利用数组实现至少存储五个学生的信息;(将考生信息作为第一条记录)。

    2)定义showStudent()方法打印输出所有的学生信息;

    3)定义addStudent (stunumber,name,age,sex,score)方法增加一名新学生的信息,需要判断学号是否重复,如果重复提示用户,并禁止增加新学生信息;

    4)定义deleteStudent(stunumber)方法删除一名学生信息(将该学生所有信息清空);

    5)定义updateStudent (stunumber,name,age,sex,score)方法修改学生信息;

    6)定义selectStudent(stunumber)查询并且输出该名学生的全部信息。

    7)定义一个输入界面如下图所示,选择相应的数字执行相应的功能

    ***************************************************************

                      石家庄铁道大学软件工程系学生信息管理系统

    ****************************************************************

    1、 遍历输出学生信息;

    2、 新学生信息录入;

    3、 删除学生信息;

    4、 修改学生信息;

    5、 查询学生信息;

    ****************************************************************

    先把代码给上:

      1 package 课堂测试;
      2 import java.io.*;
      3 import java.io.BufferedReader;
      4 import java.io.BufferedWriter;
      5 import java.io.File;
      6 import java.io.FileInputStream;
      7 import java.io.FileOutputStream;
      8 import java.io.FileReader;
      9 import java.io.FileWriter;
     10 import java.io.IOException;
     11 import java.io.InputStreamReader;
     12 import java.io.OutputStreamWriter;
     13 import java.io.PrintWriter;
     14 import java.util.*;
     15 import javax.swing.JOptionPane;
     16 import java.io.*;
     17 import java.util.Scanner;
     18 import java.util.StringTokenizer;
     19 class Student{
     20     String name,sex,number;
     21     int age;
     22     double grade;
     23     Student(){
     24         this.number="";
     25         this.name="";
     26         this.sex="";
     27         this.age=0;
     28         this.grade=0;
     29     }
     30     Student(String a,String b,int c,double d,String number){
     31         this.number=number;
     32         this.name=a;
     33         this.sex=b;
     34         this.age=c;
     35         this.grade=d;
     36     }
     37     public void setnumber(String a){
     38         this.number=a;
     39     }
     40     public void setsex(String a){
     41         this.sex=a;
     42     }
     43     public void setname(String a){
     44         this.name=a;
     45     }
     46     public void setage(int a){
     47         this.age=a;
     48     }
     49     public void setgrade(double a){
     50         this.grade=a;
     51     }
     52     public void getnumber(){
     53         System.out.println(this.number);
     54     }
     55     public void getname(){
     56         System.out.println(this.name);
     57     }
     58     public void getsex(){
     59         System.out.println(this.sex);
     60     }
     61     public void getage(){
     62         System.out.println(this.age);
     63     }
     64     public void getgrade(){
     65         System.out.println(this.grade);
     66     }
     67     public String toString()
     68     {
     69        return getClass().getName()
     70           + "学号"+number+" "+"姓名"+name+" "+"年龄"+String.valueOf(age)+" "+"性别 男 "+" "+"成绩"+String.valueOf(grade);
     71     }
     72 }
     73 
     74 public class Opstudent {
     75     public static void main(String[] args)throws IOException{
     76         FileWriter fw = null;
     77         int count=5;
     78         Student[] s=new Student[10];
     79         s[0]=new Student("a","男",18,50,"1");
     80         s[1]=new Student("b","男",18,50,"2");
     81         s[2]=new Student("c","男",18,50,"3");
     82         s[3]=new Student("d","男",18,50,"4");
     83         s[4]=new Student("e","男",18,50,"5");
     84         String savepath="C:\experiment.txt";
     85         Write(savepath,s);
     86         Login(s,count);
     87 }
     88     public static void Write(String savepath,Student[] s){
     89         //静态方法存储,可直接调用。
     90         try{
     91             PrintWriter ps = new PrintWriter(new FileWriter(savepath),true);
     92             ps.println(s.length);
     93             ps.println("学号	姓名	年龄	性别	成绩");
     94             for(int i=0;i<s.length-1;i++){
     95                 ps.println(s[i].number+"|"+s[i].name+"|"+String.valueOf(s[i].age)+"|"+s[i].sex+"|"+String.valueOf(s[i].grade));
     96             }
     97             ps.close();
     98         }catch (Exception e){
     99             e.printStackTrace();
    100         }
    101     }
    102     public static void Read(int i){
    103         try{
    104             String s="";
    105             //防止文件建立或读取失败,用catch捕捉错误并打印,也可以用throw
    106             /*读入txt文件*/
    107             String pathname="C:\experiment.txt";//绝对路径
    108             File filename=new File(pathname);//读取路径上的文件
    109             InputStreamReader reader=new InputStreamReader(
    110                     new FileInputStream(filename));//建立一个输入流对象
    111             BufferedReader br=new BufferedReader(reader);//建立一个对象,把文件内容转换为2进制???
    112             String line=br.readLine();
    113             for(int j=0;j!=i;j++)
    114                 line=br.readLine();
    115             s=s+line;
    116             System.out.println(s);
    117             br.close();
    118         }catch(Exception e){
    119             e.printStackTrace();
    120         }
    121     }
    122     public static void Login(Student[] a,int count)throws IOException{
    123         
    124         String s1="*****************************************
    ";
    125         s1=s1+"  ***大学软件工程系学生信息管理系统    
    ";
    126         s1=s1+"*****************************************
    ";
    127         s1=s1+"    1、遍历输出学生信息
    ";
    128         s1=s1+"    2、新学生信息录入
    ";
    129         s1=s1+"    3、删除学生信息
    ";
    130         s1=s1+"    4、修改学生信息
    ";
    131         s1=s1+"    5、查询学生信息
    ";
    132         s1=s1+"    6、统计学生不及格人数
    ";
    133         s1=s1+"    7、输入7结束操作";
    134         do{
    135         System.out.println(s1);
    136         Scanner s2=new Scanner(System.in);
    137         int i=s2.nextInt();
    138         if(i==1)
    139             {
    140             System.out.println("学号	姓名	年龄	性别	成绩
    ");
    141             for(int x=1;x<=4;x++)
    142                 Read(x);}
    143         else if(i==2)
    144             {
    145             Scanner p=new Scanner(System.in);
    146             System.out.println("输入学号");
    147             a[count].number=p.nextLine();
    148             System.out.println("输入姓名");
    149             a[count].name=p.nextLine();
    150             System.out.println("输入年龄");
    151             a[count].age=p.nextInt();
    152             System.out.println("输入性别");
    153             a[count].sex=p.nextLine();
    154             System.out.println("输入分数");
    155             a[count].grade=p.nextDouble();
    156             count ++;
    157             Write("C:\experiment.txt",a);   
    158             }
    159         else if(i==3){
    160             System.out.println("输入学生学号");
    161             Scanner ss=new Scanner(System.in);
    162             String num=ss.next();
    163             BufferedReader in = new BufferedReader(new FileReader("C:\experiment.txt"));
    164             String sm = in.readLine();
    165             String sm1 = in.readLine();
    166             Student[] temp=new Student[6];
    167             for(int m=0;m<=6;m++){
    168                 String s = in.readLine();
    169                 StringTokenizer t = new StringTokenizer(s, "|");
    170                 String nu=t.nextToken();
    171                 if(nu.equals(num))
    172                 {temp[m].name=t.nextToken();
    173                 temp[m].age=Integer.parseInt(t.nextToken());
    174                 temp[m].sex =t.nextToken();
    175                 temp[m].grade=Double.parseDouble(t.nextToken());}
    176                 else
    177                     m=m-1;
    178                 } 
    179             Write("C:\experiment.txt",temp);
    180             
    181             in.close();
    182         }
    183         else if(i==4){
    184             
    185         }
    186         else if(i==5){
    187             BufferedReader in = new BufferedReader(new FileReader("C:\experiment.txt"));
    188             int ap = Integer.parseInt(in.readLine());
    189             Student[] temp=new Student[1];
    190             String sm = in.readLine();    
    191             System.out.println(sm);
    192             for(int m=1;m<=5;m++){
    193                 String s = in.readLine();
    194                 StringTokenizer t = new StringTokenizer(s, "|");
    195                 System.out.println("学号"+t.nextToken()+" "+"姓名"+t.nextToken()+" "+"年龄"+t.nextToken()+" "+"性别 男 "+" "+"成绩"+t.nextToken());
    196                }
    197             
    198             in.close();
    199         }
    200         else if(i==6){
    201             int nums=0;
    202             BufferedReader in = new BufferedReader(new FileReader("C:\experiment.txt"));
    203             String sm = in.readLine();
    204             String sm1 = in.readLine();
    205             System.out.println(sm1);
    206             for(int m=1;m<=5;m++){
    207             String s = in.readLine();
    208             StringTokenizer t = new StringTokenizer(s, "|");
    209             String num=t.nextToken();
    210             String na11m=t.nextToken();
    211             String age=t.nextToken();
    212             String sex=t.nextToken();
    213             double grade=Double.parseDouble(t.nextToken());           
    214             if(grade<=60)
    215                 nums++;
    216             } 
    217             System.out.println("不及格的人数为"+nums);         
    218         }
    219         else
    220             break;
    221         }while(true);
    222     }
    223     }

    好了,我来写一下分析。

    首先我写了一个Student类,其中包含类的初始化及get和set方法用于输入输出类的信息,很简单不用说。

    再写了一个OpStudent类,其中包含主类和实现题目要求的若干个方法。

    看到题目所给的几个操作,我用的是文件及输入输出流的操作模拟数据库。

    public static void Write(String savepath,Student[] s)

    参数:存储路径(绝对路径),类数组

    功能:将一个学生的信息保存在savepath表示的路径下的一个txt文件中,各个数据用"|"隔开。

    public static void Read(int i)

    参数:好像是学生的个数(时间太久,也没加注释,给忘了,)

    功能:仅在遍历输出功能中用到,因为带着"|"不方便用于读成Student类,可以按行读取输出。

    public static void Login(Student[] a,int count)throws IOException

    参数:Student类数组,已录入学生个数

    功能:1.显示题目要求的登录界面。2.完成题目要求的操作

    好了,很容易看到,我用一个do{}while{]循环来控制操作。这里注意:因为要实现返回界面功能,所以不能只执行一个操作就结束,所以用个循环控制。

    好,剩下的就是按题目要求的功能作对应的操作。1、2很简单不说了。

    好,我们看到3、5、6都需要把文件中的信息读出来再进行操作。

    好,用BufferedReader读都没问题,对吧。为什么这个地方要用BufferedReader方法?因为:我存的时候是按行存储的,所以用到BufferedReader下的readline方法比较方便。

    好,3、5、6都用到一个StringTokenizer类,这个类可以指定一个分隔符。好了,看不懂自己去看帮助JDK文档或者百度。

    好,4我忘了写了。

  • 相关阅读:
    WebBrowser获取完整COOKIE
    验证码
    fee photo
    net reactor加密源码保软件安全-net reactor使用教程
    C#支付宝多次回调问题
    C# 获取程序运行目录
    2DToolkit官方文档中文版打地鼠教程
    Unity开发Oculus游戏
    游戏Demo(持续更新中...)
    使用Slua框架开发Unity项目的重要步骤
  • 原文地址:https://www.cnblogs.com/cxy2016/p/6349410.html
Copyright © 2011-2022 走看看