当前位置:文档之家› java蜘蛛纸牌学年论文

java蜘蛛纸牌学年论文

java蜘蛛纸牌学年论文
java蜘蛛纸牌学年论文

import javax.swing.JMenuBar;

import javax.swing.JMenu;

import javax.swing.JMenuItem;

import javax.swing.JRadioButtonMenuItem;

import javax.swing.ButtonGroup;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

class SpiderMenuBar extends JMenuBar

{

Spider main=null;//生成Spider框架对象

JMenu jNewGame=new JMenu("游戏");//生成菜单组

JMenu jHelp=new JMenu("帮助");

JMenuItem jItemAbout=new JMenuItem("关于");//生成菜单项

JMenuItem jItemOpen=new JMenuItem("开局");

JMenuItem jItemPlayAgain=new JMenuItem("重新发牌");

JRadioButtonMenuItem jRMItemEasy=new JRadioButtonMenuItem("简单:单一花色");//生成单选按钮

JRadioButtonMenuItem jRMItemNormal=new JRadioButtonMenuItem("中级:双花色");

JRadioButtonMenuItem jRMItemHard=new JRadioButtonMenuItem("高级:四花色");

JMenuItem jItemEixt=new JMenuItem("退出");

JMenuItem jItemValid=new JMenuItem("显示可行操作");

/**

**构造函数,生成JMenuBar的图形界面

*/

public SpiderMenuBar(Spider spider)

{

this.main=spider;

/**

**初始化“游戏”菜单

*/

jNewGame.add(jItemOpen);

jNewGame.add(jItemPlayAgain);

jNewGame.add(jItemValid);

jNewGame.addSeparator();

jNewGame.add(jRMItemEasy);

jNewGame.add(jRMItemNormal);

jNewGame.add(jRMItemHard);

jNewGame.addSeparator();

jNewGame.add(jItemExit);

ButtonGroup group=new ButtonGroup();

group.add(jRMItemEasy);

group.add(jRMItemNormal);

group.add(jRMItemHard);

jHelp.add(jItemAbout);

this.add(jNewGame);

this.add(jHelp);

//为组建添加事件监听并实现

//“开局”

jItemOpen.addActionListener(new java.awt.event.ActionListener(){ public void actionPerformed(java.awt.event.ActionEvent e){ main.newGame();

}

});

//“重新发牌”

jItemPlayAgain.addActionListener(new

java.awt.event.ActionListener(){

public void actionPerformed(java.awt.event.ActionEvent e){

if(main.getC()<60){

main.deal();

}

}

});

//"显示可行操作"

jItemValid.addActionListener(new java.awt.event.ActionListener(){ public void actionPerformed(java.awt.event.ActionEvent e){

new Show().start();

}

});

//"退出"

jItemExit.addActionListener(new java.awt.event.ActionListener(){ public void actionPerformed(java.awt.event.ActionEvent e){

main.dispose();

System.exit(0);

}

});

//"简单级别"默认已选

jRMItemEasy.setSelected(true);

//"简单级别"

jRMItemEasy.addActionListener(new

java.awt.event.ActionListener(){

public void actionPerformed(java.awt.event.ActionEvent e){ main.setGrade(Spider.EASY);

main.initCards();

main.newGame();

}

});

//"中级"

jRMItemNormal.addActionListener(new

java.awt.event.ActionListener(){

public void actionPerformed(java.awt.event.ActionEvent e){

main.setGrade(Spider.MATURAL);

main.initCards();

main.newGame();

}

});

//"高级"

jRMItemHard.addActionListener(new

java.awt.event.ActionListener(){

public void actionPerformed(java.awt.event.ActionEvent e){

main.setGrade(Spider.HARD);

main.initCards();

main.newGame();

}

});

jNewGame.addMenuListener(new javax.swing.event.MenuListener(){ public void menuSelected(javax.swing.event.MenuEvent e){

if(main.getC()<60){

jItemPlayAgain.setEnabled(true);

}

else{

jItemPlayAgain.setEnabled(false);

}

}

public void menuDeselected(javax.swing.event.MenuEvent e){} public void menuCanceled(javax.swing.event.MenuEvent e){} });

//"关于"

jItemAbout.addActionListener(new java.awt.event.ActionListener(){ public void actionPerformed(java.awt.event.ActionEvent e){

new AboutDialog();

}

});

}

/**

**线程:显示可以执行的操作

*/

class Show extends Thread

{

public void run(){

main.showEnableOperator();

}

}

}

//第二段

class PKCard extends JLabel implements MouseListener,MouseMotionListener {//纸牌的位置

Point point=null;

Point initPoint=null;

int value=0;

int type=0;

String name=null;

Container pane=null;

Spider main=null;

boolean canMove=false;

boolean isFront=false;

PKCard previousCard=null;

public void mouseClicked(MouseEvent arg0){}

public void flashCard(PKCard card){

//启动flash线程

new Flash(card).start();

//不停的获得下一张牌,直到完成

if(main.getNextCard(card)!=null){

card.flashCard(main.getNextCard(card));

}

}

class Flash extends Thread

{

private PKCard card=null;

public Flash(PKCard card){

this.card=card;

}

/*

**线程的run()方法

**位纸牌的正面设置白色图片

*/

public void run(){

boolean is=false;

ImageIcon icon=new ImageIcon("images/white.gif");

for(int i=0;i<4;i++){

try{

Thread.sleep(200);

}

catch(InterruptedException e){

e.printStackTrace();

}

if(is){

this.card.turnFront();

is=!is;

}

else{

this.card.setIcon(icon);

is=!is;

}

//根据当前外观将card的UI属性重置

card.updateUI();

}

}

}

/**

**点击鼠标

*/

public void mousePressed(MouseEvent mp){

point=mp.getPoint();

main.setNA();

this.previousCard=main.getPreviousCard(this);

}

/**

**释放鼠标

*/

public void mouseRelesed(MouseEvent mr){

Point point=((JLabel)mr.getSource()).getLocation();

//判断可行列

int n=this.whichColumnAvailable(point);

if (n==-1||n==this.whichColumnAvailable(this.initPoint)) {

this.setNextCardLocation(null);

main.table.remove(this.getLocation());

this.setLocation(this.initPoint);

main.table.put(this.initPoint,this);

return;

}

point=main.getLastCardLocation(n);

boolean isEmpty=false;

PKCard card=null;

point=main.getGroundLabelLocation(n);

isEmpty=true;

}

else{

card=(PKCard)main.table.get(point);

}

if(isEmpty||(this.value+1==card.getCardValue())){ point.y+=40;

if(isEmpty)point.y-=20;

this.setNextCardLocation(point);

main.table.remove(this.getLocation());

point.y-=20;

this.setLocation(point);

main.table.put(point,this);

this.initPoint=point;

if(this.previousCard!=null){

this.previousCard.turnFront();

this.previousCard.setCanMove(true);

}

this.setCanMove(true);

}

else{

this.setNextCardLocation(null);

main.table.remove(this.getLocation());

this.setLocation(this.initPoint);

main.table.put(this.initPoint,this);

return;

}

point=main.getLastCardLocation(n);

card=(PKCard) main.table.get(point);

if(card.getCardValue()==1){

point.y-=240;

card=(PKCard) main.table.get(point);

if(card!=null&&card.isCardCanMove()){

main.haveFinish(n);

}

}

}

/*

**方法:放置纸牌

*/

public void setNextCardLocation(Point point){ PKCard card=main.getNextCard(this);

if(point==null){

card.setNextCardLocation(null);

main.table.remove(card.getLocation());

card.setLocation(card.initPoint);

main.table.put(card.initPoint,card);

}

else{

point=new point(point);

point.y+=20;

card.setNextCardLocation(point);

point.y-=20;

main.table.remove(card.getLocation());

card.setLocation(point);

main.table.put(card.getLocation(),card);

card.initPoint=card.getLocation();

}

}

}

/**

**返回值:int

**方法:判断可用列

*/

public int whichCoumnAvailable(Point point){ int x=point.x;

int y=point.y;

int a=(x-20)/101;

int b=(x-20)%101;

if(a!=9){

if(b>30&&b<=71){

a=-1;

}

else if(b>71){

a++;

}

}

else if(b>71){

a=-1;

}

if(a!=-1){

Point p=main.getLastCardLocation(a);

if(p==null)p=main.getGroundLabelLocation(a);

b=y-p.y;

if(b<=-96||b>=96){

a=-1;

}

}

return a;

}

public void mouseEntered(MouseEvent arg0){}

public void mouseExited(MouseEvent arg0){}

/**

**用鼠标拖动纸牌

*/

public void mouseDragged(MouseEvent arg0){ if(canMove){

int x=0;

int y=0;

Point p=arg0.getPoint();

x=p.x-point.x;

y=p.y-point.y;

this.moving(x,y);

}

}

/**

**返回值:void

**方法:移动(x,y)个位置

*/

public void moving(int x,int y){

PKCard card=main.getNextCard(this);

Point p=this.getLocation();

//将组件移动到容器中指定的顺序索引

pane.setComponentZOrder(this,1);

//在Hashtable中保存新的节点信息

main.table.remove(p);

p.x+=x;

p.y+=y;

this.setLocation(p);

main.table.put(p,this);

if(card!=null)card.moving(x,y);

}

public void mouseMoved(MouseEvent arg0){}

/**

**构造函数

*/

public PKCard(String name,Spider spider){

super();

this.type=new Integer(name.substring(0,1)).intValue();

this.value=new Integer(name.substring(2)).intValue();

https://www.doczj.com/doc/9318287909.html,=name;

this.main=spider;

this.pane=this.main.getContentPane();

this.addMouseListener(this);

this.addMouseMotionListener(this);

this.setIcon(new ImageIcon("images/rear.gif"));

this.setSize(71,96);

this.setVisible(true);

}

/**

**返回值:void

**方法:令纸牌显示正面

*/

public void turnFront(){

this.setIcon(new ImageIcon("images/"+name+".gif")); this.isFront=true;

}

/**

**返回值:void

**方法:令纸牌显示背面

*/

public void turnRear(){

this.setIcon(new ImageIcon("images/rear.gif")); this.isFront=false;

this.canMove=false;

}

/**

**返回值:void

**方法:将纸牌移动到点point

*/

public void moveto(Point point){

this.setLocation(point);

this.initPoint=point;

}

/**

**返回值:void

**方法:判断纸牌是否能移动

*/

public void setCanMove(boolean can){

this.canMove=can;

PKCard card=main.getPreviusCard(this);

if(card!=null&&card.isCardFrot()){

if(!can){

if(!card.isCardCanMove()){

return;

}

else{

card.setCanMove(can);

}

}

else{

if(this.value+1==card.getCardV alue()&&this.type==card.getCardType()){ card.setCanMove(can);

}

else{

card.setCanMove(false);

}

}

}

}

/**

**返回值:boolean

**方法:判断card是否是正面

*/

public boolean isCardFront(){

return this.isFront;

}

/**

**返回值:boolean

**方法:返回是否能够移动

*/

public boolean isCardCanMove(){

return this.canMove;

}

/**

**返回值:int

**方法:获得card的内容值

*/

public int getCanValue(){

return value;

}

/**

**返回值:int

**方法:获得card的类型

*/

public int getCanType(){

return type;

}

}

//第三段

/*

**"关于"窗口

*/

class AboutDialog extends JDialog

{

JPanel jMainPane=new JTabledPane();

private JPanel jPanel1=new JPanel();

private JPanel jPanel2=new JPanel();

private JTextArea jt1=new JTextArea("将电脑多次分发给你的牌按照相同的花色由大至小排列起来。直到桌面上的牌全都消失。");

private JTextArea jt2=new JTextArea("该游戏中,纸牌的图片来自于Windows XP的纸牌游戏,图片权属于原作者所有!");

/*

**构造函数

*/

public AboutDialog ()

{

setTitle("蜘蛛牌");

setSize(300,200);

setResizable(false);

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

Container c=this.getContentPane();

jt1.setSize(260,200);

jt2.setSize(260,200);

jt1.setEditable(false);

jt2.setEditable(false);

jt1.setLineWrap(true);

jt2.setLineWrap(true);

jt1.setFont(new Font("楷体—GB2312",java.awt.Font.BOLD,13));

jt1.setForeground(Color.blue);

jt2.setFont(new Font("楷体—GB2312",java.awt.Font.BOLD,13));

jt2.setForeground(Color.black);

jPanel1.add(jt1);

jPanel2.add(jt2);

jTabbedPane.setSize(300,200);

jTabbedPane.addTab("游戏规则",null,jPanel1,null);

jTabbedPane.addTab("声明",null,jPanel2,null);

jMainPane.add(jTabbedPane);

c.add(jMainPane);

pack();

this.setVisible(true);

}

}

//第四段

public class Spider extends JFrame

