java 课程设计 学生成绩管理系统代码.docx
《java 课程设计 学生成绩管理系统代码.docx》由会员分享,可在线阅读,更多相关《java 课程设计 学生成绩管理系统代码.docx(18页珍藏版)》请在冰点文库上搜索。
java课程设计学生成绩管理系统代码
我写的Java学生成绩管理系统源代码
发布时间:
2006.03.0916:
38来源:
CSDN作者:
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.io.StringReader;
importjava.util.ArrayList;
importjava.util.Collection;
importjava.util.Collections;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.StringTokenizer;
/*
*Createdon2005-1-11
*/
/**
*@author让炜
*@since1.0
*
*TODO学生成绩管理系统
*通过学号查找,修改,删除数据
*
*/
publicclassLittleProgram
{
staticbooleanisDelete=true;
staticbooleanisFind=true;
publicstaticvoidmain(String[]args)//主方法,程序从这里开始运行
throwsIOException,NumberNotFoundException
{
intchoice=-1;
do{
LittleProgramlp=newLittleProgram();
System.out.println();
System.out.println("\t####################################");
System.out.println();
System.out.println("\t\tJava学生成绩管理系统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"+
"输入:
");
BufferedReaderin=//从终
newBufferedReader(//端接
newInputStreamReader(System.in));//收数
StringinputLine=in.readLine();//字选
choice=Integer.valueOf(inputLine).intValue();//项;
switch(choice)
{
case1:
{//1.增加数据
Stringstr=lp.inputData();
lp.addData(str);
System.out.println("增加数据成功.");
timeOut
(1);
}break;
case2:
{//2.查找数据
longfind=0;
System.out.print("请输入你要查找的学生学号:
");
BufferedReaderinn=
newBufferedReader(
newInputStreamReader(System.in));
StringinputLi=inn.readLine();
find=Integer.valueOf(inputLi).longValue();
lp.findData(find);
timeOut
(2);
}break;
case3:
{//3.删除数据
longdeleteNumber=0;
System.out.print("请输入你想删除的同学的学号:
");
BufferedReaderbf=
newBufferedReader(
newInputStreamReader(System.in));
StringinputL=bf.readLine();
deleteNumber=Integer.valueOf(inputL).longValue();
lp.deleteData(deleteNumber);
if(isDelete)
System.out.println("删除数据成功!
");
timeOut
(1);
}break;
case4:
{
lp.clearData();//4.清除所有数据
timeOut
(1);
}break;
case5:
{
print();//5.把数据全部打印到屏幕
timeOut
(2);
}break;
case6:
{
lp.numSort();//6.把成绩按学号排序
System.out.println("按照学号从小到大排序成功!
\n"+
"排序后:
\n");
print();
timeOut
(2);
}break;
case7:
{
lp.rewrite();//7.修改数据
timeOut
(2);
}break;
case8:
{
intcount=lp.count();
System.out.println("共有"+count+"个学生已经记录.");
timeOut
(2);
}break;
case9:
{
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);
}
publicStringinputData()//从终端接收数据的方法,返回字符串
throwsIOException,NumberFormatException
{
System.out.print("请依次输入:
学号姓名性别成绩\n"+
"每项数据请用空格隔开:
");
Stringall="";
try{
BufferedReaderin=//从终
newBufferedReader(//端接
newInputStreamReader(System.in));//收数
StringinputLine=in.readLine();//据
StringTokenizerstr=
newStringTokenizer(inputLine,"");//接收的数据用空格隔开,这个类用来提取每个字符串
longnum=Integer.valueOf(str.nextToken()).longValue();//学号
Stringname=(String)str.nextToken();//姓名
Stringsex=(String)str.nextToken();//性别
doublemark=Integer.valueOf(str.nextToken()).doubleValue();//分数
all=String.valueOf(num)+","+
name+","+
sex+","+
String.valueOf(mark);//把所有的数据用","隔开然后在连起来放进字符串all
}catch(IOExceptione){}
catch(NumberFormatExceptione){}
returnall;//返回字符串all
}
publicvoidaddData(Stringstr)//增加数据的方法
throwsIOException
{
Strings1="",s2="",s3="";
Filefile=newFile("data.txt");
if(file.exists())//如果文件data.txt存在
{
try{
BufferedReaderin=
newBufferedReader(
newFileReader("data.txt"));
while((s1=in.readLine())!
=null)
s2+=s1+"\n";//把文件中的每行数据全部放进一个字符串s2
s2+=str+"\n";//再把s2于形参str相连放进s2
BufferedReaderin2=//把字符
newBufferedReader(//串s2也
newStringReader(s2));//就是原
PrintWriterout=//文件+
newPrintWriter(//形参str(新输入的一行数据)
newBufferedWriter(//重新写进data.txt
newFileWriter("data.txt")));//覆盖原来的数据
while((s3=in2.readLine())!
=null)
{
out.println(s3);
}
out.close();
//System.out.println("writedatatrue.");
}catch(IOExceptione){}
}else{
System.err.println("File\"data\"Missing!
");
}
}
publicvoidclearData()//清除data.txt的所有数据的方法
throwsIOException
{
Filefile=newFile("data.txt");
if(file.exists())//如果文件在
{
try{
PrintWriterout=
newPrintWriter(
newBufferedWriter(
newFileWriter(file)));
out.print("");//在文件data.txt里写进一个空字符,所以清除了原来的内容
out.close();//关闭文件
System.out.println("cleardatatrue!
");
}catch(IOExceptione){}
}else{
System.err.println("File\"data\"Missing!
");
}
}
publicvoiddeleteData(longdeleteNumber)//删除某条数据
throwsIOException,FileNotFoundException
{
isDelete=true;
try{
DataMapmp=newDataMap();//生成一个自己编写的容器
longj=0;
Strings1="",s2="",s3="";
BufferedReaderin=
newBufferedReader(
newFileReader("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
thrownewNumberNotFoundException();
Collectionc=mp.values();
Iteratoriter=c.iterator();
while(iter.hasNext())
{
s1=(String)iter.next();
s3+=s1+"\n";
}
BufferedReaderin2=
newBufferedReader(
newStringReader(s3));
PrintWriterout=
newPrintWriter(
newBufferedWriter(
newFileWriter("data.txt")));
//System.out.println("deleteNo"+deleteNumber);
while((s1=in2.readLine())!
=null)
{
out.println(s1);
}
out.close();
}catch(NumberNotFoundExceptione)
{
isDelete=false;
System.out.println(deleteNumber+"nofound:
(");
}
}catch(IOExceptione){}
}
publiclongnumberTokenizer(Strings)
throwsIOException
{
StringTokenizerst=
newStringTokenizer(s,"");
returnInteger.valueOf((st.nextToken())).longValue();
}
publicvoidfindData(longfind)//查找数据
throwsIOException,NumberNotFoundException
{
isFind=true;
Strings="",findString="";
longi;
DataMapdm=newDataMap();
BufferedReaderin=
newBufferedReader(
newFileReader("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
thrownewNumberNotFoundException();
}catch(NumberNotFoundExceptione){
System.out.println(find+"nofound:
(");
isFind=false;
}
}
publicstaticvoidprint()//读取文本文件把数据打印到终端的方法
throwsIOException
{
try{
BufferedReaderin=
newBufferedReader(
newFileReader("data.txt"));
Stringread="";
while((read=in.readLine())!
=null)
System.out.println(read);
}catch(IOExceptione){}
}
publicstaticvoidtimeOut(doublesec)//停顿短暂时间的一个方法完全可以不要这个功能
{
doubleseconds=sec;
longt=System.currentTimeMillis()+(int)(seconds*1000);
while((System.currentTimeMillis());
}
publicvoidnumSort()//按学号排序
throwsIOException
{
longi=0;
Strings="";
try{
DataArrayListdal=newDataArrayList();
BufferedReaderin=
newBufferedReader(
newFileReader("data.txt"));
while((s=in.readLine())!
=null)
{
i=numberTokenizer(s);
dal.add(i);
}
Collections.sort(dal);
DataMapdm=newDataMap();
BufferedReaderin2=
newBufferedReader(
newFileReader("data.txt"));
while((s=in2.readLine())!
=null)
{
i=numberTokenizer(s);
dm.put(i,s);
}
PrintWriterout=
newPrintWriter(
newBufferedWriter(
newFileWriter("data.txt")));
Iteratorit=dal.iterator();
longtemp=0;
StringtempStr="";
while(it.hasNext())
{
temp=Integer.valueOf((String)it.next()).longValue();
tempStr=dm.get(temp);
out.println(tempStr);
}
out.close();
}catch(IOExceptione){}
}
publicvoidrewrite()
throwsIOException,NumberNotFoundException
{
try{
System.out.print("请输入你要修改的学生学号:
");
BufferedReaderin=
newBufferedReader(
newInputStreamReader(System.in));
StringinputLine=in.readLine();
longnum=Integer.valueOf(inputLine).longValue();
findData(num);
if(isFind)
{
deleteData(num);
System.out.print("请重新输入该学生的资料:
");
Stringstr=inputData();
addData(str);
System.out.println("rewritetrue!
");
}
}catch(IOExceptione){}
catch(NumberNotFoundExceptione){}
}
publicintcount()
throwsIOException
{
DataArrayListdal=newDataArrayList();
try{
Strings="";
longi=0;
BufferedReaderin=
newBufferedReader(
newFileReader("data.txt"));
while((s=in.readLine())!
=null)
{
i=numberTokenizer(s);
dal.add(i);
}
}catch(IOExceptione){}
returndal.size();
}
}
/*
*
*@authorRangWei
*TODO这是个我们写的一个容器,继承公共类HashMap
*大概的功能就相当一个数组
*
*/
classDataMapextendsHashMap//一个存储数据的Map
{
publicvoidput(longi,Stringstr)//把学号和数据放进这个Map
{//以后一个学号(key)对应的是一个人的数据(value)
put(String.valueOf(i).toString(),str);
}
publicvoidremove(longi)//接收学号,然后删除学号(key)和它对应的数据(value)
{
remove(String.valueOf(i).toString().toString());
}
publicStringget(longi)//接收一个学号,然后返回这个key对应的value
{
Strings=String.valueOf(i).toString();
if(!
containsKey(s))
{
System.err.println("NotfoundKey:
"+s);
}
return(String)get(s);
}
}
/*
*
*@authorRangWei
*
*TODO这个类继承ArrayList
*用来按数字排序,在用学号排序时要用到它
*
*/
classDataArrayListextendsArrayLis