忙忙碌碌了一个星期,我的课设终于要落下帷幕了。开心!!!
这次课题的主要内容是:用JAVA设计和实现一个管理系统,主要包括信息的录入、浏览、增删改查几项功能,并且要储存数据信息。
我在一个包里写了两个类和txt文本:
第一个类定义校园卡并构造基本信息函数
第二个类是主界面,用于写操作的具体方法,
第三个txt文本里面存储了实时更新的数据
第一个类如下
package keshetwo;
//定义校园卡的类和构造基本信息的函数
import java.util.Scanner;
import java.util.ArrayList; //集合
public class Card {
private String name; //姓名
private String no; //学号 将变量私有化
private String sex; //性别
private String yard; //学院
//set和get方法 对私有变量进行设置和获取
public String getName() {
return name;
}
public void setName(String name) { //set和get方法 对私有变量进行设置和获取
this.name=name;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no=no;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex=sex;
}
public String getYard() {
return yard;
}
public void setYard(String yard) {
this.yard=yard;
}
public Card(String name,String no,String sex,String yard) {
//将变量赋值给成员变量
this.name=name;
this.no=no;
this.sex=sex;
this.yard=yard;
}
public Card() {
// TODO Auto-generated constructor stub
}
public void Card() {
// TODO Auto-generated constructor stub
}
}
摘要:第一个类主要用了访问权限和set、get方法等
四种访问权限分别是(级别由高到低):private、default、protected、public
private:私有访问权限,修饰的成员只能在本类中访问
default:默认访问权限,本包中的类均可访问
protected:受保护的访问权限,可以被本包和不同包的子类访问
public:公共访问权限,可以在所有类中被访问,无论是否在同一个包中
set、get方法是对私有变量进行设置和获取
package keshetwo;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
import java.util.Scanner;
public class xiaoyuanka {
public static void main(String[] args) throws IOException{
String fileName="E:\\JAVA\\JAVA22\\src\\keshetwo\\Student.txt";
Scanner sc=new Scanner(System.in);
ArrayList<Card> array = new ArrayList<Card>();//集合
Card c1=new Card("茵茵","01","女","计算机");
Card c2=new Card("爱你","02","女","经管");
Card c3=new Card("西瓜太郎","03","男","电气");
array.add(c1);
array.add(c2);
array.add(c3);
//把集合装进文件
writeData(fileName,array);
while (true) {
//用输出语句完成主界面的编写
System.out.println("--------欢迎来到洛阳理工学院学生管理系统--------");
System.out.println("1 添加学生信息");
System.out.println("2 删除学生信息");
System.out.println("3 修改学生信息");
System.out.println("4 查询学生信息");
System.out.println("请输入您的选择:");
int i=sc.nextInt();
switch(i) {
case 1:
add(fileName); // 增
break;
case 2:
remove(fileName); // 删
break;
case 3:
gai(fileName); // 改
break;
case 4:
chaxun(fileName); // 查
break;
}
}
}
public static void add(String fileName) throws IOException {
ArrayList<Card> array = new ArrayList<Card>();//集合
Scanner sc=new Scanner(System.in);
String No;
System.out.println("请输入学生学号:");
No = sc.nextLine(); // 输入学号No nextLine返回string类型
// 定义标记,判断学生学号是否被占用
boolean flag = true;
for (int a = 0; a < array.size(); a++) {
// 遍历学生信息返回给学生对象
Card c = array.get(a);
// 获取该学生的学号,和键盘录入的学号进行比较
if ( c.getNo().equals(No)) {
flag = false;// 说明学号被占用
System.out.println("该学生已存在,请重新输入!");
break;
}
}
if(flag) {
System.out.println("----增加-----");
System.out.println("姓名");
String Name=sc.nextLine();
System.out.println("学号");
String no=sc.nextLine();
System.out.println("性别");
String Sex=sc.nextLine();
System.out.println("学院");
String Yard=sc.nextLine();
Card c=new Card();
c.setName(Name);
c.setNo(No);
c.setSex(Sex);
c.setYard(Yard);
array.add(c);
writeData(fileName,array);
System.out.println("添加成功");
}
}
这个是增加信息的,下面的删除修改查询和这个差不多,方法相同,就不一一展示了。
然后就是读写文件了,这个用了我好长时间才搞懂,想整明白这IO流那好好看看吧
//从文件中读取数据到集合
public static void readData(String fileName,ArrayList<Card> array) throws IOException {
// 利用处理流提高性能
BufferedReader br = new BufferedReader(new FileReader(fileName));
String end;
while((end=br.readLine())!=null){
// 获取本行数据,文本文件用空格分隔数据,将数据保存在数组当中
String[] strArray = end.split(",");
Card s =new Card();
s.setNo(strArray[0]);
s.setName(strArray[1]);
s.setSex(strArray[2]);
s.setYard(strArray[3]);
array.add(s);
}
br.close();
}
//把集合中数据写入文件
public static void writeData(String fileName,ArrayList<Card> array) throws IOException {
//使用缓冲字符流写入。
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
//遍历数组
for(int x=0;x<array.size();x++){
//使用StringBuilder提高效率
StringBuilder sb = new StringBuilder();
//获取并保存数据
Card s = array.get(x);
sb.append(s.getNo()).append(",").append(s.getName()).append(",").append(s.getSex()).append(",").append(s.getYard());
//写入
bw.write(sb.toString());
//换行
bw.newLine();
//强制刷新
bw.flush();
}
bw.close();
}
}
好啦,代码展示部分到这就结束了。
其余知识点以及各个步骤的想法注释写的很详细了(也可能是自认为的)。