{

//整型变量,表示难度等级为:简单

public static final int EASY=1;

//整型变量,表示难度等级为:普通

public static final int NATURAL=2;

//整型变量,表示难度等级为:难

public static final int HARD=3;

//设置初始难度等级为简单

private int grade=Spider.EASY;

private Container pane=null;

//生成纸牌数组

private PKCard cards[]=new PKCard[104];

private JLabel clickLabel=null;

private int c=0;

private int n=0;

private int a=0;

private int finish=0;

Hashtable table=null;

private JLabel groundLabel[]=null;

public static void main(String[] args){

Spider spider=new Spider();

spider.setVisible(true);

}

/**

**构造函数

*/

public Spider ()

{

setTitle("蜘蛛牌");

setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);

//设置框架大小

setSize(1024,742);

//生成SpiderMenuBar对象,并放置在框架上

setJMenuBar(new SpiderMenuBar(this));

pane=this.getContentPane();

//设置背景颜色

pane.setBackground(new Color(0,112,26));

//将布局管理器设置成null

pane.setLayout(null);

clickLabel=new JLabel();

clickLabel.setBounds(883,606,121,96);

pane.add(clickLabel);

clickLabel.addMouseListener(new MouseAdapter(){

public void mouseReleased(MouseEvent me){

if(c<60){

Spider.this.deal();

}

}

}

);

this.initCards();

this.randomCards();

this.setCardsLocation();

groundLabel=new JLabel[10];

int x=20;

for(int i=0;i<10;i++)

{

groundLabel[i]=new JLabel();

groundLabel[i].setBorder(javax.swing.BorderFactory.createEtchedBorder( javax.swing.border.EtchedBorder.RAISED));

groundLabel[i].setBounds(x,25,72,96);

x+=101;

this.pane.add( groundLabel[i]);

}

this.setVisible(true);

this.deal();

this.addKeyListener(new KeyAdapter(){

class Show extends Thread

{

public void run(){

Spider.this.showEnableOperator();

}

}

public void keyPressed(KeyEvent e){

if(finish!=8)if(e.getKeyCode()==KeyEvent.VK_D&&c<60){ Spider.this.deal();

}

else if(e.getKeyCode()==KeyEvent.VK_M){

new Show().start();

}

}

});

/**

**开始游戏

*/

public void newGame(){

this.randomCards();

this.setCardsLocation();

this.setGroundLabelZOrder();

this.deal();

}

/**

**返回值:int

**返回牌的数量

*/

public int getC(){

return c;

}

/**

**设置等级

*/

public void setGrade(int grade){

this.grade=grade;

}

/**

**纸牌初始化

*/

public void initCards(){

//如果指派哦已被赋值,即将其从框架的面板中移去if(cards[0]!=null){

for(int i=0;i<104;i++){

pane.remove(cards[i]);

}

}

int n=0;

//通过难度等级,为n赋值

if(this.grade==Spider.EASY){

n=1;

}

else if(this.grade==Spider.NATURAL){

n=2;

}

else{

n=4;

//为card赋值

for(int i=1;i<=8;i++){

for(int j=1;j<=13;j++){

cards[(i-1)*13+j-1]=new PKCard((i%n+1)+"-"+j,this); }

}

//随机纸牌初始化

this.randomCards();

}

/**

**纸牌随机分配

*/

public void randomCards(){

PKCard temp=null;

//随机生成牌号

for(int i=0;i<52;i++){

int a=(int)(Math.random()*104);

int b=(int)(Math.random()*104);

temp=cards[a];

cards[a]=cards[b];

cards[b]=temp;

}

}

/**

**设置还原

*/

public void setNA(){

a=0;

n=0;

}

/**

**设置纸牌的位置

*/

public void setCardsLocation(){

table=new Hashtable();

c=0;

finish=0;

n=0;

a=0;

int x=883;

int y=580;

//初始化待展开的纸牌

for(int i=0;i<6;i++){

for(int j=0;j<10;j++){

int n=i*10+j;

pane.add(cards[n]);

//将card转向背面

cards[n].turnRear();

//将card放到固定的位置上

cards[n].moveto(new Point(x,y));

//将card的位置及相关信息存入

table.put(new Point(x,y),cards[n]);

}

x+=10;

}

x=20;

y=45;

//初始化表面显示的纸牌

for(int i=10;i>5;i--){

for(int j=0;j<10;j++){

int n=i*10+j;

if(n>=104) continue;

pane.add(cards[n]);

cards[n].turnRear();

cards[n].moveto(new Point(x,y));

table.put(new Point(x,y),cards[n]);

x+=101;

}

x=20;

y-=5;

}

}

/**

**返回值:void

**方法:显示可移动的操作

*/

public void showEnableOperator(){ int x=0;

out:while(true){

Point point=null;

PKCard card=null;

do{

if(point!=null){

n++;

}

point=this.getLastCardLocation(n);

while(point==null){

point=this.getLastCardLocation(++n);

if(n==10)n=0;

x++;

if(x==10) break out;

}

card=(PKCard)this.table.get(point);

}

while(!card.isCardCanMove());

while(this.getPreviousCard(card)!=null&&this.getPreviousCard(card).isCardCanMove()){ card=this.getPreviousCard(card);

}

if(a==10){

a=0;

}

for(;a<10;a++){

if(a!=n){

Point p=null;

PKCard c=null;

do{

if(p!=null){

a++;

}

p=this.getLastCardLocation(a);

int z=0;

while(p==null){

p=this.getLastCardLocation(++a);

if(a==10) a=0;

if(a==n)a++;

z++;

if(z==10)break out;

}

c=(PKCard)this.table.get(p);}

while(!c.isCardCanMove());

if(c.getCardValue()==card.getCardValue()+1){

card.flashCard(card);

try{

Thread.sleep(800);

}

catch(InterruptedException e){

e.printStackTrace();

}

c.flashCard(c);

a++;

if(a==10){

n++;

}

break out;

}

}

}

n++;

if(n==10){

n=0;}

x++;

if(x==10){

break out;

}

}

}

/*

**返回值:void

**方法:游戏运行

*/

public void deal()

{

this.setNA();

//判断10列中是否空列

for(int i=0;i<10;i++){

if(this.getLastCardLocation(i)==null){

JOptionPane.showMessageDialog(this,"有空位不能发牌!","提示",JOptionPane.W ARNING_MESSAGE);

return;

}

}

int x=20;

for(int i=0;i<10;i++){

Point lastPoint=this.getLastCardLocation(i);

//这张牌应该”背面向上“

if(c==0){

lastPoint.y+=5;

}

//这张牌应该”正面向上“

else{

lastPoint.y+=20;

}

table.remove(cards[c+i].getLocation());

cards[c+i].moveto(lastPoint);

table.put(new Point(lastPoint),cards[c+i]);

cards[c+i].turnFront();

cards[c+i].setCanMove(true);

//将组件card移动到容器中指定的顺序索引。this.pane.setComponentZOrder(cards[c+i],1); Point point=new Point(lastPoint);

if(cards[c+i].getCardValue()==1){

int n=cards[c+i].whichColumnAvailable(point); point.y-=240;

PKCard card=(PKCard)this.table.get(point);

if(card!=null&&card.isCardCanMove()){

this.haveFinish(n);

}

}

x+=101;

}

c+=10;

}

/*

**返回值:PKCard对象

**方法:获得card上面的那张牌

*/

public PKCard getPreviousCard(PKCard card){ Point point=new Point(card.getLocation()); point.y-=5;

card=(PKCard)table.get(point);

if(card!=null){

return card;

}

point.y-=15;

card=(PKCard)table.get(point);

return card;

}

/**

**返回值:PKCard对象

**方法:获得card下面的一张牌

*/

public PKCard getNextCard(PKCard card){ Point point=new Point(card.getLocation()); point.y+=5;

card=(PKCard)table.get(point);

if(card!=null)

return card;

point.y+=15;

card=(PKCard)table.get(point);

return card;

}

/**

**返回值:PKCard对象

**方法:取得第column列最后一张牌的位置

*/

public PKCard getLastCardLocation(int column){

Point point=new Point(20+column*101,25);

PKCard card=(PKCard)this.table.get(point);

if(card==null) return card;

while(card!=null){

point=card.getLocation();

card=this.getNextCard(card);

}

return point ;

}

public Point getGroundLabelLocation(int column){

return new Point(groundLabel[column].getLocation());

}

/*

**返回值:void

**方法:放置groundLabel组件

*/

public void setGroundLabelZOrder(){

for(int i=0;i<10;i++){

//将组件groundLable移动到容器中指定的顺序索引。顺序(105+i)确定了绘制

//组件的顺序;具有最高顺序的组件将第一个绘制,具有最低顺序的组件将最后一个绘制。在组建重叠的地方,具有较低顺序的组件

//将覆盖具有较高顺序的组件

pane.setComponentZOrder(groundLabel[i],105+i);

}

}

/*

**返回值:void

**方法:判断纸牌的摆置是否完成

*/

public void haveFinish(int column){

Point point=this.getLastCartLocation(column);

PKCard card=(PKCard)this.table.get(point);

do{

this.table.remove(point);

card.moveto(new Point(20+finish*10,580));

//将组件移动到容器中指定的顺序索引

pane.setComponentZOrder(card,1);

Java课程设计+文档+源代码(万年历+闹钟+记事本)

2015年12月18日 一、课程题目 设计一个万年历系统,实现以下功能 (1)可以查看当前的年份、月份和日期; (2)有时间栏,便于用户查看当前时间; (3)能够查找1至9999年的日期与星期的关系。 其它功能可自行开发。 二、题目分析与设计 1.使用的开发环境为eclipse Jdk环境:jdk1.8 2. (此为万 年历界面图) 使用了jTabbedPane 类对功能页面分页,布局策略基本用BorderLayout 和GridLayout 。 3.本项共有5个类,基本一个功能有一个类实现,主类CalendarMain 只包含一个main函数:对创建框架和其属性设置。

AlarmDemo类则实现闹钟功能;NoteBook 类实现记事本功能;CalendarsView 类则实现基本日历功能,ChooseDay 类是一个弹窗,被CalendarsView 调用,CalendarsView 、AlarmDemo 也在该类被调用; . 4.日历界面使用了jTable ,功能的实现逻辑则是 1.首先定义两个全局变量---年和月,查看不同时间的日历,该变量也 随之改变。 2.写了几个函数获取今年第一天是星期几,然后根据月份天数即可推 算具体某月第一天是星期几。 3.知道一个月第一天是星期几,则该月日历既可以顺序列出。 闹钟的功能实现思路: 1.获取界面设定的时间。

2.使用线程,每过一秒急救获取当前时间,并判断是否到达设定的时 间 3.到设定的时间,启动弹窗,播放闹铃 4.闹铃科根据文件选择器自行选择 记事本功能实现思路 1.在项目文件夹先新建一个txt文件作为储存的数据库 2.利用File 类和io 数据流将界面文本储存进txt文件,实现保存功 能 3.每当程序启动,读取txt文件内容并显示到界面上 三、测试分析 1.使用如下拓展包

基于jsp(java)学生选课系统的设计和开发

基于jsp学生选课系统的设计 姓名 系别、专业 导师姓名、职称 完成时间

基于JSP的学生选课系统 张三 内容摘要:随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。学生选课系统作为一种现代化的教学技术,以越来越受到人民的重视,是一个学校不可缺少的部分, 学生选课系统就是为了管理好选课信息而设计的。学生选课系统的将使选课管理工作规范化,系统化,程序化,避免选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。 关键词:选课、课程信息发布、B/S、JSP

目录 第一章引言 第二章相关技术介绍 第一节Java技术 (2) 第二节Servlet技术 (3) 第三节Jsp技术 (4) 第四节开发软件介绍 (5) 4.1 eclipse平台 (5) 4.2 Tomcat服务器 (6) 4.3 SQL server 2000 (6) 第三章系统分析 第一节系统功能模块划分 (8) 第二节系统功能类别划分 (8) 第三节系统维护 (9) 3.1 课程基本资料维护 (9) 3.2 系部维护 (10) 3.3 管理员维护 (10) 第四节学生选课 (10) 4.1 课程预览 (10) 4.2 选课 (10) 4.3 退课 (11) 4.4 修改密码 (11) 第五节教师课程查询 (12) 5.1 查询课程情况 (12) 5.2 修改密码 (12) 第四章系统功能设计 第一节系统功能设计图 (13) 第二节数据库设计 (13) 第三节页面及功能设计 (14) 第五章总结

java课程设计 万年历 源代码

华北科技学院 课程设计报告 面向对象程序设计(Java) 班级: 电商B09-3 姓名: 周婷玉 设计题目:__________万年历________________ 设计时间: 2011-12-28 至2012-01-06 指导教师:_______ 郭慧____________ _____ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:___________评阅教师:_____________

课程设计说明书 1、课程设计的目的 a)掌握面向对象程序设计基本要素(封装、继承、多态) b)掌握JA VA语言常用类包及其常用方法和JA VA语言基本语法 c)掌握基于AWT的图形用户界面设计 i.常用标准控件的使用,如标签、按钮、菜单、文本框、单选按钮、 滚动条等。 ii.事件处理机制 d)掌握布局、对话框的使用 e)掌握发布JA VA应用程序 2、功能模块简介和系统结构图 需求分析:本程序的要求为: 1.使用图形用户界面 2.能够实现日期与星期的查询 3.实现当日的时间备忘 功能设计: 1.能以月历形式显示日期与星期 2.支持用户自己输入年份,并提供月份的下拉形式来选择查询 3.添加当日行事历,储存与清除功能

