java课程设计.docx
《java课程设计.docx》由会员分享,可在线阅读,更多相关《java课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
![java课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/28/4d19f2ed-bb12-4660-ac1a-55a999aca375/4d19f2ed-bb12-4660-ac1a-55a999aca3751.gif)
java课程设计
四川工商职业技术学院
Java
应用程序课程设计
班级:
软件10310班
姓名:
毛天星(组长)
刘洋
邓霞
指导老师:
黄铭
成绩:
2011年6月27日
需求分析…………………………………………3
功能模块…………………………………………6
详细设计…………………………………………6
应用程序界面……………………………………7
参考文献…………………………………………8
最后总结…………………………………………9
代码清单…………………………………………10
学生成绩管理系统
一、需求分析
现在的学校需要一个很好的学生成绩管理系统,以方便对学生的成绩进行有效的管理,系统有老师对学生信息的查询功能、添加功能、修改功能、删除功能,也可以让学生对自己成绩查询的功能。
1.功能需求分析。
2.性能需求分析。
3.数据库需求分析――数据流图。
1.1功能需求分析
该学生成绩管理系统具备三方面的功能:
一方面是学生用户,学生通过输入学号和密码进下该系统后,可以进行一些基础查询(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新登陆系统;一方面老师进入该系统则比学生多一些权限:
成绩输入、成绩查询。
具体功能的详细描述如下
1.1.1选择[学生基本维护]菜单命令,即可进入[学生基本维护]功能窗体,在其中输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输入新信息后单击[添加]就可以了。
需要删除一条信息,则只要选择这条信息再点击[删除]。
在搜索条件中输入相关的条件,单击[查询]就可查找信息。
1.1.2选择[学生信息查询]菜单命令,即可进入[学生信息查询]功能窗体,在其中的下拉列表中选择你要看的信息,则在下面的表格中显示你要的信息。
1.1.3选择[成绩管理][添加成绩]菜单命令,即可进入[添加成绩]功能窗体,此功能权限只有管理员和教师。
1.1.4选择[成绩管理][输入成绩]菜单命令,即可进入[输入成绩]功能窗体,
此功能权限只有管理员和教师。
1.1.5选择[成绩管理][修改成绩]界面,此功能规管理员所有。
1.1.6选择[成绩管理][查询成绩]界面此界面对学生也是可见的,它的权限规所有用户所有。
1.1.7选择[登陆][重新登陆]则会返回登陆界面,为用户提供方便。
1.1.8选择[退出]将退出整个系统。
1.2性能需求分析
时间特性要求:
在软件方面,响应时间有点慢,因为是用Eclipse做的,它占用内存比较大,更新处理时间比较快而且迅速。
安全性:
设立口令号和密码验证方式,防止非法用户登录进行操作。
也就是用户只有管理员、学生和教师才能进入这个系统,用户凭口令号和密码进入此系统,系统会自动判断用户是那种类型,分别拥有不同的权限。
1.3数据库需求分析——数据流图
1.3.1数据结构
在系统中功能模块主要牵涉到的信息包括:
是学生信息(Student)、课程信息(Course)、成绩表(SC).
学生信息:
包含学号(STNO)、姓名(SNAME)、年龄(SAGE)、性别(SSEX)、系别(SDEPT)
课程信息:
包括课程编号(Cno)、课程名称(Cname)、先行课(Cpno)
成绩表;学号(STNO)、课程号(Cno)、成绩(Grade)
1.3.2数据流:
1)数据流名:
口令号
说明:
根据这个口令号定位到用户管理数据库,以便进行身份验证。
数据流来源:
登陆界面输入的口令号和密码。
数据流去向:
其中用户口令信息将存在于整个操作过程中,防止非法登陆。
数据流组成:
口令号(文本);密码(文本)
2)数据流名:
寻找信息
说明:
根据用户在学生信息维护的时候所填写的信息。
数据流来源:
学生信息维护界面学生输入包含学号、班级编号、名称等。
数据流去向:
学号将存在整个操作,其它的存入数据库。
数据流组成:
学号(文本);姓名(文本)等
1.3数据库需求分析――数据流图
1.3.1数据结构
在系统中功能模块主要牵涉到的信息包括:
是学生信息(Student)、课程信息(Course)、成绩表(SC).
学生信息:
包含学号(STNO)、姓名(SNAME)、年龄(SAGE)、性别(SSEX)、系别(SDEPT)
课程信息:
包括课程编号(Cno)、课程名称(Cname)、先行课(Cpno)
成绩表;学号(STNO)、课程号(Cno)、成绩(Grade)
1.3.2数据流:
1)数据流名:
口令号
说明:
根据这个口令号定位到用户管理数据库,以便进行身份验证。
数据流来源:
登陆界面输入的口令号和密码。
数据流去向:
其中用户口令信息将存在于整个操作过程中,防止非法登陆。
数据流组成:
口令号(文本);密码(文本)
3)数据流名:
寻找信息
说明:
根据用户在学生信息维护的时候所填写的信息。
数据流来源:
学生信息维护界面学生输入包含学号、班级编号、名称等。
数据流去向:
学号将存在整个操作,其它的存入数据库。
数据流组成:
学号(文本);姓名(文本)等
二、功能模块
1.学生查询功能:
为了方便学生查找成绩等信息,将所有信息按照需要进行分类。
这样学生就能很方便的找到自己所需要的信息。
2.老师查询功能:
老师可以通过条件选择查询所有信息,并进行排序。
3.添加功能:
老师可以通过填写表格的形式输入学生成绩等相关信息。
系统可以自动避免重复信息。
4.修改功能:
老师可以对数据库中的信息进行修改。
系统能够通过老师给出的条件查找出所要修改的信息,对修改后的信息进行保存,并自动查找是否是重复信息。
5.删除功能:
老师可以对数据进行删除操作。
系统能够通过老师给出的条件查找出要删除的信息,并提示是否确定删除,如果确定删除,则把相关信息从数据库中删除。
三、详细设计
1.用户登陆模块(代码实现)。
2.管理员界面(代码实现)。
3.学生用户界面(代码实现)。
4.添加模块(代码实现)。
5.删除模块(代码实现)。
6.修改模块(代码实现)。
7.添加模块(代码实现)。
8.查询模块(代码实现)。
四、应用程序界面
4.1用户登录界面
4.2学生用户界面
五、参考文献
5.1利用数据流图。
5.2利用SQL-Server。
5.3张友生.软件体系结构原理、方法与实践.清华大学出版社。
六、最后总结
邓霞:
这次综训,我重新学习了不少平时上课没听的知识点,对java这门学科也增加了不少兴趣。
对java程序的基本知识也了解比以前多了,最主要的是以前连java程序的基本步骤都不知道,现在
我清楚的知道了,首先要用编辑工具编写好程序,其次是编译程序,然后是执行程序,最后是程序
说明。
刚开始接触java时看到代码很茫然,感觉就一个字“晕”,现在至少我学会了看代码,知道
代码写的是什么意思了。
在综训完成作业的过程中,自己对代码的书写也比以前明了化了,虽然很多代码不去看书还是不
会写,但是一些常用的、简单代码还是可以自己完成了,大小写的书写、英语的拼写也不会出现太多
的错误。
自己也可以完成一些简单的,基本的程序了,信心也得到了提升。
通过这次综训,也培养了我的合作精神,和处理问题时应有的思维,不会再像以前那样,一碰
问题就问了,学会了首先自查,学会找出问题,再去思考解决问题的方法,实在没法完成的再向同
学或者老师请教。
让我的思维能力得到提高,提升了一些应变能力,这对于我以后的学习很重要。
所以这次综训对于我个人来说非常的有意义,也非常的重要。
它巩固了很多平时我上课没听或
者没懂得的知识点。
也有了一个集中的时间来完成一个任务,锻炼了我的学习能了,增强了自己的
学习信心和面对问题时该有的思维方式。
刘洋:
本次综训让我学会了很多也熟悉了java的基本操作和编译工具。
该学生成绩管理系统总体说来功能比较齐全,学生和教师的一些基本的功能都已经具备;数据库的设计方面,建有学生表、课程表、、成绩表、、登陆表,数据库中存在一些问题,如数据冗余,不够完善。
但在做课程设计的过中也遇到很多问题,一开始时其中最大的问题是不知道用哪种编译工具,前一两天还不知道怎莫做也找不到头绪,在同学的帮助下和在网上查找资料才慢慢了解到。
也在连接数据库花了一些时间,。
编写程序起来也有点困难,但是也越来越顺利了。
经过调试后终于把自已想到实现的功能一步步实现了,通过这次课程设计使我收获了好多,熟悉了Eclipse和JAVA的运用,还复习了数据库相关语句的编写。
最后在这次的综训中我体会到团队合作的重要性。
毛天星:
本次综训让我最感触最深的事就是对代码不熟悉,在编译代码的时候经常出错,在老使自己的代码没有错误。
不知道怎莫与数据库连接,在网上查找还是不能全懂,但了解到数据库中存在一些问题,如数据冗余,不够完善。
所以这次宗训没有完成好只是编译了几个窗口。
但自己觉得还是有很大的收获和进步。
总之在这次综训中我学会了很多知识,不关是java的知识还是数据库的知识都多多少少掌握了一些。
至少这次能培养一下自己的能力。
也体会到团队合作的重要性。
七、代码清单
1.importjava.applet.Applet;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.sql.*;
publicclassglextendsAppletimplementsActionListener{
LabelusernameLabel;
LabelpasswordLabel;
TextFieldusernameField;
TextFieldpasswordField;
Buttonsure;
Buttoncancel;
publicvoidinit(){
setLayout(newBorderLayout());
usernameLabel=newLabel("用户名");
passwordLabel=newLabel("密码");
usernameField=newTextField();
passwordField=newTextField();
passwordField.setEchoChar('*');
sure=newButton("登录");
cancel=newButton("取消");
add(usernameLabel);
add(usernameField);
add(passwordLabel);
add(passwordField);
add(sure);
add(cancel);
setSize(200,100);
sure.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==sure){
Strings=usernameField.getText().trim();
Stringz=passwordField.getText().trim();
if(s.equals("hm"))
{
if(z.equals("1"))
JOptionPane.showMessageDialog(null,"你是合法用户!
");
else
JOptionPane.showMessageDialog(null,"你的用户名或密码出错,请重新输入!
");
}
else
JOptionPane.showMessageDialog(null,"你的用户名或密码出错,请重新输入!
");
}
}
}
2.
importjava.awt.Container;
importjavax.swing.table.JTableHeader;
importjava.awt.FlowLayout;
importjava.util.Vector;
importjavax.swing.JFrame;
importjavax.swing.JTable;
publicclassJTableTest{
publicvoidcreateTable(){
JFramemainFrame=newJFrame();
mainFrame.setLayout(newFlowLayout());
VectorcolumnNames=newVector();
columnNames.add("姓名");
columnNames.add("学号");
columnNames.add("语文");
columnNames.add("数学");
columnNames.add("英语");
columnNames.add("物理");
columnNames.add("化学");
columnNames.add("历史");
columnNames.add("地理");
VectortableInfo=newVector();
Vectorrow1=newVector();
Vectorrow2=newVector();
Vectorrow3=newVector();
row1.add("张三");
row1.add("8");
row1.add("98");
row1.add("96");
row1.add("45");
row1.add("65");
row1.add("99");
row1.add("76");
row1.add("87");
row2.add("李四");
row2.add("23");
row2.add("77");
row2.add("68");
row2.add("89");
row2.add("65");
row2.add("98");
row2.add("85");
row2.add("96");
row3.add("钟磊");
row3.add("45");
row3.add("67");
row3.add("86");
row3.add("78");
row3.add("96");
row3.add("75");
row3.add("75");
row3.add("86");
tableInfo.add(row1);
tableInfo.add(row2);
tableInfo.add(row3);
JTabletable=newJTable(tableInfo,columnNames);
JTableHeaderjtableH=table.getTableHeader();
mainFrame.getContentPane().add(jtableH);
mainFrame.getContentPane().add(table);
mainFrame.setSize(300,300);
mainFrame.setVisible(true);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
privateJTableHeadergetTabelHeader(){
returnnull;
}
publicstaticvoidmain(String[]args){
JTableTestjtt=newJTableTest();
jtt.createTable();
}
}