当前位置:文档之家› 软件工程课程设计3

软件工程课程设计3

软件工程课程设计3
软件工程课程设计3

南京信息工程大学实验(实习)报告

实验(实习)名称详细设计实验(实习)日期 2013.11.22 得分指导教师李振宏

一、实验目的

1.通过windows画图板进行详细设计,掌握算法的设计方法与算法的描述;

2.掌握常用算法描述工具的使用;

3. 完成一个windows画图板的算法设计。

二、实验准备

1.熟悉算法描述工具的使用

三、实验要求

完成windows绘图板的详细设计,提交实验报告

开发一个功能完善的Windows绘图板程序,功能包括:新建空白文档、文件保存、绘制一些基本的图形组件(直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等)、橡皮擦、添加文字等

四、实验内容:

1:背景

根据实际情况,我们使用原型法即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的改进,将系统需具备的性能逐渐增加上去,直到所有的性能全部满足。直到所有的性能全部满足。

总体规划主要实现想法和作编写代码的工作。

2:界面组织结构

开始

初始化绘图区域

新建或默认文件打开已有文件

绘制修改图片

新建文件保存图片文件

结束

退出程序

3:界面设计说明要求

其实都知道java 并不是做Windows 画图板的最好的语言,但是因为我们并没有学过VB ,所以只能用JAVA 来编写windows 绘图板这个软件,Java 并没有VB 那么大量的控件,所以我们必须要用JAVA 的语言来实现运用了JAVA 中类的继承特性实现了对父类方法的调用,并多次使用CASE 语句实现绘图菜单的选择,运用了适配器类简化了监听器类的重写工作。 4:界面代码程序 import java.awt.BorderLayout;

import java.awt.Choice;

import java.awt.Color;

import java.awt.Desktop.Action;

import java.awt.FileDialog;

import java.awt.Graphics;

import java.awt.GridLayout;

import java.awt.Polygon;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionAdapter;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

画图板主界面 Windows 绘图板

画图区 工具栏 菜单栏

一般画图 函数画图

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

import java.util.Vector;

import javax.swing.AbstractAction;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JColorChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.JToolBar;

import javax.swing.KeyStroke;

class Point implements Serializable

{

int x,y;

Color col;

int tool;

int guangdu;

Point(int x, int y, Color col, int guangdu){

this.x = x;

this.y = y;

this.col = col;

this.guangdu = guangdu;

}

public void move(int x,int y,Color col,int guangdu){ this.x=x;

this.y=y;

this.col=col;

this.guangdu=guangdu;

}

}

public class MainLei{

public static huatuqu huatu=new huatuqu();

public static void main(String[] args){

caidanlei frame=new caidanlei();

frame.getContentPane().setLayout(new BorderLayout());

frame.getContentPane().add(huatu,BorderLayout.CENTER);

frame.setSize(700,600);

frame.setTitle("huatuban");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

static JButton yanseRed,yanseBlack,yanseBule,yanseDarkGray,yanseGray,yansePink, yanseGreen,yanseLightGray,yanseMagenta,yanseOrange,yanseYellow,yanseCyan ;

static Color cc;

static String text1String;

static int text1Int=-1;

static String text2String;

static int text2Int=-1;

static String text3String;

static int text3Int=-1;

static String text4String;

static int text4Int=-1;

static String text5String;

static int text5Int=-1;

static String text6String;

static int text6Int=-1;

static String text7String;

static int text7Int=-1;

static String text8String;

static int text8Int=-1;

static JButton jbo1;

static JButton jbo2;

static JButton jbo3;

static JButton jbo4;

static JTextField text1;

static JTextField text2;

static JTextField text3;

static JTextField text4;

static JTextField text5;

static JTextField text6;

static JTextField text7;

static JTextField text8;

//菜单项

static class caidanlei extends JFrame implements ActionListener{

private JMenuItem jmxinjian, jmbaocun, jmbianji, jmdakai, jmiClose,jmbangzhu,

jmpaowuxian,jmzhixian,jmshuangqu,jmtuoyuan;

huatuqu hutu=new huatuqu();

FileDialog openPicture,savePicture;

Vector paintInfo = null;//点信息向量组

int n = 1;

JFrame frame1;

JFrame frame2;

JFrame frame3;

JFrame frame4;

FileInputStream picIn = null;

FileOutputStream picOut = null;

ObjectInputStream VIn = null;

ObjectOutputStream VOut = null;

public caidanlei(){

JMenuBar jm=new JMenuBar();

setJMenuBar(jm);

JMenu fileJmenu=new JMenu("文件",false);

JMenu yeseJmenu=new JMenu("颜色",true);

JMenu shengchengMenu=new JMenu("生成");

JMenu bangzhumenu=new JMenu("帮助",false);

jm.add(fileJmenu);

jm.add(yeseJmenu);

jm.add(shengchengMenu);

jm.add(bangzhumenu);

fileJmenu.add(jmxinjian=new JMenuItem("新建"));

fileJmenu.add(jmdakai=new JMenuItem("打开"));

fileJmenu.add(jmbaocun=new JMenuItem("保存"));

fileJmenu.addSeparator();

fileJmenu.add(jmiClose=new JMenuItem("退出"));

fileJmenu.addSeparator();

yeseJmenu.add(jmbianji=new JMenuItem("编辑颜色"));

shengchengMenu.add(jmpaowuxian=new JMenuItem("画抛物线"));

shengchengMenu.add(jmzhixian=new JMenuItem("画直线"));

shengchengMenu.add(jmshuangqu=new JMenuItem("画双曲线"));

shengchengMenu.add(jmtuoyuan=new JMenuItem("画椭圆"));

bangzhumenu.add(jmbangzhu=new JMenuItem("帮助主题"));

jmxinjian.addActionListener(this);

jmbaocun.addActionListener(this);

jmdakai.addActionListener(this);

jmiClose.addActionListener(this);

jmbianji.addActionListener(this);

jmpaowuxian.addActionListener(this);

jmzhixian.addActionListener(this);

jmshuangqu.addActionListener(this);

jmbangzhu.addActionListener(this);

jmtuoyuan.addActionListener(this);

openPicture = new FileDialog(this,"打开图画",FileDialog.LOAD); openPicture.setVisible(false);

savePicture = new FileDialog(this,"保存图画",FileDialog.SA VE); savePicture.setVisible(false);

openPicture.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ openPicture.setVisible(false); }

});

savePicture.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ savePicture.setVisible(false); }

});

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ System.exit(0);}

});

}

public void actionPerformed(ActionEvent e) {

String actionCommand = e.getActionCommand();

if (e.getSource() instanceof JMenuItem) {

if ("新建".equals(actionCommand)){

huatu.setForeground(Color.white);

JOptionPane.showMessageDialog(null,"是否保存此界面");

}

else if ("打开".equals(actionCommand)){

openPicture.setVisible(true);

if(openPicture.getFile()!=null){

try{

paintInfo.removeAllElements();

File filein = new File(openPicture.getDirectory(),openPicture.getFile());

picIn = new FileInputStream(filein);

VIn = new ObjectInputStream(picIn);

paintInfo = (Vector)VIn.readObject();

VIn.close();

repaint();

}

catch(ClassNotFoundException IOe2)

{

repaint();

System.out.println("can not read object");

}

catch(IOException IOe)

{

repaint();

System.out.println("can not read file");

}

}

}

else if ("保存".equals(actionCommand)){

savePicture.setVisible(true);

try{

File fileout = new File(savePicture.getDirectory(),savePicture.getFile());

picOut = new FileOutputStream(fileout);

VOut = new ObjectOutputStream(picOut);

VOut.writeObject(paintInfo);

VOut.close();

}

catch(IOException IOe)

{

System.out.println("can not write object");

}

}

else if ("编辑颜色".equals(actionCommand))

cc = JColorChooser.showDialog(caidanlei.this, "please a color",cc);

else if("帮助主题".equals(actionCommand))

JOptionPane.showMessageDialog(null,"先锋小组制作");

else if("画抛物线".equals(actionCommand)){

jbo1=new JButton("确定");

JPanel panel=new JPanel();

JLabel jlbl1=new JLabel("画抛物线如:y=ax^2+b");

panel.add(jlbl1);

JPanel pane2=new JPanel();

pane2.setLayout(new GridLayout(2,2));

JLabel jlbl2=new JLabel("a=");

text1=new JTextField();

JLabel jlbl3=new JLabel("b=");

text2=new JTextField();

pane2.add(jlbl2);

pane2.add(text1);

pane2.add(jlbl3);

pane2.add(text2);

frame1=new JFrame();

frame1.setTitle("画抛物线");

frame1.getContentPane().setLayout(new BorderLayout());

frame1.getContentPane().add(panel,BorderLayout.NORTH);

frame1.getContentPane().add(pane2,BorderLayout.CENTER);

frame1.getContentPane().add(jbo1,BorderLayout.SOUTH);

frame1.setSize(250,175);

frame1.setVisible(true);

jbo1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

text1String=text1.getText();

text2String=text2.getText();

text1Int=Integer.parseInt(text1String);

text2Int=Integer.parseInt(text2String);

frame1.setVisible(false);

}

});

}

