⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 用java编写的简单的成绩管理系统。对于初学者很有帮助
💻 TXT
字号:
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.io.StringReader; 
import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Collections; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.StringTokenizer; 

/* 
* Created on 2005-1-11 
*/ 

/** 
* @author 让炜 
* @since 1.0 
* 
* TODO 学生成绩管理系统 
* 通过学号查找,修改,删除数据 
* 
*/ 
public class LittleProgram 
{ 
static boolean isDelete = true; 
static boolean isFind = true; 
public static void main(String [] args)//主方法,程序从这里开始运行 
throws IOException,NumberNotFoundException 
{ 
int choice=-1; 
do{ 
LittleProgram lp = new LittleProgram(); 
System.out.println(); 
System.out.println("\t####################################"); 
System.out.println(); 
System.out.println("\t\t Java学生成绩管理系统1.1"); 
System.out.println("\t\t请用学号查找,修改,删除数据"); 
System.out.println(); 
System.out.println("\t####################################\n"); 
System.out.print("1.增加数据:\n"+ 
"2.查找数据:\n"+ 
"3.删除数据:\n"+ 
"4.清除所有数据:\n"+ 
"5.把数据全部打印到屏幕\n"+ 
"6.把成绩按学号排序\n"+ 
"7.修改数据\n"+ 
"8.统计已记录成绩学生数\n"+ 
"9.关于作者\n"+ 
"0.退出程序.\n" + 
"输入:"); 
BufferedReader in = //从终 
new BufferedReader( //端接 
new InputStreamReader(System.in));//收数 
String inputLine = in.readLine(); //字选 
choice= Integer.valueOf(inputLine).intValue();//项; 
switch(choice) 
{ 
case 1: {//1.增加数据 
String str = lp.inputData(); 
lp.addData(str); 
System.out.println("增加数据成功."); 
timeOut(1); 
}break; 
case 2: {//2.查找数据 
long find = 0; 
System.out.print("请输入你要查找的学生学号:"); 
BufferedReader inn = 
new BufferedReader( 
new InputStreamReader(System.in)); 
String inputLi = inn.readLine(); 
find = Integer.valueOf(inputLi).longValue(); 
lp.findData(find); 

timeOut(2); 
}break; 
case 3: {//3.删除数据 
long deleteNumber = 0; 
System.out.print("请输入你想删除的同学的学号:"); 
BufferedReader bf = 
new BufferedReader ( 
new InputStreamReader(System.in)); 
String inputL = bf.readLine(); 
deleteNumber = Integer.valueOf(inputL).longValue(); 
lp.deleteData(deleteNumber); 
if(isDelete) 
System.out.println("删除数据成功!"); 
timeOut(1); 
}break; 
case 4: { 
lp.clearData();//4.清除所有数据 
timeOut(1); 
}break; 
case 5: { 
print();//5.把数据全部打印到屏幕 
timeOut(2); 
}break; 
case 6: { 
lp.numSort();//6.把成绩按学号排序 
System.out.println("按照学号从小到大排序成功!\n"+ 
"排序后:\n"); 
print(); 
timeOut(2); 
}break; 
case 7: { 
lp.rewrite();//7.修改数据 
timeOut(2); 
}break; 
case 8: { 
int count = lp.count(); 
System.out.println("共有"+count+"个学生已经记录."); 
timeOut(2); 
}break; 
case 9: { 
System.out.print("\t\t让炜\n"+ 
"\t\t上海电力学院通信工程系\n"+ 
"\t\tQQ:254482170\n"); 
timeOut(4); 
}break; 
}while (choice != 0); 
System.out.println("Bye! ^-^"); 
System.exit(0); 
} 
public String inputData()//从终端接收数据的方法,返回字符串 
throws IOException,NumberFormatException 
{ 
System.out.print("请依次输入 :学号 姓名 性别 成绩\n" + 
"每项数据请用空格隔开:"); 
String all = ""; 
try{ 
BufferedReader in = //从终 
new BufferedReader ( //端接 
new InputStreamReader(System.in)); //收数 
String inputLine = in.readLine(); //据 
StringTokenizer str = 
new StringTokenizer(inputLine," ");//接收的数据用空格隔开,这个类用来提取每个字符串 
long num = Integer.valueOf(str.nextToken()).longValue();//学号 
String name = (String)str.nextToken(); //姓名 
String sex = (String)str.nextToken(); //性别 
double mark = Integer.valueOf(str.nextToken()).doubleValue();//分数 
all = String.valueOf(num) +" , "+ 
name +" , "+ 
sex +" , "+ 
String.valueOf(mark);//把所有的数据用" , "隔开然后在连起来放进字符串all 
}catch (IOException e){} 
catch (NumberFormatException e){} 
return all;//返回字符串all 
} 
public void addData(String str)//增加数据的方法 
throws IOException 
{ 
String s1 ="",s2="" ,s3= ""; 
File file = new File("data.txt"); 
if (file.exists())//如果文件data.txt存在 
{ 
try{ 
BufferedReader in = 
new BufferedReader( 
new FileReader("data.txt")); 
while ((s1=in.readLine())!=null) 
s2+=s1+"\n";//把文件中的每行数据全部放进一个字符串s2 
s2+=str+"\n"; //再把s2于形参str相连放进s2 
BufferedReader in2 = //把字符 
new BufferedReader( //串s2也 
new StringReader(s2)); //就是原 
PrintWriter out = //文件+ 
new PrintWriter( //形参str(新输入的一行数据) 
new BufferedWriter( //重新写进data.txt 
new FileWriter("data.txt"))); //覆盖原来的数据 
while ((s3=in2.readLine())!= null) 
{ 
out.println(s3); 
} 
out.close(); 
//System.out.println("write data true."); 
}catch (IOException e){} 
}else{ 
System.err.println("File \"data\" Missing!"); 
} 
} 
public void clearData()//清除data.txt的所有数据的方法 
throws IOException 
{ 
File file = new File("data.txt"); 
if(file.exists())//如果文件在 
{ 
try{ 
PrintWriter out = 
new PrintWriter( 
new BufferedWriter( 
new FileWriter(file))); 
out.print("");//在文件data.txt里写进一个空字符,所以清除了原来的内容 
out.close(); //关闭文件 
System.out.println("clear data true!"); 
}catch(IOException e){} 
}else{ 
System.err.println("File \"data\" Missing!"); 
} 
} 
public void deleteData(long deleteNumber)//删除某条数据 
throws IOException,FileNotFoundException 
{ 
isDelete = true; 
try{ 
DataMap mp = new DataMap();//生成一个自己编写的容器 
long j=0; 
String s1="",s2="",s3=""; 
BufferedReader in = 
new BufferedReader( 
new FileReader("data.txt")); 
while ((s1=in.readLine())!=null) 
{ 
j=numberTokenizer(s1); 
mp.put(j,s1); 
} 
try{ 
if(mp.containsKey( String.valueOf(deleteNumber).toString())) 
{ 
mp.remove(deleteNumber); 
}else 
throw new NumberNotFoundException(); 
Collection c = mp.values(); 
Iterator iter = c.iterator(); 
while(iter.hasNext()) 
{ 
s1 = (String)iter.next(); 
s3 +=s1+"\n"; 
} 
BufferedReader in2 = 
new BufferedReader( 
new StringReader(s3)); 
PrintWriter out = 
new PrintWriter( 
new BufferedWriter( 
new FileWriter("data.txt"))); 
//System.out.println("delete No"+deleteNumber); 
while( (s1 = in2.readLine())!=null) 
{ 
out.println(s1); 
} 
out.close(); 
}catch (NumberNotFoundException e) 
{ 
isDelete = false; 
System.out.println(deleteNumber+" no found :("); 
} 
}catch(IOException e){} 
} 
public long numberTokenizer(String s) 
throws IOException 
{ 
StringTokenizer st = 
new StringTokenizer(s," "); 
return Integer.valueOf((st.nextToken())).longValue(); 
} 
public void findData(long find)//查找数据 
throws IOException,NumberNotFoundException 
{ 
isFind = true; 
String s = "",findString =""; 
long i; 
DataMap dm = new DataMap(); 
BufferedReader in = 
new BufferedReader( 
new FileReader("data.txt")); 
while ((s=in.readLine())!=null) 
{ 
i=numberTokenizer(s); 
dm.put(i,s); 
} 
//in.close(); 
try{if(dm.containsKey( String.valueOf(find).toString())) 
{ 
findString = dm.get(find); 
System.out.println("学号"+find+"学生的资料是:"); 
System.out.println(findString); 
}else 
throw new NumberNotFoundException(); 
}catch (NumberNotFoundException e){ 
System.out.println(find+" no found :("); 
isFind = false; 
} 
} 
public static void print()//读取文本文件把数据打印到终端的方法 
throws IOException 
{ 
try{ 
BufferedReader in = 
new BufferedReader( 
new FileReader("data.txt")); 
String read = ""; 
while ((read = in.readLine())!=null) 
System.out.println(read); 
}catch(IOException e){} 
} 
public static void timeOut(double sec)//停顿短暂时间的一个方法完全可以不要这个功能 
{ 
double seconds = sec; 
long t = System.currentTimeMillis()+(int)(seconds*1000); 
while ((System.currentTimeMillis())<t) 
; 
} 
public void numSort()//按学号排序 
throws IOException 
{ 
long i = 0; 
String s = ""; 
try{ 
DataArrayList dal = new DataArrayList(); 
BufferedReader in = 
new BufferedReader( 
new FileReader("data.txt")); 
while ((s=in.readLine())!=null) 
{ 
i=numberTokenizer(s); 
dal.add(i); 
} 
Collections.sort(dal); 
DataMap dm = new DataMap(); 
BufferedReader in2 = 
new BufferedReader( 
new FileReader("data.txt")); 
while ((s=in2.readLine())!=null) 
{ 
i=numberTokenizer(s); 
dm.put(i,s); 
} 
PrintWriter out = 
new PrintWriter ( 
new BufferedWriter( 
new FileWriter("data.txt"))); 
Iterator it = dal.iterator(); 
long temp = 0; 
String tempStr = ""; 
while (it.hasNext()) 
{ 
temp = Integer.valueOf((String)it.next()).longValue(); 
tempStr = dm.get(temp); 
out.println(tempStr); 
} 
out.close(); 
}catch(IOException e){} 
} 
public void rewrite() 
throws IOException,NumberNotFoundException 
{ 
try{ 
System.out.print("请输入你要修改的学生学号:"); 
BufferedReader in = 
new BufferedReader ( 
new InputStreamReader(System.in)); 
String inputLine = in.readLine(); 
long num = Integer.valueOf(inputLine).longValue(); 
findData(num); 
if(isFind) 
{ 
deleteData(num); 
System.out.print("请重新输入该学生的资料:"); 
String str = inputData(); 
addData(str); 
System.out.println("rewrite true!"); 
} 
}catch(IOException e){} 
catch(NumberNotFoundException e){} 
} 
public int count() 
throws IOException 
{ 

DataArrayList dal = new DataArrayList(); 
try{ 
String s = ""; 
long i =0; 
BufferedReader in = 
new BufferedReader( 
new FileReader("data.txt")); 
while ((s=in.readLine())!=null) 
{ 
i=numberTokenizer(s); 
dal.add(i); 
} 
}catch(IOException e){} 
return dal.size(); 
} 
} 
/* 
* 
* @author RangWei 
* TODO 这是个我们写的一个容器,继承公共类HashMap 
* 大概的功能就相当一个数组 
* 
*/ 
class DataMap extends HashMap//一个存储数据的Map 
{ 
public void put(long i,String str)//把学号和数据放进这个Map 
{ //以后一个学号(key)对应的是一个人的数据(value) 
put(String.valueOf(i).toString(),str); 
} 
public void remove(long i)//接收学号,然后删除学号(key)和它对应的数据(value) 
{ 
remove(String.valueOf(i).toString().toString()); 
} 
public String get(long i)//接收一个学号,然后返回这个key对应的value 
{ 
String s = String.valueOf(i).toString(); 
if (!containsKey(s)) 
{ 
System.err.println("Not found Key: "+s); 
} 
return (String)get(s); 
} 
} 
/* 
* 
* @author RangWei 
* 
* TODO 这个类继承ArrayList 
* 用来按数字排序,在用学号排序时要用到它 
* 
*/ 
class DataArrayList extends ArrayList 
{ 
public void add(long num) 
{ 
String numToString = String.valueOf(num).toString(); 
add(numToString); 
} 
} 
/* 
* 
* @author RangWei 
* 
* TODO 增加的一个Exception,主要是在文件里没有要找 
* 的学号就抛出 
* 
*/ 
class NumberNotFoundException extends Exception 
{ 
public NumberNotFoundException() 
{} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -