学生成绩管理系统JAVA课程设计.docx
《学生成绩管理系统JAVA课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统JAVA课程设计.docx(21页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统JAVA课程设计
Java课程设计
课题:
学生成绩管理系统
一、问题及功能分析
1、身份验证,和使用系统的权限设置、判定。
2、实现同学的学号、性别、成绩等信息的录入、编辑
3、提供对学号或姓名,进行成绩或所有信息的查询。
4、计算学生平均成绩,显示最高成绩学生信息
5、能实现按成绩、学号、姓名排序列出学生信息。
6、能统计学生成绩分数段的分布(60以下、60~70、70~80、80~90、90~100)情况,并输出。
7、用文件保存数据,以便反复使用。
二、概要设计
(一)算法的流程图
三、详细设计
学生成绩管理系统代码设计:
importjava.util.*;
importjava.lang.*;
importjava.io.*;
classMytest
{
publicstaticvoidmain(String[]args)
throwsIOException
{
{
intselect;
select=1;
Studentstu[]=newStudent[10];
StudentMismis=newStudentMis();
Scannersc=newScanner(System.in);
System.out.println();
System.out.println("---------------------------------------");
System.out.println("**");
System.out.println("欢迎进入学生成绩管理系统");
System.out.println("**");
System.out.println("---------------------------------------");
while(true)
{
System.out.println();
System.out.println("请选择您的操作:
");
System.out.println("1.录入学生成绩信息;");
System.out.println("2.显示学生成绩信息;");
System.out.println("3.计算学生平均成绩;");
System.out.println("4.显示最高成绩学生信息;");
System.out.println("5.查找学生信息;");
System.out.println("6.修改学生信息;");
System.out.println("7.按成绩排序学生信息;");
System.out.println("8.学生信息库扩容;");
System.out.println("9.学生成绩分段输出;");
System.out.println("0.退出;");
System.out.println("请输入数字选项(0-9):
");
select=sc.nextInt();
System.out.println();
//判断输入,0退出
if(select>=0&&select<=9)
{
switch(select)
{
case1:
mis.Inputstu(stu);
break;
case2:
System.out.println("所有学生成绩信息如下:
");
mis.print(stu);
System.out.println("您选择了显示所有学生成绩信息。
");
break;
case3:
System.out.println("学生平均成绩信息如下:
");
System.out.println("平均成绩:
="+mis.Pingfen(stu));
System.out.println("一共有学生人数为:
"+Student.sumstu);
break;
case4:
System.out.println("最高成绩学生信息如下:
");
mis.Topchengji(stu).print();
break;
case5:
System.out.print("输入需要查找的学生姓名:
");
mis.search(stu);
break;
case6:
System.out.print("输入需要修改的学生姓名:
");
Stringtmp=sc.next();
mis.change(tmp,stu);
break;
case7:
System.out.println("排序后学生信息如下:
");
Student[]sort1=mis.sort(stu);
//mis.print(sort1);
break;
case8:
System.out.println("学生信息扩容进行中.....");
stu=mis.kourong(stu);
System.out.println("学生信息扩容完成.....");
break;
case9:
mis.test(stu);
break;
case0:
System.exit(0);
}
}
else
{
System.out.println("输入错误,请重新输入!
");
continue;
}
}
}
}
}
classStudentMis{
publicStudentMis(){
}
publicvoidInputstu(Studenta[])//增加学生对象,通过键盘接受相关资料
throwsIOException{
Stringtmp;
booleanflat=false;
Scannersc=newScanner(System.in);
intnum=Student.sumstu;
System.out.print("请输入学生的学号:
");
tmp=sc.next();
do//检查学号的唯一性
{
for(inti=0;iif(tmp.equals(a[i].id)){
System.out.println("该学号已存在!
");
System.out.print("请输入学生的学号:
");
tmp=sc.next();
flat=true;
}
elseflat=false;//学号不重复
}while(flat);
if(numa[num]=newStudent(tmp);//可以增加学生对象,调用带参数的,实际增加
a[num].id=tmp;
System.out.print("请输入学生姓名:
");
a[num].name=sc.next();
System.out.print("请输入学生成绩:
");
a[num].chengji=sc.nextInt();
System.out.println();
}
elseSystem.out.println("学生数组已满,要扩容!
");
}
publicStudentTopchengji(Studenta[]){//查找成绩最高的学生
intmax=a[0].chengji;
intid=0;
for(inti=1;iif(a[i].chengji>max)
{max=a[i].chengji;
id=i;
}
returna[id];
}
publicStudentsearch(Studenta[]){//查找学生
Stringtmpname;
intsearchid=-1;
Scannersc=newScanner(System.in);
tmpname=sc.next();//按输入的姓名去查找
for(inti=0;iif(tmpname.equals(a[i].name)){
a[i].print();
searchid=i;
}
}
if(searchid==-1){
System.out.println("没有符合条件的学生");
returnnull;
}
elsereturna[searchid];
}
publicStudentsearch(Stringname,Studenta[]){//按姓名去查找学生
intsearchid=-1;
for(inti=0;iif(name.equals(a[i].name)){
a[i].print();
searchid=i;
}
}
if(searchid==-1){
System.out.println("没有符合条件的学生");
returnnull;
}
elsereturna[searchid];
}
publicvoidtest(Studenta[]){
intb=0,c=0,d=0,e=0,f=0;
for(inti=0;iif(a[i].chengji<60){
b++;
System.out.print("成绩小于60的学生");
a[i].print();}
if(a[i].chengji>=60&&a[i].chengji<70){
c++;
System.out.println("成绩在60-70的学生");
a[i].print();}
if(a[i].chengji>=70&&a[i].chengji<80){
d++;
System.out.println("成绩在70-80的学生");
a[i].print();}
if(a[i].chengji>=80&&a[i].chengji<90){
e++;
System.out.println("成绩在80-90的学生");
a[i].print();}
if(a[i].chengji>=90&&a[i].chengji<=100){
f++;
System.out.println("成绩在90-100的学生");
a[i].print();}
}
System.out.println("成绩在<60的学生总数为\t"+b);
System.out.println("成绩在60-70的学生总数为\t"+c);
System.out.println("成绩在70-80的学生总数为\t"+d);
System.out.println("成绩在80-90的学生总数为\t"+e);
System.out.println("成绩在90-100的学生总数为\t"+f);
}
publicStudentchange(Stringname,Studenta[]){//修改给定名字的学生成绩
Studenttmp=search(name,a);
if(tmp==null){
System.out.println("没有符合条件的学生");
returnnull;
}
else{
System.out.print("请输入修改成绩:
");
Scannersc=newScanner(System.in);
tmp.chengji=sc.nextInt();
returntmp;
}
}
doublePingfen(Studenta[]){//求所有学生的成绩平均分
doublesum=0;
for(inti=0;isum=sum+a[i].chengji;
returnsum/Student.sumstu;
}
publicStudent[]sort(Student[]stu1){//按成绩排序,放到新的数组中
Student[]sortstu=newStudent[Student.sumstu];//声明新数组
inti,j,k;
Studenttemp=newStudent();
for(i=0;isortstu[i]=newStudent();
sortstu[i]=stu1[i];
}
for(i=0;ik=i;
for(j=i;jif(sortstu[j].chengjitemp=sortstu[i];
sortstu[i]=sortstu[k];
sortstu[k]=temp;
}
for(i=0;isortstu[i].print();//输出打印
returnsortstu;
}
publicStudent[]kourong(Student[]stu1){//扩容,增加20人
Student[]newstu=newStudent[stu1.length+20];//声明新数组
inti,j,k;
Studenttemp=newStudent();
for(i=0;inewstu[i]=newStudent();
newstu[i]=stu1[i];
}
stu1=newstu;
returnstu1;
}
voidprint(Studenta[]){//输出学生数组中每个学生的信息
for(inti=0;ia[i].print();
}
}
classStudent{//创建一个Student类
Stringid;
Stringname;
Stringsex;
intage;
intchengji;
publicstaticintsumstu=0;//类变量,统计学生的数量
publicStudent(){
id="00";
name="aa";
sex="man";
age=18;
chengji=0;//每创建一个对象时,学生数量加1;
}
publicStudent(Stringtmp){
id=tmp;
name="aa";
sex="man";
age=18;
chengji=0;
sumstu++;//每创建一个对象时,学生数量加1;
}
voidSetChengji(intn){
chengji=n;
}
StringGetname(){//获取学生姓名
returnname;
}
intGetchengji(){//获取学生成绩
returnchengji;
}
voidprint(){//输出一个学生的信息的方法.
System.out.println("姓名:
"+name+"成绩:
"+chengji);
}
}
四、调试分析
1.源代码编写完成并编译成功。
2.程序开始界面。
3.录入学生信息。
4.显示学生成绩信息。
5.计算学生平均成绩。
6.显示最高成绩学生信息.
7.查找学生信息。
8.修改学生信息。
9.按成绩排序学生信息。
10.学生信息库扩容。
11.学生成绩分段输出。
12.程序结束。
课程设计总结
学习JAVA以来,感觉它从来就不是一门容易的课,书本有太多太多的知识需要我们去学习,去掌握。
书本的内容不能说很难,但的确很琐碎,需要我们花更多的时间去理解,可惜的是,愿意花时间在这上面的人太少了,我也自认在Java上并没有花太多的时间去研究。
对于这次的课程设计,老师给的时间很充裕,但还是有很多同学敷衍了事,我们知道这的确是我们的错,我们并没有认真的对待这次的作业。
在完成这次作业之前,我把课本的知识有认真的看过一遍,感觉只有系统地理解之前的知识,才能把这次的作业做得更好。
这次的作业,花了我很长的时间去准备,不过我觉得很值得。
在编写源代码的时候,难免遇到了许许多多的问题和错误,是我不得不去从书本中寻找答案或向其他人请教,这让我收获颇丰。
这次的作业,考的不仅仅是测试我们对书本知识的掌握情况,更是考我们在处理问题时的态度。
一次又一次的错误并不能阻挡我们寻求正确的心,一次又一次的尝试更体现我们的决心。
从中,我明白了当我们处理事情时,要有耐心和细心,当然也要有丰富的知识做基础,我们唯有不断学习,才能更好地充实自己,使自己更加进步。