else if("画直线".equals(actionCommand)){

JPanel panel=new JPanel();

jbo2=new JButton("确定");

JLabel jlbl1=new JLabel("画直线如:y=ax+b");

panel.add(jlbl1);

JPanel pane2=new JPanel();

pane2.setLayout(new GridLayout(2,2));

JLabel jlbl2=new JLabel("a=");

text3=new JTextField();

JLabel jlbl3=new JLabel("b=");

text4=new JTextField();

pane2.add(jlbl2);

pane2.add(text3);

pane2.add(jlbl3);

pane2.add(text4);

frame2=new JFrame();

frame2.setTitle("画直线");

frame2.getContentPane().setLayout(new BorderLayout());

frame2.getContentPane().add(panel,BorderLayout.NORTH);

frame2.getContentPane().add(pane2,BorderLayout.CENTER);

frame2.getContentPane().add(jbo2,BorderLayout.SOUTH);

frame2.setSize(250,175);

frame2.setVisible(true);

jbo2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

text3String=text3.getText();

text4String=text4.getText();

text3Int=Integer.parseInt(text3String);

text4Int=Integer.parseInt(text4String);

frame2.setVisible(false);

}

});

}

if("画双曲线".equals(actionCommand)){

jbo3=new JButton("确定");

JPanel panel=new JPanel();

JLabel jlbl1=new JLabel("画双曲线如:x^2/a^2-x^2/b^2=1");

panel.add(jlbl1);

JPanel pane2=new JPanel();

pane2.setLayout(new GridLayout(2,2));

JLabel jlbl2=new JLabel("a=");

text5=new JTextField();

JLabel jlbl3=new JLabel("b=");

text6=new JTextField();

pane2.add(jlbl2);

pane2.add(text5);

pane2.add(jlbl3);

pane2.add(text6);

frame3=new JFrame();

frame3.setTitle("画双曲线");

frame3.getContentPane().setLayout(new BorderLayout());

frame3.getContentPane().add(panel,BorderLayout.NORTH);

frame3.getContentPane().add(pane2,BorderLayout.CENTER);

frame3.getContentPane().add(jbo3,BorderLayout.SOUTH);

frame3.setSize(250,175);

frame3.setVisible(true);

jbo3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){

text5String=text5.getText();

text6String=text6.getText();

text5Int=Integer.parseInt(text5String);

text6Int=Integer.parseInt(text6String);

frame3.setVisible(false);

}

});

}

if("画椭圆".equals(actionCommand)){

jbo4=new JButton("确定");

JPanel panel=new JPanel();

JLabel jlbl1=new JLabel("画椭圆如:x^2/a^+y^2/b^=1");

panel.add(jlbl1);

JPanel pane2=new JPanel();

pane2.setLayout(new GridLayout(2,2));

JLabel jlbl2=new JLabel("a=");

text7=new JTextField();

JLabel jlbl3=new JLabel("b=");

text8=new JTextField();

pane2.add(jlbl2);

pane2.add(text7);

pane2.add(jlbl3);

pane2.add(text8);

frame4=new JFrame();

frame4.setTitle("画椭圆");

frame4.getContentPane().setLayout(new BorderLayout());

frame4.getContentPane().add(panel,BorderLayout.NORTH);

frame4.getContentPane().add(pane2,BorderLayout.CENTER);

frame4.getContentPane().add(jbo4,BorderLayout.SOUTH);

frame4.setSize(250,175);

frame4.setVisible(true);

jbo4.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

text7String=text7.getText();

text8String=text8.getText();

text7Int=Integer.parseInt(text7String);

text8Int=Integer.parseInt(text8String);

frame4.setVisible(false);

}

});

}

else if ("退出".equals(actionCommand))

System.exit(0);

}

}

}

//画图类

static class huatuqu extends JPanel implements ItemListener{ boolean dianFirst=true;

String name3;

String name1;

String name2;

Choice jcb1;

Choice jcb2;

Choice jcb3;

boolean xiangpiFirst=true;

boolean qianbiFirst=true;

boolean juxingFirst=true;

boolean tuoyuanFirst=true;

boolean yuanjiaoFirst=true;

String msr;

String theButton;

boolean isFirst=true;

private Graphics g;

private Point lineStart=new Point(0,0,Color.red,50);

ImageIcon jbtxiangpi =

new ImageIcon("ico/x.gif"); ImageIcon jbtqianbi =

new ImageIcon("ico/q.gif"); ImageIcon jbPrint =

new ImageIcon("ico/s.gif"); ImageIcon jbxiguan =

new ImageIcon("ico/di.jpg"); ImageIcon jbziti =

new ImageIcon("ico/zt.gif"); ImageIcon jbzhixian=

new ImageIcon("ico/z.gif"); ImageIcon jbtuoyuan =

new ImageIcon("ico/t.gif"); ImageIcon jbjuxing =

new ImageIcon("ico/ju.gif"); ImageIcon jbduopianxing =

new ImageIcon("ico/d.gif"); ImageIcon jbyuanjiaojuxing =

new ImageIcon("ico/yu.gif"); ImageIcon redicon =

new ImageIcon("ico/red.jpg"); ImageIcon blackicon =

new ImageIcon("ico/black.jpg"); ImageIcon buleicon =

new ImageIcon("ico/bule.jpg"); ImageIcon cyanicon =

new ImageIcon("ico/cyae.jpg"); ImageIcon drakgrayicon =

new ImageIcon("ico/drakgray.jpg"); ImageIcon grayicon =

new ImageIcon("ico/gray.jpg"); ImageIcon greenicon =

new ImageIcon("ico/green.jpg"); ImageIcon lightgrayicon =

new ImageIcon("ico/lightgray.jpg"); ImageIcon magentaicon =

new ImageIcon("ico/megenta.jpg"); ImageIcon orangeicon =

new ImageIcon("ico/orga.jpg"); ImageIcon pinkicon =

new ImageIcon("ico/pink.jpg"); ImageIcon yellowicon =

new ImageIcon("ico/yellow.jpg");

public huatuqu()

{

this.setLayout(new BorderLayout());

this.setBackground(Color.white);

MyAction xiangpiAction = new MyAction("xiangpi", jbtxiangpi,

"橡皮",

new Integer(KeyEvent.VK_L),

KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK)); MyAction qianbiAction = new MyAction("qianbi", jbtqianbi,

"铅笔",

new Integer(KeyEvent.VK_C),

KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); MyAction PrintAction = new MyAction("Print", jbPrint,

"涮子",

new Integer(KeyEvent.VK_R),

KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEvent.CTRL_MASK)); MyAction xiguanAction = new MyAction("xiguan", jbxiguan,

"吸管",

new Integer(KeyEvent.VK_A),

KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); MyAction zitiAction = new MyAction("ziti", jbziti,

"字体",

new Integer(KeyEvent.VK_Z),

KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK)); MyAction zhixianAction = new MyAction("zhixian", jbzhixian,

"直线",

new Integer(KeyEvent.VK_W),

KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK)); MyAction tuoyuanAction = new MyAction("tuoyuan", jbtuoyuan,

"椭圆",

new Integer(KeyEvent.VK_T),

KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.CTRL_MASK)); MyAction juxingAction = new MyAction("juxing", jbjuxing,

"矩形",

new Integer(KeyEvent.VK_J),

KeyStroke.getKeyStroke(KeyEvent.VK_J, ActionEvent.CTRL_MASK));

MyAction duopianxingAction = new MyAction("duopianxing", jbduopianxing,

"多边形",

new Integer(KeyEvent.VK_D),

KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));

MyAction yuanjiaojuxingAction = new MyAction("yuanjiaojuxing", jbyuanjiaojuxing,

"圆角矩形",

new Integer(KeyEvent.VK_Y),

KeyStroke.getKeyStroke(KeyEvent.VK_Y, ActionEvent.CTRL_MASK));

jcb1=new Choice();

jcb1.add("1");

jcb1.add("2");

jcb1.add("3");

jcb1.add("4");

jcb1.add("5");

jcb2=new Choice();

jcb2.add("1");

jcb2.add("2");

jcb2.add("3");

jcb2.add("4");

jcb2.add("5");

jcb3=new Choice();

jcb3.add("不填充");

jcb3.add("填充");

JLabel jTable3=new JLabel("是否填充");

JLabel jTable1=new JLabel("画笔大小");

JLabel jTable2=new JLabel("橡皮大小");

jcb1.addItemListener(this);

jcb2.addItemListener(this);

jcb3.addItemListener(this);

JPanel panel=new JPanel();

panel.setLayout(new GridLayout(3,2));

panel.add(jTable3);

panel.add(jcb3);

panel.add(jTable2);

panel.add(jcb1);

panel.add(jTable1);

panel.add(jcb2);

add(panel,BorderLayout.SOUTH);

JToolBar jToolBar1 = new JToolBar(JToolBar.VERTICAL);//工具栏jToolBar1.setLayout(new GridLayout(8,2));

jToolBar1.add(xiangpiAction);

jToolBar1.add(qianbiAction);

jToolBar1.add(PrintAction);

jToolBar1.add(xiguanAction);

jToolBar1.add(zitiAction);

jToolBar1.add(zhixianAction);

jToolBar1.add(tuoyuanAction);

jToolBar1.add(juxingAction);

jToolBar1.add(duopianxingAction);

jToolBar1.add(yuanjiaojuxingAction);

add(jToolBar1, BorderLayout.WEST);

////////////////////////////////////////////////////////////////////////////////

yanseRed = new JButton("Red", redicon);

yanseBlack = new JButton("Black", blackicon);

yanseBule = new JButton("Bule", buleicon);

yanseCyan = new JButton("Cyan", cyanicon);

yanseDarkGray = new JButton("DarkGray", drakgrayicon);

yanseGray = new JButton("Gray", grayicon);

yanseGreen = new JButton("Green", greenicon);

yanseLightGray = new JButton("lightGray", lightgrayicon);

yanseMagenta = new JButton("magenta", magentaicon);

yanseOrange = new JButton("orange", orangeicon);

yansePink = new JButton("pink", pinkicon);

yanseYellow = new JButton("yellow", yellowicon);

SecondListender secondListender=new SecondListender();

yanseRed.addActionListener(secondListender);

yanseBlack.addActionListener(secondListender);

yanseBule.addActionListener(secondListender);

yanseCyan.addActionListener(secondListender);

yanseDarkGray.addActionListener(secondListender);

yanseGray.addActionListener(secondListender);

yanseGreen.addActionListener(secondListender);

yanseLightGray.addActionListener(secondListender);

yanseMagenta.addActionListener(secondListender);

yanseOrange.addActionListener(secondListender);

yansePink.addActionListener(secondListender);

yanseYellow.addActionListener(secondListender);

JToolBar jToolBar2 = new JToolBar();

jToolBar2.setFloatable(true);

jToolBar2.setLayout(new GridLayout(6,2));

jToolBar2.add(yanseRed);

jToolBar2.add(yanseBlack);

jToolBar2.add(yanseBule);

jToolBar2.add(yanseCyan);

jToolBar2.add(yanseDarkGray);

jToolBar2.add(yanseGray);

jToolBar2.add(yanseGreen);

jToolBar2.add(yanseLightGray);

jToolBar2.add(yanseMagenta);

jToolBar2.add(yanseOrange);

jToolBar2.add(yansePink);

jToolBar2.add(yanseYellow);

add(jToolBar2, BorderLayout.EAST);

/////////////////////////////////////////////////////////////

addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) {

g=getGraphics();

if(theButton.equals("xiangpi"))//橡皮

{

g.setColor(getBackground());

if(xiangpiFirst&&name2!="2"){

name2="1";

xiangpiFirst=false;

}

if(name2=="1")

g.fillOval(lineStart.x,lineStart.y,2,2);

else if(name2=="2")

g.fillOval(lineStart.x,lineStart.y,5,5);

else if(name2=="3")

g.fillOval(lineStart.x,lineStart.y,8,8);

else if(name2=="4")

g.fillOval(lineStart.x,lineStart.y,11,11);

else if(name2=="5")

g.fillOval(lineStart.x,lineStart.y,14,14);

lineStart.move(e.getX(),e.getY(),Color.red,50);

}

else if(theButton.equals("qianbi"))//铅笔

{

g.setColor(cc);

if(qianbiFirst&&name1!="2"){

name1="1";

qianbiFirst=false;

}

if(name1=="1")

g.drawLine(lineStart.x,lineStart.y,e.getX(),e.getY());

else if(name1=="2")

g.fillOval(lineStart.x,lineStart.y,2,2);

else if(name1=="3")

g.fillOval(lineStart.x,lineStart.y,5,5);

else if(name1=="4")

g.fillOval(lineStart.x,lineStart.y,8,8);

else if(name1=="5")

g.fillOval(lineStart.x,lineStart.y,11,11);

lineStart.move(e.getX(),e.getY(),Color.red,50);

}

else if(theButton.equals("Print")){//刷子

g.setColor(cc);

g.fillOval(e.getX()-10,e.getY()-10,20,20);

lineStart.move(e.getX(),e.getY(),Color.red,50);

}

}

});

addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent e) {

if(dianFirst){

theButton="qianbi";

dianFirst=false;

}

if(text1Int!=-1){//画抛物线

g.setColor(cc);

g.drawLine(150,300,690,300);

g.drawLine(375,10,375,450);

g.drawLine(370,15,375,10);

g.drawLine(380,15,375,10);

g.drawLine(685,295,690,300);

g.drawLine(685,305,690,300);

Polygon p=new Polygon();

double scaleFactor=0.1;

for(int x=-100;x<=100;x++){

p.addPoint(x+375,(int)(300-(int)text1Int*(scaleFactor*x*x)-(int)text2Int));

}

g.drawPolygon(p.xpoints,p.ypoints,p.npoints);

text1Int=-1;

}

if(text3Int!=-1){//画直线

g.setColor(cc);

g.drawLine(150,300,690,300);

g.drawLine(375,10,375,450);

g.drawLine(370,15,375,10);

g.drawLine(380,15,375,10);

g.drawLine(685,295,690,300);

g.drawLine(685,305,690,300);

Polygon p=new Polygon();

double scaleFactor=0.1;

for(int x=-100;x<=100;x++){

p.addPoint(x+375,(int)(300-(int)text3Int*x-(int)text4Int));

}

g.drawPolygon(p.xpoints,p.ypoints,p.npoints);

text3Int=-1;

}

if(text5Int!=-1){//画双曲线

g.setColor(cc);

g.drawLine(150,300,690,300);

g.drawLine(375,10,375,450);

g.drawLine(370,15,375,10);

g.drawLine(380,15,375,10);

g.drawLine(685,295,690,300);

g.drawLine(685,305,690,300);

Polygon p=new Polygon();

double scaleFactor=0.1;

for(int x=-100;x<=-text5Int*Math.sqrt(10);x++){

p.addPoint(x+375,(int)(300-Math.sqrt((text6Int*text6Int*(scaleFactor*x*x-text5I nt*text5Int)/(text5Int*text5Int)))));

}

g.drawPolyline(p.xpoints,p.ypoints,p.npoints);

for(int x=-100;x<=-text5Int*Math.sqrt(10);x++){

p.addPoint(x+375,(int)(300+Math.sqrt((text6Int*text6Int*(scaleFactor*x*x-text5Int*t ext5Int)/(text5Int*text5Int)))));

}

g.drawPolyline(p.xpoints,p.ypoints,p.npoints);

for (double x=text5Int*Math.sqrt(10);x<=100;x++){

p.addPoint((int)x+375,(int)(300-Math.sqrt((text6Int*text6Int*(scaleFactor*x*x-te xt5Int*text5Int)/(text5Int*text5Int)))));

}

g.drawPolyline(p.xpoints,p.ypoints,p.npoints);

for (double x=text5Int*Math.sqrt(10);x<=100;x++){

p.addPoint((int)x+375,(int)(300+Math.sqrt((text6Int*text6Int*(scaleFactor*x*x-t ext5Int*text5Int)/(text5Int*text5Int)))));

}

g.drawPolyline(p.xpoints,p.ypoints,p.npoints);

text5Int=-1;

}

if(text7Int!=-1){//画椭圆

g.setColor(cc);

g.drawLine(150,300,690,300);

g.drawLine(375,10,375,450);

g.drawLine(370,15,375,10);

g.drawLine(380,15,375,10);

g.drawLine(685,295,690,300);

g.drawLine(685,305,690,300);

Polygon p=new Polygon();

double scaleFactor=0.1;

for(int x=-text7Int;x<=text7Int;x++){

p.addPoint((int)x+375,(int)(300-(text8Int/text7Int)*Math.sqrt((text7Int*text7Int-x *x))));

}

g.drawPolyline(p.xpoints,p.ypoints,p.npoints);

for(int x=-text7Int;x<=text7Int;x++){

p.addPoint((int)x+375,(int)(300+(text8Int/text7Int)*Math.sqrt((text7Int*text7Int-

x*x))));

}

g.drawPolyline(p.xpoints,p.ypoints,p.npoints);

text7Int=-1;

}

if(theButton.equals("ziti")){

g.setColor(cc);

g.drawString(msr,e.getX(),e.getY());

}

//if(theButton.equals("xiguan")){//吸管

// cc=huatu.getForeground();

// }

if(theButton.equals("zhixian")){//直线

g.setColor(cc);

//g.drawLine(lineStart.x,lineStart.y,e.getX(),e.getY());

lineStart.move(e.getX(),e.getY(),Color.red,50);

}

if(theButton.equals("duopianxing")){//多边性

g.setColor(cc);

g.drawLine(lineStart.x,lineStart.y,e.getX(),e.getY());

}

lineStart.move(e.getX(),e.getY(),Color.red,50);

}

