📄 infomodel.java
字号:
package data;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.lang.String;
import java.text.*;
import data.Student;
public class InfoModel
{
Student head,rear;
String names;
public InfoModel(String str)
{
names=str;
head=null;
rear=null;
}
public InfoModel()
{
}
//显示一个学生信息
public void display(Student stu)
{
System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^");
System.out.println("学号"+stu.sno);
System.out.println("姓名"+stu.name);
System.out.println("性别"+stu.sex);
System.out.println("出生日期"+stu.birthday);
System.out.println("院系"+stu.department);
System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^");
}
//增加一个学生信息
public void newstudent(BufferedReader readStream)
{
Student temp=head;
System.out.println("请输入学生信息!");
String sno=null;
String name=null;
String sex=null;
String department=null;
String birthday=null;
try
{
System.out.print("请输入学号:");
sno=readStream.readLine();
System.out.print("请输入姓名:");
name=readStream.readLine();
System.out.print("请输入性别:");
sex=readStream.readLine();
System.out.print("请输入出生日期(年-月-日):");
birthday=readStream.readLine();
System.out.print("请输入院系名称:");
department=readStream.readLine();
temp=new Student(sno,name,sex,department,getDate(birthday),null);
add(temp);
System.out.println("新信息录入:");
display(temp);
}
catch(IOException e)
{
e.printStackTrace();
}
catch(NumberFormatException e)
{
System.out.println("输入错误请确认后重新输入");
}
}
//按姓名查找所有结点,若找到,则显示该结点信息,否则返回查找不到的提示信息。
public void namesearch(BufferedReader readStream)
{
String nam=null;
try{
nam=readStream.readLine();
search(nam);
}
catch(IOException e){
}
}
public void search(String s)
{
Student p=head;
boolean b=false; //标记是否查找到
while(p!=null)
{
if(p.name.equals(s))
{
display(p);
b=true;
//return;
}
p=p.next;
}
if(!b)
System.out.println("当前没有该学生记录");
}
//按学号查找
public void numsearch(BufferedReader readStream)
{
String number=null;
try{
System.out.print("输入要查询的学号:");
number=readStream.readLine();
numbersearch(number);
}
catch(IOException e){
}
}
public void numbersearch(String s)
{
Student p=head;
boolean b=false; //标记是否查找到
while(p!=null)
{
if(p.sno.equals(s))
{
display(p);
b=true;
//break;
//return;
}
p=p.next;
}
if(!b)
System.out.println("找不到所查学生");
}
//将数据域为stu的结点添加到链表的尾部
public void add(Student s)
{
if(head==null)
{
head=s;
rear=s;
}
else
{
rear.next=s;
rear=s;
}
}
//删除学号为num的学生结点
public void delete(BufferedReader readStream)
{
String sno=null;
System.out.print("请输入要删除的学号:");
try
{
sno=readStream.readLine();
}
catch(IOException e)
{
e.printStackTrace();
}
Student p=head;
System.out.println("确认删除输入1,取消输入0");
int a=0;
try{
a=(int)Integer.parseInt(readStream.readLine());
}catch(IOException e){}
int y=1;
int n=0;
if(y==a)
{
while(p!=null)
{
if(p.sno.equals(sno))break;
p=p.next;
}
del(p.sno);
System.out.println("已删除!!");
}
else if(n==a)
{
System.out.println("删除被取消");
}
}
public void del(String num)
{
Student p=head;
Student q=head;
while(q.next!=null)
{
p=q;
q=q.next;
if(q.sno.equals(num))
p.next=q.next;
}
}
public void print()//全部输出
{
Student p=head;
while(p!=null)
{
display(p);
p=p.next;
}
}
public Date getDate(String date)
{
StringTokenizer myDate=new StringTokenizer(date,"-");
int year=Integer.parseInt(myDate.nextToken());
int month=Integer.parseInt(myDate.nextToken());
int day=Integer.parseInt(myDate.nextToken());
//把指定年、月、日的整数值形成Date类型
Calendar now=Calendar.getInstance();
now.clear();
now.set(year,month-1,day);
return now.getTime();
}
//修改
public void update(BufferedReader readStream)
{
Student p=head;
String sn=null;
System.out.print("请输入学号修改:");
try
{
sn=readStream.readLine();
}
catch(IOException e)
{
e.printStackTrace();
}
while(p!=null)
{
if(p.sno.equals(sn))break;
p=p.next;
}
//开始修改
System.out.println("修改学号输入1 修改姓名输入2 修改性别输入3 ");
System.out.println("修改日期输入4 修改院系输入5 输入其它数字取消修改");
int ob=0;
try{
ob= (int)Integer.parseInt(readStream.readLine());
switch(ob)
{
case 1:{System.out.print("请输入修改后的学号:");
p.sno=readStream.readLine();
System.out.println("修改后的记录:");
display(p);
break;}
case 2:{System.out.print("请输入修改后的姓名:");
p.name=readStream.readLine();
System.out.println("修改后的记录:");
display(p);
break;}
case 3:{System.out.print("请输入修改后的性别:");
p.sex=readStream.readLine();
System.out.println("修改后的记录:");
display(p);
break;}
case 4:{System.out.print("请输入修改后的出生日期(年-月-日):");
p.birthday=getDate(readStream.readLine());
System.out.println("修改后的记录:");
display(p);
break;}
case 5:{System.out.print("请输入修改后的院系名称:");
p.department=readStream.readLine();
System.out.println("修改后的记录:");
display(p);
break;}
default:
System.out.println("取消了修改!");
break;
}
}
catch(IOException e)
{
}
catch(NullPointerException e)
{
System.out.println("该学生记录不存在!!!");
}
}
public void load()
{
//装入两名学生的信息
Student ss;
Date myDate=getDate("1985-1-22");
ss=new Student("1","张三","男","信息管理",myDate,null);
}
//装载文件数据
public void load(String filename)
{
Student p=null;
String in;
String sno=null;
String name=null;
String sex=null;
String department=null;
String birthday=null;
//从指定文件中读取学生信息
try
{
//建立文件流的输入流
BufferedReader readStream=new BufferedReader(new FileReader(filename));
while((in=readStream.readLine())!=null)
{
//建立一行数据处理,建立词法分析流,分隔符使用"|"
StringTokenizer st=new StringTokenizer(in,"|");
//依次获得学号、姓名、性别、出生年月日和院系名称
sno=st.nextToken();
name=st.nextToken();
sex=st.nextToken();
birthday=st.nextToken();
department=st.nextToken();
p=new Student(sno,name,sex,getDate(birthday),department);
add(p);
p=p.next;
}
}
catch(IOException e)
{
}
}
//保存处理结果
public void saveTo()
{
}
//保存处理结果到文件
public void saveTo(String filename)
{
try
{
Student p=head;
//建立文件输出流
BufferedWriter writeStream=new BufferedWriter(new FileWriter(filename));
//开始写数据
while(p!=null)
{
writeStream.write(p.sno);
writeStream.write("|");
writeStream.write(p.name);
writeStream.write("|");
writeStream.write(p.sex);
writeStream.write("|");
//把Date转换为YYYY-MM-DD形式之后,再写入文件
SimpleDateFormat fmt=new SimpleDateFormat("yyyy-mm-dd");
String myDate=fmt.format(p.birthday);
writeStream.write(myDate);
writeStream.write("|");
writeStream.write(p.department);
writeStream.newLine();
p=p.next;
}
//关闭文件
writeStream.close();
//清空数组内容
//numberOfStudents=0;
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -