欢迎光临
我们一直在努力

Java学生成绩管理系统源代码-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

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()

{}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Java学生成绩管理系统源代码-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章