public void mouseReleased(MouseEvent e) {

if(isFirst){

isFirst=false;

lineStart.move(e.getX(),e.getY(),Color.red,50);

}

if(theButton.equals("zhixian")){//直线

g.setColor(cc);

g.drawLine(lineStart.x,lineStart.y,e.getX(),e.getY());

lineStart.move(e.getX(),e.getY(),Color.red,50);

}

if(theButton.equals("tuoyuan")){//椭圆

g.setColor(cc);

if(tuoyuanFirst&&name3!="填充"){

name3="不填充";

tuoyuanFirst=false;

}

if(name3=="不填充")

g.drawOval(lineStart.x,lineStart.y,Math.abs((e.getX()-lineStart.x)),Math.abs((e.ge tY()-lineStart.y)));

软件工程课程设计任务书(模板及参考)

编号: 大连理工大学本科生课程设计任务书 课程名称:软件工程课程设计 指导教师: 项目名称:粒子群主题网站 小组名称: 组长姓名: 上课时间:2009年7月13 日- 7月25 日 大连理工大学软件学院 20 年月日

1 设计目的 软件工程课程设计是在学生系统的学习了《软件工程》课程后,综合运用所学的知识,设计开发一个小型的实际系统。 要求学生运用软件工程的思想,严格按照软件生命周期各个阶段的目的和任务,完成对系统的定义、设计、编码、运行以及后期的维护。通过对具体系统的设计和开发,使得学生掌握软件工程的基本原理和基本方法,学会用软件工程学的概念、原理、方法开发和维护软件。 2 设计要求 (1)选用迭代式开发的过程模型,运用软件工程的方法,规范地完成规模小、功能较为简单 的软件开发,包括需求分析、设计、编码和测试。 (2)学生5人组成一个项目小组,一人为组长,其他人为组员,组内成员分工明确、团结协 作、相互配合,共同完成选题的设计。 (3)课程设计时间为2周。 (4)开发平台.NET3.5,语言(C# \ ASP),数据库设计工具Powerdesigner;数据库系统MS SQL Server 2005 (5)具体指标: 1)可以选择结构化分析/设计(SA/SD)或面向对象方法(OOA/D) 2) 结构化分析/设计(SA/SD) a)需求分析:分析系统的静态功能和动态行为 每一位小组成员能够描绘分配的子功能需求 每一位小组成员完成分配子功能的数据流图DFD,要求绘制到3级DFD3 小组负责人组织完成系统的DFD3 b)设计:完成系统的功能模块设计 每一位小组成员根据需求的DFD3图,完成分配的子功能模块设计,用HIPO 图表征。 每一位小组成员设计分配的子功能模块的接口 每一位小组成员能够完成分配的子功能程序流程的逻辑设计 小组负责人组织完成系统的总体结构集成 c)软件实现: 每一位小组成员完成分配的子功能界面的设计 每一位小组成员完成分配的子功能代码编写 小组负责人在.NET框架下,组织完成系统的实施 d)软件测试: 每一位小组成员完成分配的子功能的单元测试 小组负责人负责组织系统的测试用例,不少于20个,完成测试工作 3)面向对象方法(OOA/D):以UML为主 a)需求分析:分析系统的静态功能和动态行为

软件工程课程设计要求

《软件工程》课程设计 一、目的、要求 通过该课程设计使学生树立起强烈的工程化意识,用工程化思想和方法开发软件,切实体会用软件工程的方法开发系统与一般程序设计方法的不同之处。学生在对所开发的系统进行软件计划、需求分析、设计的基础上,实现并测试实际开发的系统。通过一系列规范化软件文档的编写和系统实现,使学生具备实际软件项目分析、设计、实现和测试的基本能力。 二、主要内容 要求学生掌握软件工程的基本概念、基本方法和基本原理,为将来从事软件的研发和管理奠定基础。每个学生选择一个小型软件项目,题目可参考附录A,也可自行拟定题目,按照软件工程的生命周期,完成软件计划、需求分析、软件设计、编码实现、软件测试及软件维护等软件工程工作,并按要求编写出相应的文档。分别、选用传统的结构化方法和面向对象的方法,开发环境和工具不限。 三、设计成果要求 1.提交软件系统,根据完成情况给分; 2.提交设计报告文档 设计报告将从以下三个方面给分: (1)报告是否规范,符合要求; (2)报告是否完整、工作量大小; (3)文档逻辑性是否合理、语言是否流畅。 四、进度安排 (1)确定选题,进行可行性分析,开发计划 (2)软件需求分析 (3)软件设计 (4)软件实现,测试计划 (5)软件实现,测试报告 (6)验收

附录A 课程设计题目 题目一:电子商务网站建设 一个集客户购物、下订单、订单处理、销售统计等功能于一体的系统。通过浏览器,创建账户/登陆账户,让客户可以查询货物,把货物放入购物车,创建订单,通过信用卡支付等。系统划分成了多个模块,松耦合的设计架构,允许可以和多个数据源,EIS(企业信息系统)进行交互。功能如下: 1.用户 注册/登陆/忘记密码/管理个人信息 查询货物 购物车管理 提交订单 信用卡支付 查询历史购物记录 2.货物商店 接受/处理订单消息 手工接受/拒绝订单 用E-mail来通知客户 发订单给供应商 销售统计 3.供应商 接受订单 派送货物给用户 提供一个基于web的库存管理 维护库存数据库 题目二:外文图书采购系统 1.问题概述 某图书馆外文采购有两个组--征订组和验收,登记组。分别承担书籍订购和进书验收任务。为了减轻劳动强度和提高工作效率,打算采用计算机进行管理。为此,系统分析员在进行了调查研究,描述出外文采购室现行系流程。 1)订书组从供书单价收到订书目录,根据各单位的需要选择出要订购的书目。

软件工程课程设计

第一章概述 1.1系统名称 学生宿舍管理系统 1.2开发及运行环境 CPU Intel? Core(TM)i5-4210M 内存4GB 硬盘空间30M以上 输入设备键盘鼠标 操作系统windows 8.0 数据库windows sql server 2005 1.3软件开发计划 2017.12.01-2017.12.04 软件需求分析 2017.12.05-2017.12.09 系统结构设计 2017.12.10-2017.12.15 软件编码及数据 库设计实现 2017.12.16-2017-12.20 软件测试 2017.12.21 软件交付

第二章需求分析 目前,各学校的宿舍管理主要依赖于人工管理,学生宿舍相关的各种信息可以通过宿舍管理系统来集中统一管理,方便的宿舍管理员对宿舍的管理,更有利于宿舍安全以及同学们的健康成长。 2.1 任务概述 宿舍管理系统为了方便管理,尽可能的实现操作简单,易学易用,主要实现以下功能: 1)系统要求用户必须输入正确的用户名和密码才能进入系统; 2)系统应该提供学生住宿情况的基本登记; 3)系统应提供人员来访登记及结束访问的详细登记; 4)系统应提供学生在校期间物品出入宿舍楼的详细情况登记; 5)系统应提供查询功能,以方便用户对学生基本信息的查询(要实现按多种条件的查询)及楼房信息的查询; 6)系统应提供增加、删除、修改用户帐户的功能; 7)增加学生离校的物品管理制度 2.2 宿舍管理系统一层数据流图及数据字典 2.2.1 一层数据流图

