标签:
PO:有哪几个对象构成 : (学生)学号 姓名 性别 成绩
持久化层:改造对象方法:addAStu(); delAStu();updateAStuScore();queryAllStu();queryAStu();
界面:显示信息.
学生类 Student .java
public class Student {
private String stuNo; // 学号
private String name; // 姓名
private char sex; // 性别
private int score; // 成绩
public Student(){}
public Student(String stuNo,String name,char sex,int score){
this.stuNo = stuNo;
this.name = name;
this.sex = sex;
this.score = score;
}
public void setStuNo(String stuNo){
this.stuNo = stuNo;
}
public String getStuNo(){
return stuNo;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setSex(char sex){
this.sex = sex;
}
public char getSex(){
return sex;
}
public void setScore(int score){
this.score = score;
}
public int getScore(){
return score;
}
}
学生系统功能接口类 StudentDaoI.java
import java.util.List;
public interface StudentDaoI{
/*
*增加一个学生
*parameter:stuNo表示学号
*parameter:name表示姓名
*parameter:sex表示性别
*parameter:score表示分数
*return :返回正确错误
*/
public boolean addAStu(String stuNo,String name,char sex,int score);
/*
*删除一个学生
*parameter:stuNo表示学号
*return :返回正确错误
*/
public boolean delAStu(String stuNo);
/*
*修改一个学生成绩
*parameter:stuNo表示学号
*parameter:score表示新分数
*return :返回正确错误
*/
public boolean updateAStuScore(String stuNo,int score);
/*
*返回学生信息列表
*return :返回一个动态数组
*/
public List queryAllStu();
/*
*根据学号查询学生相关信息
*parameter:stuNo表示学号
*return :返回这个学生
*/
public Student queryAStu(String stuNo);
}
实现功能接口类 StudentDaoImpl.Java
import java.util.List;
import java.util.Scanner;
import java.io.File;
import java.util.ArrayList;
import java.io.*;
public class StudentDaoImpl implements StudentDaoI {
/*
*增加一个学生
*parameter:stuNo表示学号
*parameter:name表示姓名
*parameter:sex表示性别
*parameter:score表示分数
*return :返回正确错误
*/
public boolean addAStu(String stuNo,String name,char sex,int score) {
try{
// OutputStream out ---> OutputStreamWriter ---> FileWriter
//该语句是一个输出流,FileWriter("StudentsInfo.txt",true)与 FileWriter("StudentsInfo.txt")
//的区别有true:在原有内容后追加 没有true:覆盖或清空
PrintWriter pw=new PrintWriter(new FileWriter("StudentsInfo.txt",true));
String str=stuNo+":"+name+":"+sex+":"+score;
pw.write(str+"\r\n");
pw.flush();
pw.close();
}
catch(Exception e){
e.printStackTrace();
return false;
}
return true;
}
/*
*删除一个学生
*parameter:stuNo表示学号
*return :返回正确错误
*/
public boolean delAStu(String stuNo) {
try{
Scanner scan=new Scanner(new File("StudentsInfo.txt"));
ArrayList ar=new ArrayList(); while(scan.hasNextLine()){
String line= scan.nextLine();
if(!(line.startsWith(stuNo))){
ar.add(line);
}
scan.close(); }
System.out.println(ar.size());
//该语句是一个输出流,FileWriter("StudentsInfo.txt",true)与FileWriter("StudentsInfo.txt")
//的区别有true:在原有内容后追加 没有true:覆盖或清空
PrintWriter pw=new PrintWriter(new FileWriter("StudentsInfo.txt"));
for(int i=0;i<ar.size();i++){
pw.write(ar.get(i)+"\r\n");
}
pw.flush();
pw.close();
}
catch(Exception e){
e.printStackTrace();
return false;
}
return true;
}
/*
*修改一个学生成绩
*parameter:stuNo表示学号
*parameter:score表示新分数
*return :返回正确错误
*/
public boolean updateAStuScore(String stuNo,int score) {
ArrayList ar=new ArrayList();
try{
Scanner scan=new Scanner(new File("StudentsInfo.txt"));
while(scan.hasNextLine()){
String line= scan.nextLine();
if(line.startsWith(stuNo)){
String[] s=line.split(":");
s[3]=score+"";
line=s[0]+":"+s[1]+":"+s[2]+":"+s[3];
}
scan.close();
ar.add(line);
}
try{
//该语句是一个输出流,FileWriter("StudentsInfo.txt",true)与FileWriter("StudentsInfo.txt")
//的区别有true:追加 没有true:覆盖或清空
PrintWriter pw=new PrintWriter(new FileWriter("StudentsInfo.txt"));
for(int i=0;i<ar.size();i++){
pw.write(ar.get(i)+"\r\n");
}
pw.flush();
pw.close();
} catch(Exception e){
e.printStackTrace();
return false;
}
}
catch(Exception e){
e.printStackTrace();
return false;
}
return true;
}
/*
*返回学生信息列表
*return :返回一个动态数组
*/
public List queryAllStu() {
ArrayList ar=new ArrayList();
try{
Scanner scan=new Scanner(new File("StudentsInfo.txt"));
while(scan.hasNextLine()){
String s= scan.nextLine();
ar.add(s);
}
scan.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return ar;
}
/*
*根据学号查询学生相关信息
*parameter:stuNo表示学号
*return :返回这个学生
*/
public Student queryAStu(String stuNo) {
try{
Scanner scan=new Scanner(new File("StudentsInfo.txt"));
while(scan.hasNextLine()){
String line= scan.nextLine();
if(line.startsWith(stuNo)){
String[] s=line.split(":");
Student st=new Student();
st.setStuNo(s[0]);
st.setName(s[1]);
st.setSex(s[2].charAt(0));
st.setScore(Integer.parseInt(s[3]));
return st;
}
}
scan.close();
}
catch(Exception e){
e.printStackTrace();
}
return null;
}
}
建立存放学生信息文件
StudentsInfo.txt
130101:张三:男:12
130102:王山:男:12
130103:黄金:男:12
学生主界面类
MainMenu.java
import java.util.Scanner;
import java.util.List;
public class MainMenu {
public static void main(String[] args){
StudentDaoI stuDao = new StudentDaoImpl();
while(true) {
System.out.println("==================================");
System.out.println("=[0]主菜单========================");
System.out.println("=[1]查找学生======================");
System.out.println("=[2]增加学生======================");
System.out.println("=[3]删除学生======================");
System.out.println("=[4]学生列表======================");
System.out.println("=[5]更新成绩======================");
System.out.println("=[x]退出系统======================");
Scanner scan = new Scanner(System.in);
String command = scan.next();
String no = "";
String name = "";
String sex = "";
int score = 0;
switch(command.charAt(0)){
case ‘1‘ :
System.out.println("请输入学号:");
no = scan.next();
Student stu = stuDao.queryAStu(no);
System.out.println("此学生的信息如下:");
System.out.println(stu.getStuNo()+stu.getName()+stu.getSex()+stu.getScore());
break;
case ‘2‘ :
System.out.println("请输入学号:");
no = scan.next();
System.out.println("请输入姓名:");
name = scan.next();
System.out.println("请输入性别:");
sex = scan.next();
System.out.println("请输入成绩:");
score = scan.nextInt();
System.out.println("此学生的信息如下:");
stuDao.addAStu(no,name,sex.charAt(0),score);
break;
case ‘3‘ :
System.out.println("请输入学号:");
no = scan.next();
stuDao.delAStu(no);
break;
case ‘4‘ :
List myList = stuDao.queryAllStu();
for (int i = 0;i < myList.size();i++){
System.out.println(myList.get(i));
}
break;
case ‘5‘ :
System.out.println("请输入学号:");
no = scan.next();
System.out.println("请输入成绩:");
score = scan.nextInt();
System.out.println("此学生的信息如下:");
stuDao.updateAStuScore(no,score);
break;
case ‘x‘ : System.exit(0);
}
}
}
}
标签:
原文地址:http://www.cnblogs.com/wuguang/p/4630712.html