学生选课系统代码加文档Word文件下载.docx
《学生选课系统代码加文档Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生选课系统代码加文档Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
*可以统计每门课的选课学生及每个学生选修的课程;
2.学生客户端功能
*学生可以注册账户;
*学生可以查看自己的基本信息;
*学生端可以进行远程选课,并且可以查看自己已选的课程信息。
1.1问题描述
1.课题描述:
课程基本信息:
课程名,课时,开课学期,学分
专业选修课信息包括:
课程名,课时,开课学期,学生,所属专业
公共选修课信息包括:
课程名,课时,开课学期,学生,面向专业,开课系部
学生信息:
学号,姓名,专业,选课信息
2.功能要求:
(1)课程信息的维护:
查询课程信息情况、增加课程信息、删除课程信息、更新课程信息。
(2)学生信息的维护:
查询学生信息情况、增加学生信息、删除学生信息、更新学生信息。
(3)选课:
每人每学期选课不能超过4门;
只能选自己专业的专业选修课或面向自己专业的公共选修课。
(4)选课信息:
记录学生的选课情况,包括课程名,选课时间(学期)。
(5)统计模块:
每个学生选修课程的门数,每门课程选修的学生人数。
学生选课系统流程图:
1.2技术分析
该学生选课系统的的实现用的是eclipse开发工具,是用java语言编写的,Java语言是纯面向对象的语言,程序的结构由一个以上的类和(或)接口组成。
程序的设计集中于类与对象、继承与接口上。
通过继承机制,子类可以使用父类所提供的属性与方法,实现了软件代码的复用。
.面向对象基于对象的编程更符合人的思维模式,使人们更容易编写程序。
在实际生活中,我们每时每刻都与对象在打交道。
我们用的钢笔,骑的自行车,乘的公共汽车等。
而我们经常见到的卡车,公共汽车,轿车等都会涉及以下几个重要的物理量可乘载的人数,运行速度,发动机的功率,耗油量,自重,轮子数目等。
另外,还有几个重要的功能加速功能,减速功能,刹车,转弯功能等。
我们也可以把这些功能称作是他们具有的方法,而物理量是它们的状态描述。
仅仅用物理量或功能不能很好的描述它们。
在现实生活中,我们用这些共有的属性和功能给出一个概念机动车类。
一个具体的轿车就是机动车类的一个实例对象.Java语言与其它面向对象语言一样,引入了类的概念,类是用来创建对象的模板,它包含被创建的对象的状态描述和方法的定义。
与平台无关是Java语言最大的优势。
其它语言编写的程序面临的一个主要问题是操作系统的变化,处理器升级以及核心系统资源的变化,都可能导致程序出现错误或无法运行。
Java的虚拟机成功地解决了这个问题,Java编写的程序可以在任何安装了Java虚拟机JVM的计算机上正确的运行,Sun公司实现了自己的目标“一次写成,处处运行”。
Java程序的基本组成单元就是类,有些类是自己编写的,有一些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分布环境中动态地维护程序及类库,而不像C++那样,每当其类库升级之后,相应的程序都必须重新修改,编译。
当你准备从网络上下载一个程序时,你最大的担心是程序中含有恶意的代码,比如试图读取或删除本地机上的一些重要文件,甚至该程序是一个病毒程序等。
当你使用支持Java的浏览器时,你可以放心地运行Java的小应用程序JavaApplet,不必担心病毒的感染和恶意的企图,Java小应用程序将限制在Java运行环境中,不允许它访问计算机的其它部分。
摘自:
java语言的八大优点一文
第2章实现
学生信息和课程信息用文件实现保存,查看。
2.1功能模块1
实现课程信息的维护(即增删改查),老师可以在新学期即将开始是把新课程添加进去,把旧的课程信息删除,从而方便教师。
实现此功能使用的方法有readCourseMessage()(查看课程信息)、delCourse()(删除课程信息)、addCourse()(增加课程信息)、update()(修改课程信息)。
2.2流程图
2.1.2界面
1.查询课程信息结果
1,查询课程信息情况2、增加课程信息3、删除课程信息4、更新课程信息5、退出
1专业选修课
课程号课程名学时学分开课学期面向专业已选限选可选
101Java727.02013上软件工程510095
102英语口语605.02013下软件工程410096
公共选修课
课程号课程名学时学分开课学期面向专业已选限选可选开课院系
202音乐鉴赏151.02013下软件0100100软件工程
2.增加课程信息
1,查询课程信息情况2、增加课程信息3、删除课程信息4、更新课程信息5、退出
2
请选择:
1,添加课程2,返回
1
您想增加:
1,专业选修课2,公共选修课
请输入开课院系:
3
请输入课程号:
202
你已成功删除此课程。
3.删除课程信息操
4..更新课程信息
102
您想修改:
1,学时2,学分3,开课学期4,开课院系5,退出
2.1.3代码
1.课程信息的查看:
publicCourse[]readCourseMessage()throwsFileNotFoundException{
coursesOfSystem=newCourse[1];
numberOfCourses=0;
java.io.Fileread=newjava.io.File("
Course.txt"
);
ScannerreadMessage=newScanner(read);
while(readMessage.hasNext()){
if(numberOfCourses==coursesOfSystem.length){
Course[]newReadCourse=newCourse[coursesOfSystem.length+1];
System.arraycopy(coursesOfSystem,0,newReadCourse,0,coursesOfSystem.length);
coursesOfSystem=newReadCourse;
}
coursesOfSystem[numberOfCourses]=newCourse();
coursesOfSystem[numberOfCourses].courseAttribute=readMessage.next();
coursesOfSystem[numberOfCourses].courseNum=readMessage.next();
coursesOfSystem[numberOfCourses].courseName=readMessage.next();
coursesOfSystem[numberOfCourses].courseHour=readMessage.next();
coursesOfSystem[numberOfCourses].courseCredit=readMessage.nextDouble();
coursesOfSystem[numberOfCourses].courseTerm=readMessage.next();
coursesOfSystem[numberOfCourses].majorOfStudent=readMessage.next();
if(coursesOfSystem[numberOfCourses].courseAttribute.equals("
Public"
)){
coursesOfSystem[numberOfCourses].department=readMessage.next();
}
coursesOfSystem[numberOfCourses].numCourse=readMessage.nextInt();
//异常代码
coursesOfSystem[numberOfCourses].surplus=coursesOfSystem[numberOfCourses].recruit-coursesOfSystem[numberOfCourses].numCourse;
numberOfCourses++;
}
readMessage.close();
returncoursesOfSystem;
2.删除学课程
publicvoiddelCourse()throwsFileNotFoundException,IOException{
intindexOfDel=SearchCourse();
if(indexOfDel==-1){
System.out.println("
系统没有找到您想操作的数据!
请核实信"
else{
delStudent(coursesOfSystem[indexOfDel].courseName);
for(inti=indexOfDel;
i<
coursesOfSystem.length-1;
i++){
coursesOfSystem[i]=coursesOfSystem[i+1];
numberOfCourses--;
Course[]newCs=newCourse[numberOfCourses];
System.arraycopy(coursesOfSystem,0,newCs,numberOfCourses);
coursesOfSystem=newCs;
SavaCoursesMessage();
3.增加课程
publicvoidaddCourse()throwsIOException{//添加新课程
course=newCourse();
while(true){
1,添加课程2,返回"
if(input.nextInt()==2)
break;
System.out.println("
1,专业选修课2,公共选修课"
if(input.nextInt()==1)
{
course.courseNum=Integer.toString(getNextNum(readCourseMessage(),"
Major"
));
course.courseAttribute="
;
course.courseNum=Integer.toString(getNextNum(readCourseMessage(),"
"
course.department=input.next();
请输入课程名:
StringnewName=CheakCourseName(input.next());
if(newName.equals("
0"
))
1,重新输入课程名2,返回"
break;
}
course.courseName=newName;
break;
if(course.courseName.equals("
))break;
请输入学时:
course.courseHour=input.next();
请输入学分:
course.courseCredit=input.nextDouble();
请输入开课年份):
Stringyears=input.next();
System.out.println("
1"
+years+"
上学期2"
下学期"
course.courseTerm=years+"
上"
elsecourse.courseTerm=years+"
下"
请输入此课程面向的专业:
course.majorOfStudent=input.next();
course.numCourse=0;
SavaCourseMessage();
课程已添加!
4.更新课程信息:
publicvoidUpDateCours()throwsIOException,FileNotFoundException{
intindex=SearchCourse();
Scannerinput=newScanner(System.in);
if(index==-1){
请核实信息!
while(true){
System.out.println("
1,学时2,学分3,开课学期4,开课院系5,退出"
intchoose=input.nextInt();
if(choose==1){
请输入新的学时:
coursesOfSystem[index].courseHour=input.next();
elseif(choose==2){
请输入新的学分:
coursesOfSystem[index].courseCredit=input.nextDouble();
elseif(choose==3)
请输入新的开课年份:
Stringyears=input.next();
1,"
上学期2,"
coursesOfSystem[index].courseTerm=years+"
elsecoursesOfSystem[index].courseTerm=years+"
elseif(choose==4){
if(coursesOfSystem[index].courseAttribute.equals("
coursesOfSystem[index].department=input.next();
2.2功能模块2
学生选课的实现,学生可以选择每学期必修的专业选修课和公共选修课,选则公共选修课时还可以查看自己选修课程的学分,以便自己可以有选择的选修课程。
方便了学生选课,也为老师节省了不少时间。
通过程序chooseCourse()来实现学生选课功能。
2.选课功能流程图
2.2.2界面
1,个人信息2,课程信息3,选课4、退出
103
您确定选择此课程吗?
1,是2,否
你成功选择此课程
2.2.3代码
publicvoidchooseCourse()throwsIOException{//选课功能
if(student.numberOfCourses<
maxCourse){
curriculum.showCourseName();
StringcourseNumber=input.next();
for(inti=0;
10;
intupDate=SearchCourse();
if(upDate==-1){
Print("
请重新输入!
else
intii=0;
Coursec=newCourse();
booleanchoose=false;
curriculum.coursesOfSystem.length;
if(courseNumber.equals(curriculum.coursesOfSystem[i].courseNum)&
&
curriculum.coursesOfSystem[i]
.numCourse<
recruit){
for(intj=0;
j<
student.coursesOfStudent.length;
j++){
if(curriculum.coursesOfSystem[i].courseName.equals(student.coursesOfStudent[j])){
Print("
您已选过此课程!
choose=true;
break;
}
}
if(choose)
if(student.numberOfCourses==student.coursesOfStudent.length){
String[]newCourses=newString[student.coursesOfStudent.length+1];
System.arraycopy(student.coursesOfStudent,0,newCourses,0,student.coursesOfStudent.length);
student.coursesOfStudent=newCourses;
student.coursesOfStudent[student.numberOfCourses]=newString();
student.coursesOfStudent[student.numberOfCourses]=curriculum.coursesOfSystem[i].courseName;
curriculum.coursesOfSystem[i].numCourse++;
student.numberOfCourses++;
ii=i;
c=curriculum.coursesOfSystem[i];
if(!
choose){
1,是2,否"
if(input.nextInt()==1){
Sava=true;
curriculum.changeCourse(c,ii);
writeStudentMessage();
你成功选择此课程"
elseif(input.nextInt()==2)
System.out.println("
请重新选择"
else
抱歉,您只能选4门课程"
第三章.结束语
为期三周的课题实践伴随着这个报告的诞生宣告了一个段落,我们在做本课题的三周里,前两周我们主要是写代码,最后一周就是写实践报告。
这次我们的课题是用java编写学生选课系统,通过这三个周我们两个人的努力,以及于老师的指点,总算出来点成绩我们在规定的时间里勉强完成了我们的课题如果真要评价下的话,我们的课题完成的只能说是还行,我们刚开始的时候感觉到很迷茫,随后我们经过查资料书、上网查,慢慢的有点思路了。
很多都是我们所学习的内容,比起C语言编程我觉得java更容易些,因为在C里面我们的方法都是自己来想自己来写,但是java