图1-1 学生宿舍管理系统一层数据流图 2.2.2 数据字典 以下是图1-1数据流图的数据字典本数据字典主要定义数据4方面内容: 名字:数据元素的名字,作为在数据流图中的标识符, 描述:对名字所代表的数据功能和含义加以描述 定义:对名字所代表的实际构成加以解释 位置:表示数据流的来源 名字:管理员 描述:对宿舍管理系统进行操作的人员

软件工程课程设计要求

软件工程》课程设计 一、目的、要求 通过该课程设计使学生树立起强烈的工程化意识,用工程化思想和方法开发软件,切实体会用软件工程的方法开发系统与一般程序设计方法的不同之处。学生在对所开发的系统进行软件计划、需求分析、设计的基础上,实现并测试实际开发的系统。通过一系列规范化软件文档的编写和系统实现,使学生具备实际软件项目分析、设计、实现和测试的基本能力。 二、主要内容 要求学生掌握软件工程的基本概念、基本方法和基本原理,为将来从事软件的研发和管理奠定基础。每个学生选择一个小型软件项目,题目可参考附录A,也可自行拟定题目,按 照软件工程的生命周期,完成软件计划、需求分析、软件设计、编码实现、软件测试及软件维护等软件工程工作,并按要求编写出相应的文档。分别、选用传统的结构化方法和面向对象的方法,开发环境和工具不限。 三、设计成果要求 1.提交软件系统,根据完成情况给分; 2.提交设计报告文档 设计报告将从以下三个方面给分: (1)报告是否规范,符合要求; (2)报告是否完整、工作量大小; (3)文档逻辑性是否合理、语言是否流畅。 四、进度安排 (1)确定选题,进行可行性分析,开发计划 (2)软件需求分析 (3)软件设计 (4)软件实现,测试计划 (5)软件实现,测试报告 (6)验收

附录A 课程设计题目 题目一:电子商务网站建设 一个集客户购物、下订单、订单处理、销售统计等功能于一体的系统。通过浏览器,创建账户/登陆账户,让客户可以查询货物,把货物放入购物车,创建订单,通过信用卡支付等。系统划分成了多个模块,松耦合的设计架构,允许可以和多个数据源,EIS (企业信息系统)进行交互。功能如下: 1?用户 注册/登陆/忘记密码/管理个人信息 查询货物 购物车管理 提交订单 信用卡支付 查询历史购物记录 2?货物商店 接受/处理订单消息 手工接受/拒绝订单 用E-mail来通知客户 发订单给供应商 销售统计 3.供应商 接受订单 派送货物给用户 提供一个基于web的库存管理 维护库存数据库 题目二:外文图书采购系统 1?问题概述 某图书馆外文采购有两个组--征订组和验收,登记组。分别承担书籍订购和进书验收任务。为了减轻劳动强度和提高工作效率,打算采用计算机进行管理。为此,系统分析员在进行了调查研究,描述出外文采购室现行系流程。 1 )订书组从供书单价收到订书目录,根据各单位的需要选择出要订购的书 目。

软件工程课程设计任务书

《软件工程》课程设计 任务书 一、目的、要求 通过该课程设计要使学生树立起强烈的工程化意识,用工程化思想和方法开发软件。切实体会出用软件工程的方法开发系统与一般程序设计方法的不同之处,学生在对所开发的系统进行软件计划、需求分析、设计的基础上,实现并测试实际开发的系统。通过一系列规范化软件文档的编写和系统实现,使学生具备实际软件项目分析、设计、实现和测试的基本能力。 二、主要内容 要求学生掌握软件工程的基本概念、基本方法和基本原理,为将来从事软件的研发和管理奠定基础。每个学生选择一个小型软件项目(内容参照《计算机综合实践指导》,宋雨等编著,清华大学出版社出版),按照软件工程的生命周期,完成软件计划、需求分析、软件设计、编码实现、软件测试及软件维护等软件工程工作,并按要求编写出相应的文档。具体的方法可以选用传统的软件工程方法或者面向对象的方法,开发环境和工具不限。 三、进度计划 四、设计成果要求 1.至少提交4个文档,包括软件计划、软件需求规格说明书、软件设计说明书、软件测试计划,要求文档格式规范、逻辑性强(可参考《计算机综合实践指导》中给出的要求及格式)、图表规范; 2.独自实现了系统的某些功能,基本达到了要求的性能,经过了测试,基本能运行。 五、考核方式 (1)提交的文档规范,工作量大,文档逻辑性强、正确,按《计算机综合实践指导》标准考核(附《软件工程课程设计》实验报告评分表)占60%(2)系统验收、讲解、答辩占25% (3)考勤占15% 学生姓名:(此处为签名)

指导教师: 2011年6 月17 日《软件工程课程设计》实验报告评分表

(注:素材和资料部分来自网络,供参考。请预览后才下载,期待你的好评与关注!)

软件工程课程设计

项目名称旅行社管理系统专业班级13软件工程2 学号201358231404 201358234072 姓名辜建波肖茗完成日期2015年6月15日 软件工程学院

1 引言 (3) 1.1 编写目的 (3) 1.2 项目背景(任务分工) (3) 1.3 术语定义 (3) 2 软件项目的描述 (3) 2.1 项目目标(问题定义,明确系统的规模和目标) (3) 2.2 系统技术 (3) 2.3 相关概念和处理流程 (3) 3 可行性分析报告 (4) 3.1 经济可行性 (4) 3.2 技术可行性 (4) 3.3 操作可行性 (4) 3.4 运行和法律可行性 (4) 4 软件需求分析 (4) 4.1 确定对系统的综合要求(功能需求、性能需求、可用性需求、出错处理需求、接口 需求、约束条件、将来可能提出的要求) (4) 4.2 分析系统的数据要求(建立数据模型“ER图”、描绘数据结构“层次方框图” ) (5) 4.3 导出系统的逻辑模型(数据流图、实体-联系图、状态转换图、数据字典和主要算 法描述) (8) 5 软件设计 (11) 5.1 体系结构设计(模块划分、每个模块所需的算法和数据结构;模块间的控制关系、 模块之间的接口;程序流程图、PAD图、HIPO图) (11) 5.2 数据设计(数据流设计,需要分清变换流、事务流、混合流;数据对象和数据结 构;数据库的设计) (12) 5.3 接口设计(外部数据接口、系统或设备接口;内部接口设计) (13) 5.4 过程设计(每个模块的处理功能说明、接口描述、设计语言描述、内部设计结构、 注释/约束/限制) (14) 6 软件实现说明 (16) 6.1 编码语言 (16) 6.2 编码风格 (16) 6.3 人机界面设计(一般交互界面、信息显示界面、数据输入界面) (16) 7 软件测试(测试计划和测试分析报告) (27) 7.1 测试计划(单元测试、白盒测试与黑盒测试) (27) 7.2 测试用例 (27) 8 软件手册 (32) 8.1 软件安装手册 (32) 8.2 用户操作手册 (32) 9 项目开发总结报告 (32) 9.1 总结与展望(完成哪些任务与个人感受;未来努力方向) (33) 9.2 主要收获(得意之处、个人创意的实现技巧、核心程序等) (33) 9.3 目前存在的问题 (33) 附录1:源代码清单 (33) 附录2:参考资料 (33)

2014软件工程课程设计任务书

《软件工程》课程设计任务书 一、目的及意义 软件工程课程设计是在学生学习了《软件工程》课程的同时,综合运用所学的知识,设计开发一个小型的实际系统。 要求学生运用软件工程的思想,严格按照软件生命周期各个阶段的目的和任务,完成对系统的定义、设计、编码、运行以及后期的维护。通过对具体系统的设计和开发,使得学生掌握软件工程的基本原理和基本方法,学会用软件工程学的概念、原理、方法开发和维护软件。 二、内容及要求 自拟课题,可以进行相关系统或网站设计(如资源管理系统、网络监控系统、勤工俭学管理系统、个人财务管理系统、大学城二手物品在线交易网站等),然后以项目小组的形式完成项目。 本课程设计要求学生采用“项目小组”的形式,结合具体的开发项目进行设计,对软件生命周期的每一个阶段包括可行性分析、需求分析、概要设计、详细设计、编码、测试等严格按照软件工程规范实施一个具体的案例。具体要求如下: 1.可以选择结构化分析/设计(SA/SD)或面向对象方法(OOA/D) 2.结构化分析/设计(SA/SD) 1)需求分析:分析系统的静态功能和动态行为。每一位小组成员能够描绘分配的子功能需求;每一位小组成员完成分配子功能的数据流图DFD,要求绘制到3级DFD,小组负责人组织完成系统的DFD。 2)设计:完成系统的功能模块设计。每一位小组成员根据需求的DFD图,完成分配的子功能模块设计,用HIPO图表征。每一位小组成员设计分配的子功能模块的接口,每一位小组成员能够完成分配的子功能程序流程的逻辑设计,小组负责人组织完成系统的总体结构集成。 3)软件实现:每一位小组成员完成分配的子功能界面的设计,每一位小组成员完成分配的子功能代码编写,小组负责人在.NET框架下,组织完成系统的实施。 4)软件测试:每一位小组成员完成分配的子功能的单元测试,小组负责人负责组织系统的测试用例,完成测试工作。 3.面向对象方法(OOA/D):以UML为主 1)需求分析:分析系统的静态功能和动态行为。每一位小组成员完成一个用例分