基于JAVA语言的学生选课管理系统的设计与实现.

基于JAVA语言的学生选课管理系统的设计与实现 开发背景 ?随着我国国民经济的飞速发展,电子计算机和通信技术的发展,人类已经逐渐地进入信息化社会。信息和材料、能源一样成为一种社会的基本生产资料,在人类的社会生产活动中发挥着重要的作用。同时人们对信息和数据的利用与处理也已进入自动化、网络化和社会化的阶段,因此,开发相关的管理信息系统已经成为各行各业的必要和必需了 开发意义 ?课题库建设是教育现代化的需要,是教考分离、最大限度提高办学效益、实行标准化考试的需要,也是课程建设的一个重要组成部分。用试题库进行考试是命题方式的重要改革,是实现由传统人工命题到采用计算机随机命题的根本性转变。现代化的考试方法、考试手段,具有无比的优越性和强大的生命力,是教育现代化不可或缺的组成部分。由于从组织出卷到试卷的印制及试卷的管理等工作非常繁琐,工作量很大,而且试卷的标准化程度、难易程度、题量大小等各方面难以控制。因此,本课题组针对试题本身内容、试题管理方面,对试题的设计和试题库的运行机制进行研究,利用计算机进行试卷的自动生成并逐步积累形成有效的试题库,这不仅克服了个人命题中容易出现的片面性、随意性,而且要保证组卷客观性和科学性,对试题和试卷的管理将变得高效而便捷,对提高工作效率,使试卷管理逐步走向正规化、自动化,并进而实现课程管理的现代化,将起到十分重要的作用。 系统功能描述 ?学生选课管理系统根据实际使用对象,共分三个角色:管理员、教师和学生。主要划分为四个功能:个人信息管理功能、试题管理功能、试卷生成功能和信息查询功能。其中的关键是试题管理功能和组卷功能的设计。 系统功能描述 ?教师和管理员用户应具有的功能: (1对教师个人的信息的管理和查询。

JAVA《万年历系统》课程设计报告附源码

2013-2014学年第二学期《面向对象程序设计》 课程设计报告 题目:万年历系统 专业:计算机科学与技术 班级: : 学号: 指导教师: 成绩:

计算机与信息工程系2014年6月6日

目录 1 设计容及要求 (1) 1.1设计容 (1) 1.2设计任务及具体要求 (1) 2 概要设计 (2) 2.1程序设计思路 (2) 2.2 总体程序框图 (3) 3 设计过程或程序代码 (4) 3.1各个模块的程序流程图及运行界面 (4) 3.2对关键代码加以分析说明 (7) 4 设计结果与分析 (13) 4.1程序调试的结果 (13) 4.2程序设计分析 (13) 5 小结 (14) 致 (15) 参考文献 (16) 源程序 (17)

1 设计容及要求 1.1设计容 万年历,实际上就是记录一定时间围(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规。 (2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。 (3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。 (4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 1.2设计任务及具体要求 利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。 要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。当用户随意改动年份或月份时系统自动显示与星期对应的日期。用户点击日

学生选课系统毕业论文

淮海工学院东港学院 毕业设计(论文)说明书题目:学生选课系统 作者:贾娜学号:5102210107 系(院):东港学院计算机系 专业:计算机应用与维护 指导者:林毅 (姓名) (专业技术职务) 评阅者: (姓名) (专业技术职务) 2005年 6 月连云港

毕业设计(论文)中文摘要

目次 1引言(或绪论) ....................................... 错误!未定义书签。 1.1 课题研究的目的 ..................................... 错误!未定义书签。1.2 课题研究的意义 ................................... 错误!未定义书签。 1.3 课题的可行性分析 ................................... 错误!未定义书签。 1.3.1 课题调研?错误!未定义书签。 1.3.2 可行性分析 ....................................... 错误!未定义书签。 2 准备阶段 ............................................ 错误!未定义书签。 2.1 ASP基础........................................... 错误!未定义书签。2.2数据库系统设计 ................................... 错误!未定义书签。3应用系统开发工具 ................................... 错误!未定义书签。3.1对软件和硬件的要求 .............................. 错误!未定义书签。3.2 运行需求?错误!未定义书签。 3.3 其他需求 ........................................... 错误!未定义书签。 3.4 数据库应用系统开发简介7? 3.5 学生选课系统 (7) 3.6MSSQL Server 简介?错误!未定义书签。 4系统分析?错误!未定义书签。 4.1 系统简要分析 ..................................... 错误!未定义书签。4.2应用需求分析 .................................... 错误!未定义书签。4.3业务流分析 ...................................... 错误!未定义书签。4.4 数据流分析 ..................................... 错误!未定义书签。 4.5 系统数据模型设计?错误!未定义书签。 4.5.1 E-R图?错误!未定义书签。 4.5.2 数据表 ......................................... 错误!未定义书签。 5 操作方法 ............................................. 错误!未定义书签。5.1 登录 ............................................. 错误!未定义书签。5.2 课程预览?错误!未定义书签。 5.3 选课?错误!未定义书签。 5.4 退课?错误!未定义书签。 5.5 密码修改 ........................................ 错误!未定义书签。5.6管理员登录?错误!未定义书签。 5.7 退出系统 ........................................ 错误!未定义书签。 6 调和测试 ............................................ 错误!未定义书签。

学生选课系统开题报告书

学生选课系统开题报告书 目学生选课及信息管理系统的设计与实现学院物联网工程学院专业计算机科学与技术姓名学号指导教师副教授年月课题来源本课题是自拟课题.科学依据 一、本课题的目的及实际意义随着科学技术的不断提高,计算机科学日渐成熟,其强大的计算机功能已经让人们深刻认识到,计算机已经进入人类社会的各个领域并发挥着越来越重要的作用.作为计算机应用的一部份,使用计算机对选课信息进行管理,具有手工管理所无法比拟的优点.例如:查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等.这些优点能够极大地提高人事劳资管理的效率,也是学校的科学化、正规化管理与世界接轨的重要条件.因此,很有必要开发一套这样的软件.网上选课在我国起步比较晚,但发展很快.随着互联网的普及和网上选课系统的更趋向于成熟化,会有越来越多的学校和培训机构需要网上选课系统.学生选课系统是一个学校学生管理中不可缺少的一部分,对于学校的决策者和管理者来说都至关重要,所以系统应该为用户提供充分的信息管理和方便的查询手段.但一直以来,人们使用人工的方式管理文件档案,这种管理方式存在着许多缺点:效率低,保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难.使用计算机对选课信息进行管理,具有手工管理所无法比拟

的优点.这些优点能够极大地提高人事劳资管理的效率,也是学校的科学化、正规化管理与世界接轨的重要条件.通过本系统的开发及研究,可以进一步巩固在校所学各种理论知识,为今后的就业和工作打下一个良好的基础. 二、本课题的国内外的研究现状我国高校都实行了学分制,它的核心是允许学生自由选课,即把学习的自主权交给学生.在这里,学生选课时的制约因素比较复杂,工作量也很大,而且往往需要在较短的时间内完成.运用计算机辅助选课,即能实时地对大量选课数据进行检验和统计,分方便地输出选课结果,同时也避免了人工处理时容易产生的错误.在高等学校的教务管理工作中,课程表的编排是一项分复杂、棘手的工作.在排课过程中,除了满足大量的制约条件以外,还必须解决许多冲突与矛盾,例如:两位教师不能同一时间在同一班级上课、一位教师不能在同一时间上两门课等等.利用计算机辅助进行课表编排工作,既提高了排课工作的科学性,又可大大减轻管理人员的工作强度,提高工作效率,从而使学校教务管理现代化迈上了一个新台阶.研究内容通过研究和探讨,初步确定主要研究内容如下:本系统包括以下功能模块:1、管理员模块,包括学生、课程、教师、选课信息的管理.2、教师模块,包括课程、个人信息、课程信息、成绩统计等功能.3、学生模块,包括选课、查看成绩等功能.拟采取的研究方法、技术路线、实验方案及可行性分析本课题所开发的系统使用JAVA来设计开发完成,SQLServer作

Java万年历课程设计报告

杭州师范大学钱江学院课程设计 题目万年历 学院钱江学院 专业信电分院计算机科学与技术 班级计算机1101 姓名崔伊平 指导教师王李冬 2013 年9 月20 日

目录 一.概述 (1) 二.总体方案设计 (2) 三.详细设计 (3) 四.最终输出 (7) 五.课程设计总结 (8) 参考文献 (9)

一、概述 1.课程设计的目的 通过显示年日历程序的设计,培养学生综合利用java语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力。 通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《java语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了java语言的好处和其可用性! 2.课程设计的要求 2.1 输入查询的年份与月份,单击“更新”按扭,则可得到相应的日历。本实验是对图形用户界面,布局管理器的综合运用。要掌握APPLET容器中添加组件的方法,理解JAVA 的事件处理机制,编写独立的运行窗口。 2.2 输出形式 使用独立的运行窗口进行显示。界面主要由两部分组成——查询输入部分和结果显示部分。查询输入部分包括两个文本域,一个用于输入年份:一个用于选择月份:一个更新按扭,用来触发查询事件。

二总体方案设计 1.程序开发环境 a.开发环境:eclipse b.系统环境:windows xp/7 c.设计工具:Microsoft office 2003 2.整体流程图 图1 流程图 3.功能模块图

学生网上选课系统毕业设计论文

实训报告 课题名称:学生网上选课系统

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

Java课程设计-万年历

河北科技大学课程设计报告 号:学生姓名:学 专业班级:程序设计课程设计Java课程名称:学期学年第 2 2 015 学年学期: 2 014 — 指导教师:刘伟月年 2 0

的?.................................................................. ................................1?? 2.需求分................................................................... .........析................................1? 3.总体设计................................................................... ........................................1? 4.详细设计................................................................... ........................................1?

5.软件测试................................................................... . (10) 6.课程设计总结................................................................... ................................11. 一、课程设计目的(1)熟练使用java语言编写程序,解决实际问题。? (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;? (3)学会自己调试程序的方法并掌握一定的技巧。 二、需求分析本程序的要求为: 1.使用图形用户界面;? 2.本程序能够实现日期与星期的查询。 ?三、总体设计(1)可以通过图形界面显示日历。? (2)能以月历形式显示日期与星期。? (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。? ?四、详细设计1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。 ,0若是取余得几既为星期几,7使总天数除以输出月份第一天为星期几的算法:2. 则为星期日。? 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。? 4.查询年份必须为四位有效数字,否则不予显示。 程序源代码: import import import import import import; import import import ; import ; import import import java.awt.*; import import java.text.*; import ;

java学生选课系统

需求分析:写一个较为严谨的学生选课系统,实现学生可以选择多门选课课程,并将有效选课结果保存到数据库。学生需要登录后,才能选课。让学生可以在选课系统通过多种方式查询到要选的课程信息。 //选课规则:1、每个学生可以选多门课程,多次选课的总学分不能超过6学分;2、不能重复选择一门课程;3、每一门课程的选课人数都有数量限制,当某门课程的选课名额满时,则应另选课程。4、凭用户名和密码登录,通过提交某一课程号来选课 //总体设计方案:建立三个类:登录类register,选课类studentChooseCourse,数据库工具类JDBCUtil;一个SQL脚本文件用于生成数据库表结构和初始记录,以搭建数据库环境。 登录类register类,负责对用户的身份进行验证;工具类JDBCUtil用于实现连接,你可调用JDBCUtil的getConnection()方法等到链接。 选课类studentChooseCourse用于,实现选课功能。其中包括几个主要方法: 1、actionPerformed(ActionEvent) 用于监听用户“查询”和“提交”操作,并负责调用各种方法对其进行处理 2、createSearchCourse()用于产生图形用户界面 3、processBeforeCommit()用于对用户的“提交”查找进行验证,剔除无效的用户操作 4、tryCommit()负责对有效的“提交”操作,进一步处理,并将有效的操作结果时时保存到数据库,并更新数据库原有信息 //本程序用到的知识点:数据库连接JDBC;SQL建表、插入输入、动态查询;图形用户界面的产生以及处理查询结果集并较好显示;程序设计基础知识。 //代码如下: import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import school.schoolPicture.JdbcUtil; public class StudentChooseCourse extends JFrame implements ActionListener { JTextField jtfSearch = new JTextField(11); String[] columnNames = new String[] { "课程ID", "课程名", "学时", "学分", "学期", "性质" }; DefaultTableModel dtmSearch = new DefaultTableModel(columnNames, 27); JTable jtSearch = new JTable(dtmSearch); JScrollPane jspSearch = new JScrollPane(jtSearch); JComboBox jcbSearch = new JComboBox(); JTextField jtfSelectedCourse = new JTextField(10); Connection con = null; PreparedStatement ps = null; ResultSet rs = null; private static String usrName;

在线考试系统毕业论文

在线考试系统 摘要 随着计算机网络技术及相关技术的不断发展,考试的手段和媒介也在发生着巨大的变化,传统的考试方式和手段正面临着强烈的冲击。计算机网络技术应用于教育领域,经历了从传统的纸笔考试到计算机辅助考试,再到实现了真正的无纸化考试。在线式考试不仅可以节省大量的人力、物力,还可以提高考试的效率和质量,降低考试成本,使得网络考试不受时间和空间的限制,并且评测结果更为准确和客观。 将“在线考试系统”作为设计题目主要是为了把教师从传统的卷纸考试的工作中解脱出来,把学生从传统的学习方式中解脱出来。 “考试系统”主要由两个部分组成,分别是:“前台的网页设计”和“后台的题库系统服务”。该系统所能实现的主要模块功能,包括学生信息管理、管理员信息管理、考试科目管理、题库管理、自动组卷、在线考试、自动阅卷、学生成绩管理等功能。 本系统采用ASP语言进行开发,集题库管理,在线考试,实时评判于一体,本文分析了计算机考试系统的关键技术以及存在的问题。提出了实现该系统的体系结构,软件功能模块等,系统通过提高考试的效率,增强测试的反馈效果,使教师的教与学生的学更有针对性。 本系统速度快、稳定性强,为学生课程学习、个性化学习提供了灵活、方便、科学的检测手段,经过测试,该系统达到了预期的设计目标,非常适合于学校的考试工作。 关键词:在线考试; ASP技术; 数据库开发和应用; 随机生成试卷; 目录 摘要1 关键词:1 绪论2

1系统实现的关键技术3 1.1ASP技术3 1.2数据库技术4 1.2.1数据库技术概述4 1.2.2ADO与数据库的交互技术5 2系统分析6 2.1分析6 2.1.1条件的可行性6 2.1.2技术的可行性6 2.1.3经济上的可行性6 2.1.4考试系统的实用性6 2.2系统构架与开发环境6 2.2.1确定系统的构架6 2.2.2选择开发环境7 2.3系统需求分析7 3数据库分析与设计8 3.1数据流程分析8 3.2数据库概念设计9 3.3数据库逻辑设计9 4系统设计与实现10 4.1总体设计10 4.2模块的详细设计11 4.2.1管理员子系统11 4.2.2学生管理子系统13 5系统测试14 5.1测试内容14 5.3测试总结15 6结论15 参考文献15 致谢错误!未定义书签。 绪论 随着计算机技术的迅猛发展,学校教学和管理的信息化发展也有长足的进步,这就要求各个环节都均衡发展,其中之一是教师如何通过网络了解学生的学习状况。为此,配合传统课堂教学而建立的在线考试系统就显得相当必要。传统的考试都是采用纸、笔为介质的手工考试方式,即使在目前的高等学校,这种方式仍然被广泛使用。随着考试类型的不断增加和考试要求的不断提高,教师的工作量将随之增大。同时,一次考试的反馈能力弱,试题选择随意性大,人为因素明显,且考试时间地点必须固定。因此,传统的考试方式己经不能完全适应现代考试的需要。 随着人们对网络的科学性和广泛性的理解与加深,人们越来越重视考试系统的重要

(最新版)网上考试系统毕业论文

系别XXXXXXXXXXXX 专业XXXXXXXXXX 班级XXXXXXXXXX 学生姓名XXX 学号XXXX 指导教师XXX XXX 年 XX 月

目录 摘要 (3) 前言 (4) 第一章网上考试系统 (5) 1.1系统开发背景 (5) 1.2系统开发意义 (5) 第二章网上考试系统需求分析 (6) 2.1现状分析 (6) 2.2可行性分析 (7) 2.2.1经济可行性 (7) 2.2.2技术可行性 (7) 第三章系统设计 (8) 3.1功能要求 (8) 3.2系统开发环境 (9) 3.3系统开发工具 (9) 第四章网上考试系统设计 (11) 4.1数据库设计 (11) 4.1.1数据库结构设计 (11) 4.1.2数据库表的设计 (11) 4.2系统结构设计 (12) 4.2.1页面模块化设计 (12) 4.2.2 MVC模式设计(Jsp+Servlet+JavaBean) (12) 第五章网上考试系统实现 (14) 5.1系统环境配置 (14) 5.1.1 安装和配置java (14) 5.1.2 下载并安装服务器 (14) 5.1.3 测试服务器 (14) 5.2数据连接的设计 (14) 5.3考生登录和功能模块 (15)

5.3.1登录模块 (15) 5.3.2功能模块 (16) 5.4管理员登录和功能模块 (19) 5.4.1 登录模块 (19) 5.4.2 功能模块 (19) 第六章系统测试 (21) 6.1系统测试分析 (21) 6.2软件测试的目标与方法 (21) 6.3系统测试过程和结果 (21) 第七章系统的不足和改进 (23) 结束语 (24) 谢辞 (25) 参考文献 (26) 网上考试系统的开发与实现 摘要 随着计算机技术、网络技术迅速发展和高校校园网功能的日益完善,很多高校建立了基于校园网的网络信息管理平台,为提高教学管理水平提供了先进的管理手段。 目前,基于网络的在线考试系统己经成为现代考试方式的有力补充和发展。基于网络的考试系统以其考试组织严格可信、考试结果分析科学合理、考试成本低、考试效率高等优势被各类学校所重视。本系统基本上可以满足学校及现代化企业的内部考试要求,以考生的信息作为基础,考生的信息管理,试卷的生成和提交直接由程序完成,大大提高了考试的公正性。 本文重点就考试系统的技术选择、总体设计、数据库设计、系统的详细设计与实现等涉及的关键性问题予以重点阐述。 关键字:网上考试系统,总体设计,数据库设计,JSP 前言

java课程设计任务书万年历

课程设计(论文)任务书 软件学院学院_______________________________ 专业_______________________ 班一、 课程设计(论文)题目 ____________________________________________________________ 二、课程设计(论文)工作自2012 年12月_2£日起至2012年12月_28_日止。 三、课程设计(论文)地点: 软件学院实训中心 四、课程设计(论文)内容要求: 1 ?本课程设计的目的______________________________________________________________ (1)掌握Java语言的程序设计方法; ( 2)理论联系实际,进一步提高学生的软件开发技术; ( 3)培养学生分析、解决问题的能力; ( 4)提高学生实践论文撰写能力。 2 ?课程设计的任务及要求 1 )课程设计任务: (1) 设计一个万年历系统,能查看日期。 ___________________________________________ (2) 能查任意一年任意一月的日期。 _______________________________________________ (3) 背景显示当前年月。 _________________________________________________________ 2) 创新要求: (1)月份查看使用下拉菜单。 (2)查看框可随意拉大拉小,背景显示当前的年月。__________________________________ 3) 课程设计论文编写要求___________________________________________________________ (1)课程设计任务及要求____________________________________________________________ (2 )设计思路--工作原理、功能规划 (3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注 释)、界面等。 (4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。 (5 )设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些 知识,有哪些提高。

学生选课系统-毕业论文

本人郑重声明:本人所呈交的毕业论文(设 计),是在导师的指导下独立进行研究所取得的成果。毕业论文(设计)中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或在网上发表的论文。 特此声明。 论文作者签名: 日期:年月日

目录 摘要 (1) ABSTRACT (2) 第一章引言 (3) 1.1课题背景及意义 (3) 1.2开发工具的选用及介绍 (3) 1.3课题的可行性分析 (5) 第二章系统总体分析与设计 (6) 2.1设计构想 (6) 2.2界面规划 (7) 2.3数据流程规划 (8) 第三章数据库设计与实现 (9) 3.1数据库系统分析 (9) 3.2数据库逻辑设计 (11) 第四章登录界面详细设计 (14) 4.1界面设计 (14) 4.2管理员/教师/学生登录功能 (14) 4.3密码修改页面 (18) 第五章管理员详细设计 (22) 5.1界面设计 (22) 5.2设计方法 (22) 第六章测试及设计过程中的问题及解决 (27) 6.1数据库的连接 (27) 6.2参数的传递 (27) 6.3运行环境 (28) 第七章结论 (29) 致谢 (30) 参考文献 (31)

摘要 在没有学生选课系统之前,选课方法是随堂报名,这种方法虽然简单,但是造成选课的盲目性和教务处处理选课数据的繁重性,并且容易发生数据丢失和统计错误。为了减轻教务处工作量,以及更加合理的分配教学资源,对学生选课系统进行设计和开发。 本文主要针对学生选课系统管理员端,以及登录,注销,修改密码这些功能的设计和开发。针对管理员的功能,主要从管理员对教师,学生,院系,课程,以及管理员自身信息功能的添加,查看,修改,删除进行了设计和开发,实现了对教师,学生,院系,课程,以及管理员自身信息的管理功能。 学生选课系统的基本设计思想是使用B/S结构来开发,另外着重讨论了用https://www.doczj.com/doc/9318287909.html,技术和SQL Server 2000来开发该系统,并给出了主要部分的实现代码及控件的使用,另外还对控件的优点进行讨论。系统在Windows XP系统和https://www.doczj.com/doc/9318287909.html,平台下开发完成,使用C#作为开发语言。由于架构比较合理,系统有较高的安全性和较好的使用性能。其中连接数据库的字符串可随时在web.config里修改,增加了配置的灵活性,保证了数据库的安全。 关键词:学生选课,https://www.doczj.com/doc/9318287909.html,,B/S结构,管理员端

毕业论文考试系统

5.1.4 考场广播的设计与实现 在考场上,监考老师需要向考生说明各种注意事项和考卷中出现的问题,在考试将要结束的时候需要提醒考生填写答题纸。在该考试系统中添加了考试广播功能,监考老师可以在线向所有考生发送广播信息。 实现方法: { for(int i=0;i

毕业设计_学生选课系统

课程设计 课程名称数据库系统概论题目名称学生选课系统学生学院计算机学院 专业班级 学号 学生姓名 指导教师左亚尧 2013年1 月16日

目录 一、概要设计 (1) 1.1目的与意义 (1) 1.2内容与要求 (2) 二、需求分析 (2) 2.1背景 (2) 2.2概要分析 (2) 2.3开发技术 (2) 2.4数据需求 (3) 2.5功能需求 (3) 三、概念设计 (3) 3.1E-R图 (3) 四、逻辑结构设计 (7) 4.1逻辑转换 (7) 4.2所有表结构 (7) 4.3安全性设计 (9) 五、数据库实施 (9) 5.1创建表 (9) 5.2视图 (12) 5.3测试 (12) 5.4系统的主要功能实现代码及使用说明 (14) 六、总结 (20)

一、概要设计 1.1目的与意义 随着无纸化办公的普遍实现,信息的自动处理以及网络式的信息交互方式已经被人们广泛应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上选课与传统的选课方式相比更加节约资源,增加了学生选课自主权。 学生选课系统作为一种现代化的教学技术,越来越受到人们的重视,是一个学校不可或缺的部分, 学生选课系统就是为了管理好选课信息而设计的。学生选课系统的将使选课管理工作规范化、系统化、程序化,避免选课管理的随意性,提高信息处理的速度和准确性,能够准确、及时、有效的查询和修改学生选课情况。 与传统的选课方式相比,网上选课系统利用局域网为学生选课带来了极大的便捷。学生在公共机房,或者宿舍的个人电脑上便可以通过校园网络来选课。在选课期间内,学生能够使用选课系统灵活的修改自己的选课情况,大大提高了学校选课工作的效率。教务处的教师则可以通过选课系统的管理员子系统来管理学生的选课情况,使得学生选课工作达到系统化和自动化,大大提高了学校的工作效率,为广大师生及相关人员节省了极多的时间。 数据库对于一个应用系统的意义是相当重要的,一个设计良好的数据库系统一方面,能够给开发者带来便捷,更轻松的进行系统设计与编码;另一方面,对于系统的后期维护也非常重要,一个良好的数据库系统能够保证系统的可扩充性,以及系统的移植性等问题 1.2 内容和要求 本实验将设计出一个高校网上选课数据库系统,其要求简要如下: (1) 系统用户由三类组成:教师、学生和管理员。 (2)管理员负责的主要功能: ①用户管理(老师、学生及管理员的增、删、改); ②课程管理(添加、删除和修改); ③选课管理(实现选课功能开放和禁止、老师成绩输入开放和禁止)。 1

Java课程设计-万年历

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 课程名称:Java程序设计课程设计 学年学期:2 014 —2 015 学年第2 学期指导教师:刘伟 2 0 年月

课程设计成绩评定表 学生姓名学号成绩专业班级起止时间 设计题目 指导教师评语学习态度:端正□较端正□一般□较差□ 学习纪律:好□较好□一般□较差□ 出勤情况:好□较好□一般□较差□ 程序设计:好□较好□一般□较差□ 动手能力:强□较强□一般□较差□ 团队精神:好□较好□一般□较差□ 创新意识:强□较强□一般□较差□ 课程设计完成情况:优秀□好□一般□较差□ 课程设计报告完成情况:优秀□好□一般□较差□ 指导教师: 年月日

目录 1.课程设计目的 (1) 2.需求分析 (1) 3.总体设计 (1) 4.详细设计 (1) 5.软件测试 (10) 6.课程设计总结 (11)

一、课程设计目的 (1)熟练使用java语言编写程序,解决实际问题。 (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (3)学会自己调试程序的方法并掌握一定的技巧。 二、需求分析 本程序的要求为: 1.使用图形用户界面; 2.本程序能够实现日期与星期的查询。 三、总体设计 (1)可以通过图形界面显示日历。 (2)能以月历形式显示日期与星期。 (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。 四、详细设计 1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。 2.输出月份第一天为星期几的算法:使总天数除以7取余得几既为星期几,若是0,则为星期日。 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4.查询年份必须为四位有效数字,否则不予显示。 程序源代码: import java.awt.BorderLayout; import java.awt.Color;

相关主题
文本预览
相关文档 最新文档