java课程设计大作业-学生成绩管理系统

一、功能描述

本实验用Java实现了一个小型的学生信息管理系统。实验使用的Java GUI库为 SWT ,采用集成开发工具Eclipse,后台数据库为Access 2003.

本学生信息管理系统实现了系统登陆,学生信息浏览、学生信息添加、删除和查询等功能。系统有个模块:系统登陆模块、主界面模块、学生信息管理模块、数据库操作模块。

二、类描述

类 名属 性方 法备 注
LoginSysfinal Display display;public LoginSys()……系统登陆类
final Shell shellLogin;public static void main(String [] args)
final Composite composite; 
final Group group; 
final Label label1; 
final Label label2; 
final Text txtUsername; 
final Text txtPass; 
final Button btnLogin; 
类 名属 性方 法备 注
frmMainprivate Text txtSearch;public frmMain()系统主界面类,StuBean是学生信息数据处理类
public static Table table;public static void main(String [] args)
StuBean stubean 
类 名属 性方 法备 注
AddStuInfoprivate Text txtDept;public AddStuInfo()添加学生信息
private Text txtClass;public static void main(String [] args)
private Text txtEmail; 
private static Text txtAge; 
private static Text txtName; 
private static Text txtsNo; 
类 名属 性方 法备 注
STCalendarprivate Date nowDate;public STCalendar(Shell parent)日历控件
private String selectedDate;private int getLastDayOfMonth(int year, int month)
private GridData gridData;public boolean isLeapYear(int year)
private CLabel Sunday;private void moveTo(int type, int value)
private CLabel monday;private void setDayForDisplay(Calendar now)
private CLabel tuesday;public void previousYear()
private CLabel wednesday;public void nextYear()
private CLabel thursday;public void nextMonth()
private CLabel friday;public void previousMonth()
private CLabel Saturday;public void mouseDoubleClick(MouseEvent e)
private Button yearUp;public Object open()
private Button yearNext; 
private Button monthUp; 
private Button monthNext; 
private CLabel[] days; 
类 名属 性方 法备 注
Databaseprivate Statement stmt;public void OpenConn()数据库处理类,包括连接,执行SQL语句,返回记录集和关闭操作
ResultSet rs;public ResultSet executeQuery(String sql)
String sql;public void executeUpdate(String sql)
String strurl;public void closeStmt()
private static Text txtName;public void closeConn()
类 名属 性方 法备 注
StuBeanString sql;public void stuAdd(String Stunum, String Stuname, String Stuclass, String Stusex, String Stuage, String Studept, String Stuemail)学生增删改查数据处理类
ResultSet rs;public void stuDel(String num)
String sNum;public String[] stuSearch(String num)
String sName;public String[][] stuAllSearch(String colname,String colvalue)
String sSex; 
String sClass;
String sBirth;
String sDept;
String sEmail;
类 名属 性方 法备 注
UserBeanString sUserName;public boolean HeFaUser(String UserName,String UserPass)用户登陆操作类
String sUserPass; 
String sql; 
ResultSet rs; 
类 名属 性方 法备 注
CommonOperate public void RefreshTable(Table tTable)表格刷新类

附:源程序代码框架

三、界面设计与事件处理

  1. 登陆界面


界面设计:
登陆界面是 Shell 、Composite、Group三个容器的嵌套:界面上的“用户名”和“密码”标签,两个 Text 文本框,两个按钮放在Group容器中,Group容器又嵌套在Composite容器中,具体实现如下:
composite = new Composite(shellLogin, SWT.BORDER);
group = new Group(composite, SWT.NONE);
label1 = new Label(group, SWT.NONE);
txtUsername = new Text(group, SWT.BORDER);
btnLogin = new Button(group, SWT.NONE);
事件处理:
登陆按钮的事件处理为匿名内部类处理:
btnLogin.addSelectionListener (new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
//判断登陆用户是否合法
}
});
取消按钮的事件处理也为匿名内部类处理:
btnCancel.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
display.close();
}
});

  1. 系统主界面


界面设计:
主界面上使用了菜单栏Menu,工具栏 ToolBar,表格 Table,分割窗 SashForm,扩展栏 ExpandBar 。
主界面容器是 Shell,Shell里有 菜单栏Menu,工具栏 ToolBar 和分割窗 SashForm:
Menu menu = new Menu(shellMain, SWT.BAR);
final ToolBar toolBar = new ToolBar(shellMain, SWT.FLAT | SWT.WRAP);
final SashForm sashForm1 = new SashForm(shellMain, SWT.HORIZONTAL);
其中表格 Table和扩展栏 ExpandBar又嵌套在SashForm中:
table = new Table(sashForm1, SWT.FULL_SELECTION | SWT.BORDER);
final ExpandBar expandbar = new ExpandBar(sashForm1, SWT.V_SCROLL);
而ExpandBar里面又嵌套了一个Composite容器,用来装载查询信息:
Composite comp1 = new Composite(expandbar,SWT.NONE);
final Label lbl = new Label(comp1,SWT.NONE);
txtSearch = new Text(comp1, SWT.BORDER);
final Button btnSearch = new Button(comp1, SWT.NONE);
事件处理:
表格 Table中的数据是通过调用 CommonOperate 类的 RefreshTable方法实现的。
单击菜单栏中“添加学生信息”按钮的事件处理如下:
item21.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
new AddStuInfo();
}
});

  1. 学生信息添加界面