软件工程课程设计

软件工程专业 软件项目实践(认识实习)报告 教学单位软件学院 班级软件13-10 学生姓名 学号 实习时间 6月29日-7月10日 指导教师

1 实习时间2015-6-29至2015-7-10 2 实习目的 1.深入了解企业管理的业务内容及软件应用的特点; 2.加强认识企业软件应用的重要性、紧迫性; 3.深入了解企业软件产品的应用的现状和需求,使我们进一步认识到需要加强 哪些方面的学习; 4.深入了解互联网应用情况,初步掌握互联网的物理结构及组成等基本网络知 识; 3 实习项目及内容 1.实地深入企业调研企业实际的业务管理流程; 2.聘请企业信息中心领导介绍本单位计算机应用情况及今后的发展规划; 3.参观企业局域网,了解计算机网络的硬、软件组成及结构; 4.聘请有关专家结合所参观的局域网,讲授计算机网络的应用知识; 5.聘请有关业务科室的工程技术人员,讲授如何用计算机处理本科室业务及本 科室软件应用情况; 6.引入OJCP考试环境,进一步巩固学生Java程序设计基础; 7.实地去硬件市场进行调研,了解各种硬件的价格、性能等。 3.1 校内实习内容总结 软件产业是典型的知识经济产业,与以往的工业经济产业有很大的不同。未来有可能保持长期稳定高速增长。中国政府推行的信息化建设已使国内计算机硬件市场高速发展,也造就了潜在的软件市场。目前中国软件业的处境是:需求巨大,政策不足。从发展阶段看,中国软件业现在似处于初创期的后期。鉴于软件行业在国民经济中的独特地位,未来中国政府有可能推出对软件行业的优惠政策,并将导至该行业进入扩张期。未来软件行业将以至少30%的平均年增长速度发展。 在各类软件中,国内市场和应用软件(含系统集成)将是中国软件业的主要发展方向。鉴于中国软件行业的高成长率和中等的投资回报率,因此该行业是一个较

软件工程课程设计报告

软件工程课程设计报告样式 山东建筑大学计算机科学与技术学院 课程设计说明书 题目:学校教材订购系统的分析和设计 课程:软件工程 院(部):计算机科学与技术学院 专业:软件测试 班级:软测143 学生姓名:冯岩 学号:20141113088 指导教师:王宜贵 完成日期:

目录 课程设计任务书 (36) 1. 系统概述 (39) 1.1业务流程描述 (39) 1.2 业务流程图..................................................................................... 错误!未定义书签。2.系统需求分析.......................................................................................... 错误!未定义书签。 2.1 系统用例模型.................................................................................. 错误!未定义书签。 2.2 系统类图模型............................................................................ 错误!未定义书签。 2.3 系统顺序图模型........................................................................ 错误!未定义书签。 3. 系统设计.................................................................................................. 错误!未定义书签。 3.1 系统结构设计................................................................................. 错误!未定义书签。 3.2 数据库概念模型设计..................................................................... 错误!未定义书签。 3.3 数据库物理模型设计..................................................................... 错误!未定义书签。 4. 系统详细设计.......................................................................................... 错误!未定义书签。 4.1学校教材订购系统界面设计.......................................................... 错误!未定义书签。 4.2 销售系统处理............................................................................... 错误!未定义书签。 4.3 输入设计....................................................................................... 错误!未定义书签。 4.4 采购系统处理............................................................................... 错误!未定义书签。 4.5 设计............................................................................................... 错误!未定义书签。 4.6 输出设计....................................................................................... 错误!未定义书签。总结 .. (43) 参考文献 (45) 课程设计指导教师评语 (46)

软件工程课程设计报告案例

网上招聘系统分析设计

目录 第一章网上招聘系统需求规格说明书.................... - 3 - 第二章软件项目的概要设计说明书. (16) 第三章网上招聘系统详细设计 (54) 第四章软件项目的编码案例说明 (67) 第五章网上招聘系统客户端系统测试计划 (74) 第六章网上招聘系统客户端系统测试设计 (78) 第八章网上招聘系统客户端系统测试报告 (95)

第一章网上招聘系统需求规格说明书 1.导言 1.1 目的 该文档是关于用户对于网上招聘系统的功能和性能的要求,重点描述了网上招聘系统的功能需求,是概要设计阶段的重要输入。 本文档的预期读者是: ·设计人员; ·开发人员; ·项目管理人员; ·测试人员; ·用户。 1.2 围 该文档是借助于当前系统的逻辑模型导出目标系统的逻辑模型的,解决整个项目系统的“做什么”的问题。在这里,没有涉及开发技术,而主要是通过建立模型的方式来描述用户的需求,为客户、用户、开发方等不同参与方提供一个交流的平台。 1.3 编写说明 HR,Human Resource(人力资源管理)的缩写。 JSP,Java Server Page(Java服务器页面)的缩写,一个脚本化的语言。 UML,Unified Modeling Language(统模语言)的缩写,是一个标准的建模语言。 1.4 术语定义 无 1.5 引用标准 [1]《企业文档格式标准》,****************软件工程过程化组织 [2]《需求规格报告格式标准》,************软件工程过程化组织 1.6 参考资料 [1]《UML说明》,***********************软件 [2]《需求规格报告格式标准》,************公司软件工程过程化组织 1.7 版本更新信息 本文档的更新记录如表A-1所示。 表A-1 版本更新记录 修改编号修改日期修改后版本修改位置修改容概述 001 002 003 004 005 2008.9.5 2006.9.10 2006.9.15 2006.9.16 2006.10.18 0.1 0.2 0.3 0.4 1.0 全部 第3.1节 第4.1节 第5.1节 第7章 初始发布版本 增加 修改 修改 增加 2.系统定义 我们分别阐述一下项目的来源、背景,项目的用户特点和项目的目标。 2.1 项目来源及背景 本项目是为某公司开发的一个网上招聘系统,由于这个公司的规模比较大,需要招聘 的员工也很多,每次招聘总能收到成千上万的简历,如何挑选合适的应聘者常常是公司比较

软件工程课程设计参考题目

参考选题目录一 编号题目 1、医院管理信息系统 2、银行前台业务处理系统 3、企业进销存管理系统 4、图书管理系统 5、企业人事管理系统 6、仓库管理系统 7、家居控制系统 8、在线课件管理系统 9、保健品行业CRM系统 10、驾驶员模拟考试系统 11、来电显示客户管理系统 12、基于B/S结构的BBS系统 13、基于B/S结构的企业办公系统 14、网络求职平台设计与实现 15、基于google地图的在线相册管理系统 16、办公自动化系统 17、电子商城系统 18、基于Struts框架的BBS系统实现 19、通用工资管理系统 20、报刊订阅管理系统 21、志愿服务爱心交易商店 22、大学生心理健康监测与辅导网络平台 23、企业人事管理系统 24、网络选课系统 25、电话计费管理系统 26、卡拉OK点歌系统 27、网上学习系统 28、邮件接收与发送系统 29、学生选课系统 30、网上购物系统 31、网上商城 32、航空票务管理系统 33、车站售票管理系统 34、在线作业系统 35、网络文件系统 36、网络物流系统 37、学习交流与资源管理系统 38、题库系统 39、商户收单服务系统 40、多功能图片收藏及管理系统

41、美术馆信息管理系统 42、汽车配件进销存管理系统 43、药品进销存管理系统 44、在线考试系统 45、新闻管理系统 46、企业销售管理系统 选题参考目录二 编号题目 1 住院收费信息管理系统 2 客户跟踪管理系统 3 学生学籍信息管理系统 4 通讯录管理器 5 客户信息管理系统 6 学生成绩智能管理信息系统 7 人事管理系统 8 物资管理系统 9 员工培训管理系统 10 酒店管理系统 11 汽车租借信息系统 12 美术馆管理系统 13 企业工资管理系统 14 产品质量管理系统 15 宾馆管理系统 16 图书借阅管理系统 17 高职学院教学管理系统 18 火车卧铺订票管理系统 19 银行帐户管理系统 20 书刊租借信息管理系统 21 选修课管理系统 22 商品交易系统 23 学生缴费注册管理系统 24 干部档案管理系统 25 物资管理系统 26 高校科研管理系统 27 教职工管理系统 28 房产销售管理系统 29 毕业生管理系统

