学了java很久了想做个成绩管理系统就参考了一些资料用JTree做主要的界面结构 Mysql做数据库 开发中有详细的注释可以和一些初学者共勉 其中这个是教师端的一些界面程序功能还未实现
主窗体设计如下
public class TeacherClient extends JFrame
{
//host=数据库主机IP+":"+端口号
private String host;
//声明学院编号的引用
String coll_id;
//创建树的各个节点
private DefaultMutableTreeNode dmtnRoot=
new DefaultMutableTreeNode(new MyNode("操作选项","0"));
private DefaultMutableTreeNode dmtn1=
new DefaultMutableTreeNode(new MyNode("系统选项","1"));
private DefaultMutableTreeNode dmtn2=
new DefaultMutableTreeNode(new MyNode("学生信息管理","2"));
private DefaultMutableTreeNode dmtn3=
new DefaultMutableTreeNode(new MyNode("课程管理","3"));
private DefaultMutableTreeNode dmtn4=
new DefaultMutableTreeNode(new MyNode("班级设置","4"));
private DefaultMutableTreeNode dmtn11=
new DefaultMutableTreeNode(new MyNode("退出","11"));
private DefaultMutableTreeNode dmtn13=
new DefaultMutableTreeNode(new MyNode("密码修改","13"));
private DefaultMutableTreeNode dmtn21=
new DefaultMutableTreeNode(new MyNode("新生报到","21"));
private DefaultMutableTreeNode dmtn22=
new DefaultMutableTreeNode(new MyNode("学生信息查询","22"));
private DefaultMutableTreeNode dmtn221=
new DefaultMutableTreeNode(new MyNode("基本信息查询","221"));
private DefaultMutableTreeNode dmtn222=
new DefaultMutableTreeNode(new MyNode("成绩查询","222"));
private DefaultMutableTreeNode dmtn31=
new DefaultMutableTreeNode(new MyNode("开课选项设置","31"));
private DefaultMutableTreeNode dmtn32=
new DefaultMutableTreeNode(new MyNode("课程成绩录入","32"));
private DefaultMutableTreeNode dmtn34=
new DefaultMutableTreeNode(new MyNode("添加课程","34"));
private DefaultMutableTreeNode dmtn42=
new DefaultMutableTreeNode(new MyNode("增加班级","42"));
//创建跟节点
private DefaultTreeModel dtm=new DefaultTreeModel(dmtnRoot);
//创建树状列表控件
private JTree jt=new JTree(dtm);
//创建滚动窗口
private JScrollPane jspz=new JScrollPane(jt);
//创建面板
private JPanel jpy=new JPanel();
//创建分割窗格
private JSplitPane jsp1=new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT,jspz,jpy);
////声明功能模块引用(声明语句将在后面各模块的开发过程中逐一添加)
private Welcome welcome;
private ChangePwdTeacher changepwdteacher;
private NewStu newstu;
private TeachSearchInfo teachSearchInfo;
private StuScore stuscore;
private CourseManage coursemanage;
private GradeInDB gradeindb;
private NewCourse newcourse;
private NewClass newclass;
//声明卡片布局引用
CardLayout cl;
public TeacherClient(String coll_id,String host)
{
this.host=host;
this.coll_id=coll_id;
//初始化树状列表控件
this.initialTree();
//创建各功能模块对象
this.initialPanel();
//为节点注册监听器
this.addListener();
//初始化面板
this.initialJpy();
//初始化主窗体
this.initialFrame();
}
说明:上面的代码实现了一个左边是一个树状列表控件,右边是一个卡片布局面板的窗体,并对树的各个节点注册了监听器,对面板及主窗体进行了初始化,当然这里只是调用了相应的方法,其中各个体会见后面的代码 其中MyNode是一个自定义类
主窗体初始化:
public void initialPanel()
{//初始化各功能模块
//初始化代码在后面各模块的开发过程中逐一添加
}
/*上面的那段代码设想是用于初始化各个功能模块的对象,但是由于各个功能模块还没有开发好,所以暂时没有代码到时候做到哪里会添加相应的模块*/
//初始化树状列表控件的方法
public void initialTree()
{
dmtnRoot.add(dmtn1);
dmtnRoot.add(dmtn2);
dmtnRoot.add(dmtn3);
dmtnRoot.add(dmtn4);
dmtn1.add(dmtn11);
dmtn1.add(dmtn13);
dmtn2.add(dmtn21);
dmtn2.add(dmtn22);
dmtn22.add(dmtn221);
dmtn22.add(dmtn222);
dmtn3.add(dmtn31);
dmtn3.add(dmtn32);
dmtn3.add(dmtn34);
dmtn4.add(dmtn42);
}
/*上面的代码是对树状列表控件进行初始化工作,将各个节点挂到相应的父节点出*/
public void initialJpy()
{//将各功能模块添加到面板中
//将面板设置为卡片布局
jpy.setLayout(new CardLayout());
cl=(CardLayout)jpy.getLayout();
//各功能模块将在后面各模块的开发过程中逐一添加
/* 上面除了设置右边面板的布局管理器之外,另外一个要完成的任务是将各个功能模块的对象添加到该面板中去这里的代码以后也会逐步添加的 */
}
public void initialFrame()
{ //设置窗体的标题、大小及其可见性
this.add(jsp1);
jsp1.setDividerLocation(200);
jsp1.setDividerSize(4);
Image image=new ImageIcon("ico.gif").getImage();
this.setIconImage(image);
this.setTitle("教师客户端");
Dimension screenSize = Toolkit.
getDefaultToolkit().getScreenSize();
int centerX=screenSize.width/2;
int centerY=screenSize.height/2;
int w=900;//本窗体宽度
int h=650;//本窗体高度
//设置窗体出现在屏幕中央
this.setBounds(centerX-w/2,centerY-h/2-30,w,h);
this.setVisible(true);
//窗体全屏
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
/*这里主要是对主窗体显示效果进行初始化,使主窗体首先在屏幕中间位置显示,然后又以全屏的方式显示,其中Dimension screenSize = Toolkit.
getDefaultToolkit().getScreenSize();
获得显示器的尺寸,接下去的两行代码是根据窗体的尺寸设置其位置,使其居中显示*/
鼠标事件监听
public void addListener()
{//为树状列表控件注册鼠标事件监听器
jt.addMouseListener(
new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
DefaultMutableTreeNode dmtntemp=
(DefaultMutableTreeNode)jt.
getLastSelectedPathComponent();
MyNode mynode=(MyNode)dmtntemp.getUserObject();
/*这段代码主要是获得选中节点的最后一个路径组件,进而获得存储在此节点的Object对象 然后取出对象的id属性值,根据该属性值确定显示那一块功能*/
String id=mynode.getId();
//根据id值显示不同的卡片
if(id.equals("0"))
{//欢迎页面
cl.show(jpy,"welcome");
}
else if(id.equals("11"))
{//退出系统
int i=JOptionPane.showConfirmDialog(jpy,
"您确认要退出出系统吗?","询问",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(i==0)
{
System.exit(0);
}
}
else if(id.equals("13"))
else if(id.equals("21"))
else if(id.equals("221"))
{//学生信息查询页面
cl.show(jpy,"teachSearchInfo");
teachSearchInfo.setFocus();
}
else if(id.equals("222"))
else if(id.equals("31"))
else if(id.equals("32"))
else if(id.equals("34"))
else if(id.equals("42"))
}
}
);
//将展开节点的鼠标点击次数设为1
jt.setToggleClickCount(1);
}
MyNOde方法
class MyNode
{
private String values;
private String id;
public MyNode(String values,String id)
{
this.values=values;
this.id=id;
}
public String toString()
{
return this.values;
}
public String getId()
{
return this.id;
}
}
MyNode是一个内部类,主要用于创建节点时的内部参数,用于创建DefaultMutableTreeNode对象时对该节点对象进行初始化,在后面的监听事件中根据MyNode对象的属性值来判断单击是哪一个节点,从而确定是哪一个功能模块
分享到:
相关推荐
最后,了解如何打包应用程序并生成安装程序,使得其他用户可以方便地下载和安装这个学生成绩管理系统,也是开发过程中不可或缺的一部分。 通过学习和实践这个简单的学生成绩管理系统,初学者可以掌握C#编程、ADO...
- **目的**:文档旨在明确描述学生成绩管理系统的整体结构、功能模块及其具体需求,为后续的软件设计与开发提供清晰的指导方向。它不仅是软件设计的基础,也是进行测试的主要依据,同时还作为用户了解软件功能需求的...
在学生成绩管理系统中,C++作为底层开发语言,可以实现系统的核心逻辑和数据处理,如数据库操作、成绩计算、排序算法等。C++的类和对象机制使得代码结构清晰,易于维护,同时其标准模板库(STL)提供了丰富的数据...
【Java学生管理系统——菜鸟】 Java学生管理系统是一款针对初学者设计的项目,旨在帮助他们理解和实践Java编程语言以及数据库管理的基本概念。这个系统主要是用来管理学生的信息,如姓名、学号、年龄、专业等,同时...
总的来说,"基于Qt的学生成绩管理系统"是一个综合性的项目,涵盖了软件开发的多个方面,包括前端界面设计、后端数据库操作、数据模型与视图的绑定以及系统集成。通过研究这个项目,不仅可以学习Qt框架的使用,还能...
学生成绩管理系统是一种基于信息化技术,旨在帮助学校和教师更高效地管理学生的学习成绩和相关信息的软件应用。这种系统通常采用MVC(Model-View-Controller)架构设计,结合Java Web技术如JSP(JavaServer Pages)...
【标题】:基于Qt开发的简易学生成绩管理系统 该系统是计算机专业毕业生的一个常见设计项目,主要目标是实现一个用户界面友好、功能完善的学生成绩管理应用。Qt是一个跨平台的应用程序开发框架,由Qt Company提供,...
【基于Python+Django的管理信息系统——学生成绩管理系统】 Python和Django是现代Web开发中的强大组合,尤其适用于快速构建高效、可扩展的管理信息系统。在这个基于Python和Django的学生成绩管理系统中,我们可以...
总的来说,这个基于Vue + SpringBoot的学生成绩管理系统展示了现代Web应用开发的技术栈,涵盖了从前端到后端的完整流程,对于学习和理解全栈开发具有很高的参考价值。通过这个项目,开发者可以深入掌握前端Vue.js...
Java编写的学生成绩管理系统是一种基于计算机技术的教育管理工具,它主要用于收集、存储、管理和分析学生的学术成绩。这样的系统可以极大地提高教育机构的工作效率,减少人为错误,并为教师、学生和家长提供方便的...
【描述】提到“大二菜鸟做的很普通的学生管理系统”,这暗示了该系统可能由一名大二学生初学者创建,可能功能相对基础,但已经能够展示C#的基本应用和数据库管理的概念。初学者在设计这样的系统时,通常会学习如何...
本项目是一个基于C语言编程和Qt图形用户界面(GUI)框架开发的学生成绩管理系统,旨在帮助教育机构或教师高效管理学生的学习成绩。华中科技大学的学生在2016年寒假期间进行了这一课程设计,旨在提升学生的编程技能和...
课程设计:课程设计通常在课程学习过程中进行,目的是让学生在实践中理解和巩固课堂所学,学生成绩管理系统正好可以锻炼学生的编程实践能力。 【文件名称列表】Graduation Design "Graduation Design"很可能是项目...
《菜鸟入门:学生考试管理系统开发详解》 在编程领域,尤其是对于初学者而言,实践是掌握知识的关键。"学生考试管理系统"就是一个非常适合新手上手的项目,它将理论与实践相结合,帮助我们深入理解VC++编程的基础...
【基于广义表的学生成绩管理系统,GUI由Qt实现】是一个典型的计算机科学与技术专业毕业设计项目,它结合了数据库管理和图形用户界面(GUI)的设计。该项目利用广义表作为数据结构存储学生成绩,并采用Qt框架来构建...
QT&C++ 学生成绩管理系统是一款专为计算机类学生设计的毕业设计项目,它提供了一个无需额外环境配置的完整安装包,便于快速理解和学习。这个系统利用了C++编程语言的强大功能,结合了QT框架,使得用户界面友好,操作...