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 RangWei
* @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/tRangWei/n"+
"/t/tshiep/n"+
"/t/tQQ:*********/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()
{}
}
分享到:
相关推荐
总的来说,Java学生成绩管理系统源码涵盖了从后端开发到前端呈现,从数据库设计到用户交互的诸多方面,为学习者提供了实践和理解企业级Java应用开发的宝贵资源。通过深入研究和修改这个系统,开发者可以提升其Java...
【实例简介】我们在学习了JavaWeb各种基础知识之后,最需要做的就是学会应用,开发一些项目把所学的知识应用起来,下面的这个《JavaWeb学生成绩管理系统》实战项目就是比较好的练手教程。 开发环境:Java、MySQL ...
开发工具:eclipse 数据库:mysql ...新增学生成绩,修改学生成绩,删除学生成绩,查看学生成绩; 学生权限: 1.按学号查询学生成绩; 2.按班级,科目查询学生成绩; 3.按班级,科目及分数段查询学生成绩;
java语言课程设计学生成绩管理系统项目源码java语言课程设计学生成绩管理系统项目源码java语言课程设计学生成绩管理系统项目源码java语言课程设计学生成绩管理系统项目源码。java语言课程设计学生成绩管理系统项目...
7. **文件I/O操作**:在本例中,"Java学生成绩管理系统源代码.txt.txt"可能是项目中用于记录日志或临时存储数据的文件,涉及到Java的File类和流操作。 8. **多线程**:在大型系统中,可能需要多线程处理以提高并发...
基于javaweb的学生成绩管理系统源码+数据库.zip,已获通过的高分项目。项目简介 本项目是一套基于JavaWeb的学生成绩管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为...
Java学生成绩管理系统源码 运行环境:jdk7+tomcat7+mysql+MyEclipse 运用技术:servlet +jsp+mysql Ajax +easyui+jQuery 源码描述: 该学生信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。...
java 学生成绩管理系统 源代码 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; import java.lang.*; public class Students.java extends Applet implements ...
JAVA学生成绩管理系统(源码+数据库)JAVA学生成绩管理系统(源码+数据库)JAVA学生成绩管理系统(源码+数据库)JAVA学生成绩管理系统(源码+数据库)JAVA学生成绩管理系统(源码+数据库)JAVA学生成绩管理系统...
Java学生成绩管理系统代码是一个初学者的里程碑,它展示了如何运用Java编程语言来构建一个实用的应用程序。这个项目是开发者独立完成的,旨在提供一种管理学生考试成绩的工具,具有重要的学习价值和实践意义。 首先...
这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于...
《Java学生成绩管理系统》是基于Java编程语言开发的一款实用性的教育管理软件,适用于高校或教育机构进行学生分数的录入、统计与分析。这个期末实践作业不仅锻炼了开发者的基础编程能力,也展现了对数据管理和软件...
任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于java语言设计并实现了学生成绩管理系统。该系统基于B/S即所谓浏览器/服务器...
在本项目中,"Java实现学生成绩管理系统-源码.zip" 提供了一个基于Java语言开发的学生成绩管理系统。这个系统通常包含多个核心模块,旨在帮助教育机构或教师管理学生的学术成绩、个人信息等数据。以下是对这个系统...
Java 学生成绩管理系统源代码 Java 学生成绩管理系统源代码是一个基于 Java 语言开发的学生成绩管理系统,该系统提供了多种功能,包括增加、查找、修改、删除学生成绩数据、统计成绩、排序等。 关键技术点: 1. ...
Java 实现的学生成绩管理系统是一个典型的业务应用系统,它主要涵盖了学生信息管理和成绩管理两大核心功能。在本文中,我们将深入探讨这个系统的实现细节、技术选型以及可能涉及的关键知识点。 1. **系统架构与设计...
【JAVA学生成绩管理系统源代码】是一个典型的Java编程项目,主要应用于教育领域,特别是大学的计算机科学或软件工程课程中。这个系统的核心功能是管理和处理学生的成绩数据,它结合了数据库技术,如SQL,来存储、...
文件名称“Java学生成绩管理系统源代码.doc”可能包含了系统的详细设计文档,包括类结构、数据库表设计、功能模块划分以及具体的实现步骤。文档通常会详述每个类的职责,各个方法的功能,以及如何组织和调用这些组件...