界面设计:
窗体上的所有控件都放在Shell容器中:
final Label label1 = new Label(shellAddStuInfo, SWT.NONE);
txtsNo = new Text(shellAddStuInfo, SWT.BORDER);
final Button btnAge = new Button(shellAddStuInfo, SWT.NONE);
final Button btnAdd = new Button(shellAddStuInfo, SWT.NONE);
final Button btnCancel = new Button(shellAddStuInfo, SWT.NONE);
事件处理
单击选择出生日期按钮的事件为:
btnAge.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
STCalendar stc = new STCalendar(shellAddStuInfo);
txtAge.setText((String) stc.open());
}
});
添加和取消按钮的事件处理采用匿名内部类处理:
btnCancel.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {

shellAddStuInfo.close();
}
});

  1. 日历控件


界面设计:
日历控件中主容器是Shell,日期数据放在 GridData 中。
事件处理:
双击某一天即可选择所需的日期,事件处理如下:
public void mouseDoubleClick(MouseEvent e) {//}
选择年、月的方向键是通过按钮的匿名内部类实现的:
例如:yearUp.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
previousYear();
}
})

  1. 学生信息查询


查询按钮的事件处理如下:
btnSearch.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
//查询处理}
});

  1. 学生信息删除

删除表格中的一行数据是采用右键鼠标的方式,处理如下:

Menu menu2 = new Menu(shellMain,SWT.POP_UP);

table.setMenu(menu2);

MenuItem item = new MenuItem(menu2,SWT.PUSH);

item.setText("删除行");

item.addListener(SWT.Selectionnew Listener(){

public void handleEvent(Event event){

//删除处理

}});

用来完成大作业的。文档内容: 1 Java技术体系 1.1 Java语言 1.2 Java平台 1.3 Java应用领域 2 Java语言的技术特点 2.1 1 2.2 2 2.3 3 3 Java语言与C++的异同分析总结。 4 选用C和java语言时编程算法程序有什么不同,有什么优势和劣势。 5 自己编程学习的级别和状态。以及自己以后的编程学习的计划和想法。 6 下面3道题目中选一道,给出算法分析和程序。 1)“黄金分割数”在我们的生活中很常见,但是在不同的应用领域,要求的精度也不一样。 例如:三位小数是0.618 现在我们需要你能求出保留100位小数的黄金分割数,采用的算法为“分层计算法”: 黄金数= 1 --------------- 1+ 1 ------------- 1+ 1 ----------- 1+ 1 --------- ..... 注意,计算出的结果,如果第100位为0也需要保留。 2)已知一个数列: 5,2,4,3,7,6 那么,在这个数列中存在这样一些“连续数”,例如:5,2,4,3这个子数列排序后是连续的。同样2,4,3也是连续的,为了方便表示 我们使用下标来标识,这样,这个数列中存在以下“连续数”: [1,1] [1,4] [1,6] [2,2] [2,4] [3,3] [3,4] [4,4] [5,5] [5,6] [6,6] 这样,他就存在11个“连续数”。现在需要你在用户找出一个数组中所有的“连续数”。 要求: 1、用户输入一个整数N,表示下面数组的个数 2、用户每输入一行作为一个数组 如: 用户输入: 1 5,2,4,3,7,6 程序输出: 11 3)有一种数我们称之为幸运数,它的特点是这样的,首先,由自然数按顺序排列: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 … 这样,1比较特殊, 1为第一个幸运数,那么,我们移除掉序号能被2整除的数(注意:是序号,而不是数本身,每次移除后都重新排序)就剩下: 1 3 5 7 9 11 13 15 17 19… 3为第二个幸运数,那么我们需要去掉序号能被3(下一次是除4,然后是5,每次加1)整除的数,5 11 17...剩下: 1 3 7 9 13 15 19… 那么7为第三个幸运数,后面的幸运数,依此类推,移除之后剩下的数字都是幸运数。 现在我们需要你求出给定的m和n之间的幸运数的个数: 例如:给定1 20,那么个数为:5(5个幸运数分别是1,3,7,13,19) 现在要求用户输入两个数m和n(m<n<=1000*1000),输出幸运数的个数。 例如: 用户输入: 1 20 程序输出: 5 格式:小四,1.5倍行距
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值