JAVA程序设计大作业要求.docx
《JAVA程序设计大作业要求.docx》由会员分享,可在线阅读,更多相关《JAVA程序设计大作业要求.docx(40页珍藏版)》请在冰豆网上搜索。
JAVA程序设计大作业要求
java学生成绩管理系统课程设计报告
《Java语言》课程期末作业
学院生物工程学院
专业生物医学工程
班别13级
(1)班
学号DZ******
姓名巴阿西
2015年7月3日
一、课程题目
开发一个小型学生成绩管理系统,功能如下:
1、系统需输入用户名及密码方可登录。
用户分为两种:
管理员:
系统内置,用户名为自己的姓名,密码为学号。
如,用户名:
张三;密码:
********。
管理员可创建/删除普通用户,可修改普通用户密码,可将普通用户升级为管理员,或者将己升级为管理员的普通用户降级回原普通用户。
管理员拥有系统的所用权限。
普通用户:
只拥有查询权限。
如辅导员,可查询所有学生的成绩但无法修改,若需修改只能由教务处(管理员)进行操作。
2、系统主要内容:
每一个项目都间隔一个Tab(提示:
Java中是“\t”),上图中的黄色箭头表示Tab
3、数据批量导入:
以txt格式存储数据,包含两个文件:
(1)导入学生信息
第一个文件中包含学生的姓名、学号及性别
(2)导入成绩信息
第二个文件中包含学生的学号以及各学号对应的十个科目的成绩。
若导入的信息已被包含在系统中时,以当前导入信息为准。
如系统已存储20140001的大学英语成绩为84,现导入文件中其大学英语为87,那么201140001的最终成绩是87。
当文件格式出错时,给出提示信息。
提示:
以上文件会随后共享到群里,包括有格式错误的文件
4、成绩导出:
成绩导出存为txt格式,在文件中的显示格式与系统内容一致,包括以下内容:
5、其他功能:
(1)排序功能,可将任意指定科目或所有科目成绩按从高到低顺序排列并
呈现出来,可打印到屏幕上或者写成文件形式。
(2)查看任意指定科目的最高分或最低分
(3)查看任意指定科目的平均成绩
(4)实现成绩分级,有如下5个等级:
优秀(90-100)良好(80-89)中等(70-79)
及格(60-69)不及格(0-59)
(5)查看某一学生的所有成绩,可以凭借学号或者姓名进行查询。
(6)删除或添加学生
(7)成绩录入功能:
录入某一学生的某科成绩或者所有成绩
(8)修改某个学生某一科的成绩。
其中:
普通用户可执行
(1)-(5)功能;管理员可执行所有功能
二设计目的
1、设计目的:
巩固和加深学生对高级语言程序设计课程的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,提高运用java语言解决实际问题的能力。
1、系统需输入用户名及密码方可登录。
用户分为两种:
管理员:
系统内置,用户名为自己的姓名,密码为学号。
如,用户名:
张三;密码:
********。
管理员可创建/删除普通用户,可修改普通用户密码,可将普通用户升级为管理员,或者将己升级为管理员的普通用户降级回原普通用户。
管理员拥有系统的所用权限。
三系统总体设计
成功登陆系统以后,出现成绩管理界面,系统初始化,可对学生成绩进行增加、删除、查询、修改、统计,进入相应界面进行成绩管理,退出系统自动保存本次操作内容,保存信息。
简易流程图:
1、实验步骤
(1)首先确定学生管理系统的用户。
(2)学生管理系统的用户基本分为两类,分别是管理员和普通用户。
不管是哪种用户都是必须经过登录才能进入学生管理系统的,所以该系统必须有一个登录界面,并且在该界面中能够让用户选择用户是老师还是学生。
该系统是不会对外开放的,所以也不存在注册界面。
(3)因为用户分为两种,所以每一种用户进行操作的界面应该是不同的。
首先是普通用户界面,在其中应该只有查询成绩。
主要来学习如何进行普通用户界面开发。
(4)除了普通用户界面外,还要有一个管理员界面。
管理员在管理员界面中可以对学生信息进行管理,包括查询、修改和删除。
同样也可以对学生的成绩进行管理,包括查询和插入,由于输入错误还要能够对学生的成绩进行修改,由于学生作弊还能够将学生的成绩进行删除。
(5)不管是老师和学生进入学生管理系统都是从登录界面进入的。
在登录界面中应该是让用户选择自己身份的,然后系统将根据用户的选择来判断用户的身份并进行查询不同的数据库。
(6)对界面设计好基本形式后,就可以进行程序开发。
首先要定义两个标签和两个文本框,分别来表示用户名和密码。
并且还需要定义一个下拉列表让用户来进行身份选择,其中选项包括“学生”和“老师”。
在程序的最后还定义了两个按钮,从而让用户输入用户名和密码后进行登录。
四设计感想
这次实验一开始摸不着头脑,不知道从哪里入手。
没办法只好硬着头皮做下去。
开始是去图书馆查找资料,找到了一些以前关于界面设计的代码模版,自己就先拿那些模版进行一些练习,熟能生巧,应用一些代码对自己的实验要求进行合理的设计。
而且布置任务的时间太晚了,最近有很多考试,导致我的作业只能延迟上交。
学生真的不是故意的,唉,感觉考试发挥的不是很好,希望老师手下留情,及格就好。
谢谢老师!
1,首先在类Studentms创建一个新的窗体添加学生登录和教师登录两个按钮,如图1
图1主登陆界面
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
classWyFrameextendsFrameimplementsActionListener
{
Labell1,l2;
TextFieldt1,t2;
Buttonb1,b2;
publicstaticintk;
publicWyFrame()
{
super("登录");
setBackground(Color.lightGray);
setLayout(null);
setSize(240,160);
this.setLocationRelativeTo(null);
l1=newLabel("教师学生",Label.CENTER);
l2=newLabel("通行密码",Label.CENTER);
t1=newTextField();
t2=newTextField();
b1=newButton("确定");
b2=newButton("取消");
l1.setBounds(40,45,40,30);
l2.setBounds(40,80,40,30);
t1.setBounds(90,45,100,25);
t2.setBounds(90,80,100,25);
b1.setBounds(50,115,60,30);
b2.setBounds(125,115,60,30);
b1.addActionListener(this);
b2.addActionListener(this);
add(l1);add(l2);add(t1);add(t2);add(b1);add(b2);
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){dispose();
System.exit(0);
}
});
setVisible(true);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==b1)
k=1;
if(e.getSource()==b2)
k=2;
repaint();
if(k==1)
{
if(t1.getText().toString().trim().equals("DZ2-1410")){
MyMenuhyf=newMyMenu();
this.setVisible(false);
}
else
{
if(t1.getText().toString().trim().equals("DZ201410"))
{
JOptionPane.showMessageDialog(this,"密码与用户名不匹配!
");
}
else
JOptionPane.showMessageDialog(this,"用户名错误!
");
}
}
if(k==2)
{
dispose();
System.exit(0);
}
}
}
publicclassLogin
{
publicstaticvoidmain(Stringargs[])
{
WyFramehyf=newWyFrame();
}
}
当账号输入为空时检错
图3输入账号为空的时候
当以学生的身份登录成功时,在以上述同样的方法生成一个有查询、退出的窗口如图
图4学生成功登录之后
(7)管理员界面
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassTeachersextendsJFrameimplementsActionListener
{
JMenuBarbar=newJMenuBar();
JMenumenu1=newJMenu("信息");
JMenumenu2=newJMenu("成绩");
JMenuItemitem1=newJMenuItem("录入信息");
JMenuItemitem2=newJMenuItem("录入成绩");
JPaneljpl=newJPanel();
publicTeachers()
{
super("管理员界面");
this.setSize(500,300);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(bar);
this.add(jpl);
jpl.setLayout(null);
bar.add(menu1);
bar.add(menu2);
menu1.add(item1);
menu2.add(item2);
item1.addActionListener(this);
item2.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==item1)
{
AddMsgmsg=newAddMsg();
}
else
{
Addscoreas=newAddscore();
}
}
publicstaticvoidmain(String[]args)
{
Teacherstch=newTeachers();
}
}
普通用户:
只拥有查询权限。
如辅导员,可查询所有学生的成绩但无法修改,若需修改只能由教务处(管理员)进行操作。
(8)普通用户界面
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassStudentsextendsJFrameimplementsActionListener
{
JMenuBarjmb=newJMenuBar();
JMenuMessage=newJMenu("信息");
JMenuScore=newJMenu("成绩");
JMenuItemItem1=newJMenuItem("插入");
JMenuItemItem2=newJMenuItem("查询");
JMenuItemItem3=newJMenuItem("查询");
publicStudents()
{
super("界面");
this.setSize(500,400);
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setJMenuBar(jmb);
jmb.add(Message);
jmb.add(Score);
Message.add(Item1);
Message.add(Item2);
Score.add(Item3);
Item1.addActionListener(this);
Item2.addActionListener(this);
Item3.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==Item1)
{
AddMsgad=newAddMsg();
}
elseif(e.getSource()==Item2)
{
Serchser=newSerch();
}
else
{
Scoreso=newScore();
}
}
publicstaticvoidmain(String[]args)
{
Studentsstu=newStudents();
}
}
2、系统主要内容:
每一个项目都间隔一个Tab(提示:
Java中是“\t”),上图中的黄色箭头表示Tab
importjava.io.Serializable;
publicclassStudentimplementsSerializable{
privateStringname;
privateintnum;
privateintsex;
privateintdaxueyuwen;
privateintgaodengshuxue;
privateintdaxueyingyu;
privateintjava;
privateintxianxingdaishu;
privateintfubianhanshu;
privateintdianluyuanli;
privateintmonidianlu;
privateintshuzidianlu;
privateinttongxinyuanli;
privateintsum=0;
publicStudent(){
}
publicStudent(Stringname,intnum,intsex,intdaxueyuwen,intgaodengshuxue,
intdaxueyingyu,intjava,intxianxingdaishu,intfubianhanshu,intdianluyuanli,
intmonidianlu,intshuzidianlu,inttongxinyuanli)
{
super();
this.name=name;
this.num=num;
this.sex=sex;
this.daxueyuwen=daxueyuwen;
this.gaodengshuxue=gaodengshuxue;
this.daxueyingyu=daxueyingyu;
this.java=java;
this.xianxingdaishu=xianxingdaishu;
this.dianluyuanli=dianluyuanli;
this.monidianlu=monidianlu;
this.shuzidianlu=shuzidianlu;
this.tongxinyuanli=tongxinyuanli;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetNum(){
returnnum;
}
publicvoidsetNum(intnum){
this.num=num;
}
publicintgetsex(){
returnsex;
}
publicvoidsetsex(intsex){
this.sex=sex;
}
publicintgetdaxeuyuwen(){
returndaxueyuwen;
}
publicvoidsetdaxueyuwen(intdaxueyuwen){
this.daxueyuwen=daxueyuwen;
}
publicintgetgaodengshuxue(){
returngaodengshuxue;
}
publicvoidsetgaodengshuxue(intgaodengshuxue){
this.gaodengshuxue=gaodengshuxue;
}
publicintgetdaxueyingyu(){
returndaxueyingyu;
}
publicvoidsetdaxueyingyu(intdaxueyingyu){
this.daxueyingyu=daxueyingyu;
}
publicintgetJava(){
returnjava;
}
publicvoidsetJava(intjava){
this.java=java;
}
publicintgetxianxingdaishu(){
returnxianxingdaishu;
}
publicvoidsetxianxingdaishu(intxianxingdaishu){
this.xianxingdaishu=xianxingdaishu;
}
publicintgetfubianhanshu(){
returnfubianhanshu;
}
publicvoidsetfubianhanshu(intfubianhanshu){
this.fubianhanshu=fubianhanshu;
}
publicintgetdianluyuanli(){
returndianluyuanli;
}
publicvoidsetdianluyuanli(intdianluyuanli){
this.dianluyuanli=dianluyuanli;
}
publicintgetmonidianlu(){
returnmonidianlu;
}
publicvoidsetmonidianlu(intmonidianlu){
this.monidianlu=monidianlu;}
publicintgetshuzidianlu(){
returnshuzidianlu;
}
publicvoidsetshuzidianlu(intshuzidianlu){
this.shuzidianlu=shuzidianlu;
}
publicintgettongxinyuanli(){
returntongxinyuanli;
}
publicvoidsettongxinyuanli(inttongxinyuanli){
this.tongxinyuanli=tongxinyuanli;
}
publicintgetSum(){
returnsum;
}
publicvoidsetSum(intsum){
this.sum=sum;
}
publicStringtoString(){
return"姓名\t"+name+"性别\t"+sex+"学号\t"+num+"大学语文\t"+daxueyuwen
+"高等数学\t"+gaodengshuxue+"大学英语\t"+daxueyingyu+"Java\t"+java
+"线性代数\t"+xianxingdaishu+"复变函数\t"+fubianhanshu+"电路原理\t"+dianluyuanli+
"模拟电路\t"+monidianlu+"数字电路\t"+shuzidianlu+"通信原理\t"+tongxinyuanli;
}
}
3、数据批量导入:
以txt格式存储数据,包含两个文件:
(1)导入学生信息
第一个文件中包含学生的姓名、学号及性别
(2)导入成绩信息
第二个文件中包含学生的学号以及各学号对应的十个科目的成绩。
若导入的信息已被包含在系统中时,以当前导入信息为准。
如系统已存储20140001的大学英语成绩为84,现导入文件中其大学英语为87,那么201140001的最终成绩是87。
当文件格式出错时,给出提示信息。
提示:
以上文件会随后共享到群里,包括有格式错误的文件
4、成绩导出:
成绩导出存为txt格式,在文件中的显示格式与系统内容一致,包括以下内容:
5、其他功能:
(9)排序功能,可将任意指定科目或所有科目成绩按从高到低顺序排列并
呈现出来,可打印到屏幕上或者写成文件形式。
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File