软件工程课程设计

软件工程课程设计 题目固定资产管理系统学院数学与信息工程学院专业计算计科学与技术班级计科学051 学号200332225232 学生姓名方明 同组成员李亮 指导教师魏远旺

目录 一、可行性报告┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉1 二、需求说明书┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉3 三、总体设计说明书┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉5 四、详细设计说明书┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉13 五、程序源代码┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉24 六、课程设计体会┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉27 七、参考文献┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉27

第一章可行性报告 1.1 固定资产管理概述 1.1.1 固定资产 财政部颁发的于2002年1月1日起施行的《企业会计准则-固定资产》中,是这样对固定资产下定义的:“固定资产,是指同时具有以下特征的有形资产:为生产商品,提供劳务,出租或经营管理而持有的;使用年限超过一年;单位价值较高。”这应该是固定资产的准确定义。 1.1.2 固定资产的具体标准如何确定 判断固定资产的具体标准,主要有两个方面:一是时间标准,二是价值标准。根据《企业会计准则-固定资产》规定:固定资产,是指企业使用期限超过1年的房屋,建筑物,机器,机械,运输工具以及其他与生产,经营有关的设备,器具,工具等。不属于生产经营主要设备的物品,单位价值在2000元人民币以上,并且使用年限超过2年的,也应当作为固定资产。 1.1.3 固定资产如何分类 按其经济用途分类,可以分为生产经营用固定资产和非生产经营用固定资产; 按其所有权划分,可分为自有固定资产和租入固定资产; 按来源渠道划分,可分为外购的固定资产,自行建造的固定资产,接受投资转入的固定资产,接受捐赠的固定资产,以非货币资金换入的固定资产,改建扩建新增的固定资产,盘赢的固定资产,融资租入固定资产; 按使用情况划分,可以分为使用中的固定资产,未使用的固定资产和不需用的固定资产; 按其经济用途和使用情况综合划分,可分为生产经营用固定资产,非生产经营用固定资产,租出固定资产(指经营性租赁),不需用固定资产,未使用固定资产,土地,融资租入固定资产。 1.2 固定资产管理系统可行性分析及开发计划 本项目主要是根据软件工程课程的实践需要,根据固定资产管理的流程,与软件工程的理论相结合,完成本项目的开发。本项目的设计和开发目标是达到软件工程课程理论和实际相结合的目的。 1.2.1 定义: *数据流图

软件工程课程设计

软件工程课程设计

题目:高校课表编排子系统 学院信息工程学院 专业计算机科学与技术 指导教师白娟 1 月 3 日

摘要 教学工作是高校的中心工作,而课表是高校日常教学活动运行的指挥调度表,是高校能否进行正常教学的关键,因此科学的,合理的课表在高校的重要性毋庸置疑。高校教务管理是一向复杂而繁重的工作,课表编排作为其中腰组成部分是长期困扰学校教务管理工作的大问题,计算机排课无疑是必然优势。课表编排是一个涉及多因素约束的,多目标的,结构复杂的典型的组合优化问题,而且已经被证明为一个NP完全类,是典型的组合优化的问题,其问题求解的时间复杂度呈指数函数增长。每个学校在排课表时考虑的因素千差万别,各种约束条件也不尽相同,可是它所涉及的主要实体却具有相对稳定性。 关键字:NP完全类; 约束满足;课表编排;课程设置;

目录 目录 (4) 第一章需求分析说明 (5) 1.1编写目的 (5) 1.2问题定义 (6) 1.3可行性分析 (6) 1.4任务描述 (7) 1.5目标 (7) 1.6运行环境 (7) 1.7功能需求 (7) 1.7.1功能描述 (7) 1.7.2排课约束 (8) 1.7.3操作规程 (8) 第二章概要设计说明 (10) 2.1数据描述与数据库设计 (10) 2.2数据表 (10) 2.2.1E-R图 (11) 2.2.2数据流图部分 (11) 2.3运行需求 (13) 2.3.1硬件 (13) 2.3.2软件 (13)

第三章详细设计说明 (14) 3.1模块的具体算法 (14) 3.1.1登陆模块 (14) 3.1.2管理员模块 (14) 数据库中各表的物理结构 (18) 第四章编码+测试 (20) 4.1登录模块 (20) 4.1.1 管理员模块 (22) 4.1.2教师模块 (26) 4.2测试方案设计 (30) 测试结果分析: (30) 第五章用户使用说明书 (31) 第六章实验总结 (34) 第七章参考文献 (37) 第一章需求分析说明 1.1编写目的 供设计人员、开发人员参考。 为明确软件需求、安排项目规划进度、组织软件开发与测试,撰写本文档。

软件工程课程设计

软件工程课程设计 学生姓名学号200710411 院(系) 信息科学与技术 专业计算机科学与技术 题目网络论坛系统 指导教师曾宇 2010 年06 月

目录 1前言 (1) 1.1 选题背景和意义 (1) 1.2 系统要解决的问题 (1) 2 相关技术及运行环境简介 (1) 2.1 JSP技术简介 (1) 2.2 JAVABEAN技术简介 (2) 2.3 JDBC技术简介 (2) 2.4 TOMCAT技术简介 (3) 2.5 运行环境 (3) 3 需求分析 (3) 3.1 用户功能需求 (4) 3.2 数据需求 (5) 4 系统整体设计 (5) 4.1 系统模块结构设计 (5) 4.2 数据库设计 (9) 4.2.1 E-R图分析 (9) 4.2.1.1 ER模型 (9) 4.2.1.2 联系定义 (15) 4.2.2 数据表设计 (15) 4.3系统流程图 (18) 5 详细设计 (19) 5.1 用户登录模块 (20) 5.2 用户注册模块设计 (21) 5.3 帖子主题模块设计 (22) 5.4 浏览帖子模块设计 (23) 5.5 发表帖子模块设计 (24) 5.6 其他模块设计 (25) 5.6.1查询用户模块 (25) 5.6.2帖子管理模块 (25) 6 系统运行和测试 (25) 6.1 测试运行情况 (25) 6.2 程序有待改进方面 (26) 结论 (27)

1前言 1.1 选题背景和意义 在二十一世纪,地球因为互联网的存在,早已变成一个村落。人们在互联网世界里尽情的遨游,享受着Internet带来的无限乐趣。我们习惯了上网看新闻、去论坛看帖、网上购物、撰写自己的网络日志等等。当然,最离不开的,还是各种搜索引擎,帮我们找到想要的信息。总之,互联网已经成为我们的一种生活方式,一个巨大的知识库。本篇设计论文,围绕如何构建网上论坛系统展开研究。网上论坛系统(BBS)是各种信息交流和传布的场所,它不同于电视报纸等传统的媒体,任何人都可以随便的在BBS上发表自己的言论,不受任何限制。除了可以发表文字信息外可以上传和转贴图片、音乐、Flash,可以选择字号、颜色,还可以选择有趣的表情图案。只要花几分种注册(甚至不需要)你就能畅游BBS,从中得到无穷的乐趣。本系统就是基于以上功能的一个BBS,旨在为广大网民提供了一个交流平台,能够在这里畅所欲言,发表自己的看法、观点,同时能够结交朋友为生活增添乐趣。 1.2 系统要解决的问题 本系统要解决网上论坛(BBS)管理的基本功能:用户注册、用户登录、发表文章、阅读文章、回复文章、分页查找、作者查找、个人资料修改。版主可以添加版块,修改版块,查看版主信息,修改版主信息。管理员可以对帖子进行管理,修改管理员自己的信息。超级管理员可以添加新的管理员以及删除管理员,修改管理员资料,以及对帖子的管理,超级管理员还可以添加版主。在设计过程中要解决了JSP最常见的中文乱码问题,并针对不同平台总结出了处理乱码的方法,为今后系统的移植做了铺垫。在数据库连接方面采用数据库连接池技术,数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个。 2 相关技术及运行环境简介 2.1 JSP技术简介 JSP是服务器端的脚本语言,是以SERVLET为基础开发而成的动态网页生成技术,它的底层实现是JAVA SERVLET。 JSP(JAVA SERVER PAGES)由HTML代码和潜入其中的JAVA代码所组成。服务器在页面被客户端请求以后对这些代码进行处理,然后将生产的HTML页面返回客户端的浏览器。按照脚本语言是服务于某一个子系统的语言这种论述,JSP应当被看作是一种脚本语言。

