分享
 
 
 

我写的Java学生成绩管理系统源代码

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

{}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有