2008软件工程课程设计任务书-人事管理系统

计算机科学与技术本科专业(05级) 软件开发综合训练任务书 题目:人事管理系统—员工考勤、评估、工资管理子系统 学生姓名:侯志贵班级:计算机4班学号:05240428 题目类型:软件工程(R)指导教师:徐志刚 一、题目简介 该设计要求学生以人事管理业务为背景,对“人事管理系统”软件进行分析和设计。 通过该题目的分析和设计,使学生初步得到软件工程的训练,全面培养软件开发过程中的分析、设计、编码、测试及文档规范书写的能力,得到软件工程的综合训练,提高解决实际问题的能力。 二、设计任务 1、查阅文献资料,一般在5篇以上; 2、针对人事管理系统,锻炼学生的分析、设计能力,培养学生对软件文档规范的书写能力; 3、以人事管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型; 4、完成人事管理系统的软件可行性分析、项目开发计划、需求规格说明、概要设计和详细设计(结构化设计方法和面向对象设计方法可任选一种); 5、在分析和设计的基础上编码完成一个可演示的版本并进行测试; 6、撰写设计说明书;

7、做好答辩工作。 三、主要内容、功能及技术指标 人事管理系统的总体目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,分析和设计一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的人事管理系统,为人事主管部门的决策者和管理者提供充足的信息、快捷的查询和有效的管理方式,减少不必要的损失和浪费,提高人事管理的效率。 1、根据可行性研究的结果和客户的要求,分析现有情况及问题,采用C/S 或B/S结构,将人事管理系统划分为:员工资料管理、人事管理、统计管理、系统设置等。其中: 员工资料管理:可完成员工资料、记录的常用操作; 人事管理:对员工基本资料、奖惩记录、调动记录、培训记录、考评记录及调薪记录进行管理; 统计管理:对员工的资料进行综合信息统计、员工积分统计、人事记录统计、人事信息统计; 系统设置:可以对数据库备份/恢复/初始化,管理操作员,基础资料设置,系统设置,查看用户操作日志等。 2、整个系统可以选择采用2层C/S结构或3层B/S结构。数据库系统可采用Access, SQL Server 2000等,前台开发工具可以选用PowerBuilder或Visual Basic、ASP或JSP等; 3、人事管理系统所涉及的信息有对员工基本资料、奖惩记录、调动记录、

软件工程课程设计方案

软件工程课程设计方案 一、设计的目的 《软件工程》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《软件工程》课程后进行的一次全面的综合练习。本课程设计主要目的在于:①复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识;②为学生适应毕业后团队合作开发规模稍大项目和综合应用本专业所学习的多门课程知识创造实践机会。为学生提供主动学习、积极探索与大胆创新的机会;③使学生通过参加小组团队的开发实践,了解项目管理、团队合作、文档编写、口头与书面表达的重要性;④使每个学生了解软件工具与环境对于项目开发的重要性,并且重点深入掌握好一、两种较新或较流行的软件工具或计算机应用技术、技能;⑤通过“稍大的”富有挑战性的软件实验项目开发实践,为学生提供主动学习、深入实践的机会,并且通过课程设计实践中,提高学生的自学能力、书面与口头表达能力、创造能力和与团队其他成员交往和协作开发软件的能力,提高学生今后参与开发稍大规模实际软件项目和探索未知领域的能力和自信心。 二、参与人员与组织方式 按照专业教学计划的安排,本课程设计要求07级计算机科学与技术专业的所有学生都必须完成,设计采用分组的方式进行,根据选题的不同,每组人数要求不超过指定的人数,两个班级配备两位指导老师进行全程指导。 三、设计内容 课程设计可以网站开发或MIS系统开发为内容,开发工具自选。采用传统的结构化分析与设计方法完成一个软件系统的分析、设计和开发。学生根据自己的具体情况,可以从以下系统中选择一个,也可以自选题目。 设计题目: 网站开发类:每组8人 (一):网上书店My-eBookStore 1 、问题描述: 假设个体书店店主小童委托计算机专业的大学毕业生组成的开发小组(10人)为他创建网上书店系统My-eBookStore,以便能够扩展书店的客户群、科学管理、提高效益。该书店以经营英语、计算机书籍为主。在网上书店建立初期,要求在确保基本功能正常的情况下,尽量简化,并且在2个月内完成。 网站主要提供的基本服务项目有:用户的注册,登录;用户的分级浏览或图书选购;店主对进书、售书、库存、帐目、客户的管理;以及网站的日常维护(比如,

软件工程课程设计报告

软件工程课程设计报告题目:校园小商品交易系统 一、实验题目 (2) 二、实验目的 (2) 三、实验要求 (3) 四、实验内容 (3) 五、系统设计文档 (4) 5.1需求分析 (4) 5.1.1对系统综合要求 (4)

5.1.2系统的数据要求 (4) 5.2总体设计 (5) 5.2.1系统总体用例图 (5) 5.2.2商品管理用例图 (5) 5.2.3用户信息用例图 (6) 5.2.4商品交易用例图 (6) 5.3详细设计 (6) 5.3.1系统类图以及类之间关系图 (6) 5.3.2由需求分析阶段以及类之间关系的设计分析可以得到系统 对应事件流 (7) 5.3.3系统数据库表 (11) 5.3.4系统组件图 (11) 5.3.5系统部署图 (12) 六、心得体会 (13) 一、实验题目 校园小商品交易系统 二、实验目的 通过这次课程设计,要掌握UML(统一建模语言),并能运用UML在Rational Rose中建模。熟练掌握软件工程面向对象建模的总体方法。

三、实验要求 1.一人一组。 2.熟悉Rose开发环境。 3.掌握UML的基本模型元素(如角色、用例、类等)。 4.熟悉UML,主要了解UML中的9大图:Use case diagram(用例图)、Class diagram(类图)、Object diagram(对象图,Rose中没有)、Sequence diagram(序列图)、Collaboration diagram(协作图)、Statechart diagram(状态图)、Activity diagram(活动图)、Component diagram(组件图)、Deployment diagram(配置图)。 5.完成对系统的建模。 6.周五上机检查,并提交设计报告。 7.集中上机时间不能迟到、早退。 8.请自觉维护实验室清洁,爱护实验设备。 四、实验内容 运用UML统一建模语言建立一个校园小商品交易系统。开发软件为ROSE,最后转换为VB代码。该系统主要的基本要求和功能如下: 包含三类用户:管理员、商品发布者、普通用户、访客。 (1)向管理员提供以下功能:自身密码修改,其他用户添加删除,用户信息修改、统计。商品信息添加、修改、删除、查找、统计。 (2)向商品发布者提供以下功能:注册、登陆、注销、自身密码修改、自身信息修改。商品信息发布,自身商品信息统计。查找浏览其他商品。 (3)向一般用户提供以下功能:商品浏览、查找、获知商家联系方式,定购商品。 (4)向访客提供以下功能:商品浏览、查找、获知商家联系方式。

软件工程课程设计报告

(此文档为word格式,下载后您可任意编辑修改!) 目录 1 问题定义 ................................................................................................................................................... 2 可行性研究 ............................................................................................................................................... 2.1 系统流程图 .................................................................................................................................... 2.2 高层数据流图 ................................................................................................................................ 2.3 可行性分析 .................................................................................................................................... 2.3.1 技术可行性 ......................................................................................................................... 2.3.2 操作可行性 ......................................................................................................................... 2.3.3 经济可行性 ......................................................................................................................... 2.4 开发计划 ........................................................................................................................................ 3 需求分析 ................................................................................................................................................... 3.1 ER图............................................................................................................................................... 3.2 细化的数据流图 ............................................................................................................................ 3.3 数据字典 ........................................................................................................................................ 3.4 状态转换图 .................................................................................................................................... 4 概要设计 ................................................................................................................................................... 4.1 系统层次图 .................................................................................................................................... 4.2 IPO表 ............................................................................................................................................. 4.3 数据库设计 .................................................................................................................................... 5 详细设计 ................................................................................................................................................... 5.1 人机界面设计 ................................................................................................................................ 5.2 过程设计 ........................................................................................................................................ 5.2.1 修改员工信息模块代码 ..................................................................................................... 5.2.2 显示员工信息模块代码 ..................................................................................................... 6 测试报告 ................................................................................................................................................... 6.1 修改员工信息模块 ........................................................................................................................ 6.2 显示员工信息模块 ........................................................................................................................ 7 总结 ...........................................................................................................................................................参考文献 .......................................................................................................................................................

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