软件工程课程设计方案Socket聊天系统

软件工程课程设计方案Socket聊天系统
软件工程课程设计方案Socket聊天系统

目录

1.前言 (1)

2.需求分析 (2)

2.1系统的功能需求 (2)

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

2.2非功能需求: (2)

................................................................................................................................... 错误!未定义书签。

2.3用例分析 (2)

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

3.总体设计 (3)

3.1TCP服务器设置 (3)

3.2分析类图 (4)

3.3顺序图 (5)

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

3.3协作图 (5)

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

4.详细设计 (5)

4.1客户端设计 (5)

4.2服务端设计 (6)

4.3多线程设计 (6)

5.代码实现 (7)

5.1服务端设计 (7)

5.2客户端设计 (9)

5.3多线程 (12)

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

6.运行与测试................................................................................................................... 错误!未定义书签。

6.1用户登录界面 (15)

6.2输入端口界面 (15)

6.3服务器记录,在线的用户信息。 (15)

6.4私聊 (15)

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。

6.5群聊 (15)

................................................................................................................................... 错误!未定义书签。

................................................................................................................................... 错误!未定义书签。.......................................................................................................................................... 错误!未定义书签。

7. 小结 (15)

8.参考文献 (16)

1.前言

随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java 语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统

本文通过java的Socket实现了一个基于局域网和网络的聊天室的程序的开发---基于java的C/S模式网络聊天室的设计与实现。

C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过

它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。

关键词:聊天客户端信息服务器端Java C/S聊天系统

2.需求分析

2.1系统的功能需求

,进行信息的传送,实现彼此的聊天,这也是本系统最基本的功能。

,实现通讯的多元化,进行文件的传输。是通讯双方可以选择传送对方想获得的资料。

2.2非功能需求:

,对经典的聊天程序的界面进行了学习和借鉴,模仿他们的界面和常用的操作。

加密

解密

为了提高传输的安全性,进行加密操作。及时在网络上被别人了窃听消息,也不能得到原始信息,防止个人重要信息和隐私信息被盗。

2.3用例分析

本系统显而易见的两个参与者:用户和管理员。

从上面的需求里进行抽象和提取关键信息,在确定系统边界的情况下,选择最基本的用例,然后对用例进行描述和细化。使其能完全的描述系统的功能性需求。

通过对参与者和用例的分析,确定他们的关系(包括参与者和参与者的关系,参与者和用例的关系,用例之间的关系。)其中用例之间的关系是分析中的重点,如图私聊和群聊都有socket聊天的模块,所以可以确定的是包含关系。管理个人信息,包含了分组管理和用户信息管理,其中分组管理和用户信息管理,是个人信息管理的子集,所以应该是泛化关系。在文件传输的时候,可能会产生信息的丢失,导致信息不完整,接收方不能完整收到发送方的消息,所以导致发送方重发信息。所以这是

扩展关系,因为只有在传输文件失败的时候,才能启用重传文件的模块。

用户所参与的模块首先应该登录,在登录系统后,可以私聊和群聊来交流信息。用户可以管理自己的信息进行修改自己的信息和管理自己的分组。为了丰富系统的功能我,我们还特意实现了点歌功,和传输文件吸引用户的眼光。

3.总体设计

3.1TCP服务器设置

在T C P / I P协议族中,有两个互不相同的传输协议: T C P(传输控制协议)和U D P(用户数据报协议)。T C P为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面, U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。

3.2分析类图

(系统整齐的分析类图)

没有类是单独存在的,通常和别的类协作,创造比单独工作更大的语义。因此,除了捕获系统的词汇以外,还要将注意力集中到这些类是如何在一起工作的。使用类图来表达这种协作。确定你建模的机制。机制代表了部分你建模的系统的一些功能和行为,这些功能和行为是一组类、接口和其他事物相互作用的结果。对于每个机制,确定类、接口和其他的参与这个协作的协作。同时确定这些事物之间的关系。

用场景来预排这些事物,沿着这条路你将发现模型中忽略的部分和定义错误的部分。确定用这些事物的内容来填充它们。对于类,开始于获得一个责任(类的职责),然后,将它转化为具体的属性和方法。 Bind() Socket()

Readfrom()

等待客户请求 处理服务请求 Sendto() Close() Socket()

Bind()

Sendto()

Readfrom()

Close()

服务请求

服务应答

服务器

客户机

服务器和客户机通讯流程

3.3顺序图

用户在进入系统前首先要输入彼此通讯的端口号,由于客户机和服务器都是本机所以不需要寻找IP地址,然后输入用户名新建一个用户,由于没有保存历史记录功能,所以每次进入系统前都需要新建一个用户。然后输入用户名和密码,在确认用户和密码。登陆成功,选择在线可以聊天的好友,输入信息然后发送,达到和好友的交流。

3.3协作图

强调的是发送和接收消息的对象之间的组织结构。一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。对象通常是命名或匿名的类的实例,也可以代表其他事物的实例。

用户在登录系统后,进入登陆界面,在界面的好友框里,选择要传送文件的好友,点击传送文件的按钮,会弹出选择文件的对话框,在对话框里查找你所在的文件系统中你要传送的文件。然后点击传送。

4.详细设计

4.1客户端设计

一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有很多个服务器端。客服端要具有实现用户注册和用户登陆,在登陆成功后,要显示出公聊界面,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现一对一的私聊功能。

在服务器端可以实现不断的监听客服的连接,并且根据客户端发送过来的不同信息如注册信息,登录信息,公聊信息,私聊信息,退出信息等,服务器端要做出不同的响应,并且要实现数据库的操作,如根据用户注册的信息保存数据库中,根据登录时发送来的用户名和密码检测是否合法用户等。经为每一个连接着的客户端建立了一个线程,这个线程好比一根电话线一直等待客户端说话,而信息发送中心就相当于一个总台,一旦有人打电话进来,就通过电话线把信息传完成了服务器端的第一个的任务,那么第二个任务也就不难解决了。上面已送到总台,再由总台根据需要将这个信息发送给

接收群。这样就意味着,服务器每接受一条信息,就要调用一次信息发送中心的方法,并将这条信息发送到所有客户端(或者特定的某个/某几个客户端)。

电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。侦听服务器发送的连接请求,有请求就接收发来的信息,并通过短信猫发出去

单的说,服务器端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据等等.客户端可以是任意的一台电脑,只要它和服务器端存在连接,并且得到了服务器端的授权,就可以使用服务器端的服务.象现在就可以理解为百度的网站是服务器端,我们现在使用的电脑就是客户端.我们可以使用它的服务.

4.2服务端设计

由于客户端需要同时能够接收信息以及发送信息,所以也必须利用多个线程来实现。主线程用于接收用户输入的内容并将之发送到服务器端,而一个后台线程将一直接收来自服务器端的信息,并将之返回给客户端的用户。

客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。

不过客户端及伺服端的关系不见得一定建立在两台分开的机器上,同一台机器中也有这种主从关系的存在。提供服务的伺服端及接受服务的客户端也有可能都在同一台机器上,例如我们在提供网页的服务器上执行浏览器浏览本机所提供的网页,这样在同一台机器上就同时扮演伺服端及客户端。

4.3多线程设计

为了能实现一对多的通话聊天也就是说间接的多对多的聊天的功能,所以必须在客户端配置和服务端配置的时候。实现多线程的功能。实现程序的并发。以及可以减少创建进程是CPU的资源浪费。和服务区负荷太重。

多线程在客户端可以实现,用户进行群聊,以及接受多个好友的响应信息。在服务端可以减少创

建进程的开销。

在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是用户界面。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。

使用线程可以把占据时间长的程序中的任务放到后台去处理用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。

但是如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换。更多的线程需要更多的内存空间。线程可能会给程序带来更多“bug”,因此要小心使用。线程的中止需要考虑其对程序运行的影响。通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。

5.代码实现

5.1服务端设计

public class ServerFrame extends JFrame {

private JPanel contentPane;

private JTextField txtPort;

private JLabel lblState;

private JTextArea txtAllUsers;

// 集合:用来保存所有登录的用户

private List allLoginUser = null;

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

ServerFrame frame = new ServerFrame();

// 禁止用户更改窗体的大小

frame.setResizable(false);

// 距中

frame.setLocationRelativeTo(null);

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

public ServerFrame() {

allLoginUser = new ArrayList();

initComponet();

}

public List getAllLoginUser() {

return allLoginUser;

}

public void setAllLoginUser(List allLoginUser) { this.allLoginUser = allLoginUser;

}

private void initComponet() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 449, 506);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);

JPanel panel = new JPanel();

panel.setBorder(new TitledBorder(UIManager

.getBorder("TitledBorder.border"),

"\u670D\u52A1\u5668\u4FE1\u606F", TitledBorder.LEADING,

TitledBorder.TOP, null, new Color(0, 70, 213)));

panel.setBounds(10, 10, 421, 143);

contentPane.add(panel);

panel.setLayout(null);

JLabel label = new JLabel("\u670D\u52A1\u5668\u72B6\u6001\uFF1A");

label.setBounds(48, 38, 81, 23);

panel.add(label);

lblState = new JLabel("New label");

lblState.setBounds(161, 42, 110, 15);

panel.add(lblState);

JLabel label_1 = new JLabel("\u670D\u52A1\u5668\u7AEF\u53E3\uFF1A");

label_1.setBounds(48, 87, 81, 15);

panel.add(label_1);

txtPort = new JTextField();

txtPort.setBounds(161, 84, 110, 21);

panel.add(txtPort);

txtPort.setColumns(10);

JButton btnStart = new JButton("\u542F\u52A8\u670D\u52A1\u5668");

btnStart.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

startServer(e);

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

});

btnStart.setBounds(289, 83, 93, 23);

panel.add(btnStart);

JPanel panel_1 = new JPanel();

panel_1.setBorder(new TitledBorder(null,

"\u5DF2\u7ECF\u767B\u5F55\u7684\u7528\u6237",

TitledBorder.LEADING, TitledBorder.TOP, null, null));

panel_1.setBounds(20, 163, 411, 299);

contentPane.add(panel_1);

panel_1.setLayout(new BorderLayout(0, 0));

txtAllUsers = new JTextArea();

panel_1.add(txtAllUsers, BorderLayout.CENTER);

}

public void updateGui() {

;

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

;

"\n");

}

}

protected void startServer(ActionEvent e) throws IOException { // 验证:是否为空的验证

if (CommValidate.isEmpty(txtPort.getText())) {

JOptionPane.showMessageDialog(null, "端口号不能空");

return;

}

// 端口必须是数字

if (!CommValidate.isDigit(txtPort.getText())) {

JOptionPane.showMessageDialog(null, "端口号必须是数字");

return;

}

// 1024之上

// 建立一个监听socket

int port = Integer.parseInt(txtPort.getText());

ServerSocket serverSocket = new ServerSocket(port);

ServerListerenThread serverListeren = new ServerListerenThread( serverSocket, this);

;

;

;// 禁用

}

}

5.2客户端设计

public class ClientLogin extends JFrame {

private JPanel contentPane;

private JTextField txtLoginUser;

private JTextField txtAddress;

private JTextField txtPort;

private Socket socket;

// 登录用户信息

private UserInfo loginUser = null;

public UserInfo getLoginUser() {

return loginUser;

}

public void setLoginUser(UserInfo loginUser) {

this.loginUser = loginUser;

}

public Socket getSocket() {

return socket;

}

public void setSocket(Socket socket) {

this.socket = socket;

}

private ServerSocket serverSocket;

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

ClientLogin frame = new ClientLogin();

frame.setAlwaysOnTop(true);

frame.setResizable(false);

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

public ClientLogin() {

initComponet();

}

private void initComponet() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 397, 298);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);

JPanel panel = new JPanel();

panel.setBorder(new TitledBorder(null, "\u7528\u6237\u767B\u5F55", TitledBorder.LEADING, TitledBorder.TOP, null, null));

panel.setBounds(10, 10, 369, 244);

contentPane.add(panel);

panel.setLayout(null);

JLabel label = new JLabel("\u7528\u6237\u540D\uFF1A");

label.setBounds(37, 36, 54, 15);

panel.add(label);

txtLoginUser = new JTextField();

txtLoginUser.setBounds(145, 33, 140, 21);

panel.add(txtLoginUser);

txtLoginUser.setColumns(10);

JLabel label_1 = new JLabel("\u670D\u52A1\u5668\u5730\u5740\uFF1A");

label_1.setBounds(37, 80, 98, 15);

panel.add(label_1);

txtAddress = new JTextField();

txtAddress.setText("localhost");

txtAddress.setBounds(145, 77, 140, 21);

panel.add(txtAddress);

txtAddress.setColumns(10);

JLabel label_2 = new JLabel("\u7AEF\u53E3\u53F7\uFF1A");

label_2.setBounds(37, 120, 54, 15);

panel.add(label_2);

txtPort = new JTextField();

txtPort.setText("5555");

txtPort.setBounds(145, 117, 140, 21);

panel.add(txtPort);

txtPort.setColumns(10);

JButton btnLogin = new JButton("\u767B\u5F55");

btnLogin.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

login(e);

} catch (UnknownHostException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

} catch (IOException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

} catch (ClassNotFoundException e3) {

// TODO Auto-generated catch block

e3.printStackTrace();

}

}

});

btnLogin.setBounds(69, 164, 93, 23);

panel.add(btnLogin);

JButton btnReset = new JButton("\u91CD\u7F6E");

btnReset.setBounds(192, 164, 93, 23);

panel.add(btnReset);

}

protected void login(ActionEvent e) throws IOException,

ClassNotFoundException {

// 验证

// 得到GUI界面上的数据

String userName = ;

String serverAddress = ;

int serverPort = Integer.parseInt(;

NormalClass.serverAddress = serverAddress;

NormalClass.sererPort = serverPort;

// 创建一个登录用户

String clientIP = NormalClass.splitIp(InetAddress.getLocalHost() .toString());

int clientPort = NormalClass.randomPort();

loginUser = new UserInfo(userName, null, clientIP, clientPort);

loginUser.setImageIndex((int) (Math.random() * 10));

// 向服务器建立一个连接: 请求

Socket socket = new Socket(serverAddress, serverPort);

// 发送数据:构建一个数据包

DataPacket dataPacket = new DataPacket(ICommands.LOGIN, loginUser, null, new Date(), null);

OutputStream out = socket.getOutputStream();

ObjectOutputStream objOut = new ObjectOutputStream(out);

objOut.writeObject(dataPacket);

// 等待服务器的响应

InputStream in = socket.getInputStream();

ObjectInputStream objIn = new ObjectInputStream(in);

dataPacket = (DataPacket) objIn.readObject();

if (dataPacket.getCommand().equals(ICommands.LOGIN_SUCCESS)) { ClientChat chat = new ClientChat(this);

chat.setTitle( + "登录了");

chat.setVisible(true);

this.setVisible(false);

}

objIn.close();

objOut.close();

socket.close();

}

}

5.3多线程

public ServerChatThread(Socket socket, ServerFrame frame) {

this.socket = socket;

this.frame = frame;

this.start();

}

public void run() {

// 接收用户传过来的数据包

try {

inputStream = ;

objIn = new ObjectInputStream(inputStream);

DataPacket dataPacket = (DataPacket) ;

// 用户要干什么?

String command = dataPacket.getCommand();

if (command.equals(ICommands.LOGIN)) {

// 表示用户要登录

UserInfo loginUser = dataPacket.getFromUserInfo();

// 身份验证 (略)保存用户的唯一性

// 保存登录的用户

;

// 更新用户的最新信息

;

// 发送一个信息过去

dataPacket.setCommand(ICommands.LOGIN_SUCCESS);

dataPacket.setFromUserInfo(null);

dataPacket.setToUserInfo(loginUser);

this.outPutStream = ;

this.objOut = new ObjectOutputStream(this.outPutStream);

;

// 向每个登录的用户发送最新的登录用户的集合

sendAllUserInfo();

} else if (command.equals(ICommands.CLOSE_CLIENT_WINDOW)) { // 用户要关闭了

UserInfo unLoginUser = dataPacket.getFromUserInfo();

;

;

// 给客户

dataPacket.setCommand(ICommands.CLOSE_CLIENT_WINDOW_SUCCESS);

this.outPutStream = ;

this.objOut = new ObjectOutputStream(this.outPutStream);

;

// 把最新的信息告诉客户

sendAllUserInfo();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

;

;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

private void sendAllUserInfo() {

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

UserInfo user = ;

OutputStream out = null;

ObjectOutputStream objO = null;

// 和每个用户都建立连接

try {

Socket socket = new Socket(user.getClientAddress(), user

.getClientPort());

DataPacket dataPacket = new DataPacket(https://www.360docs.net/doc/2b1015870.html,ER_LIST,

null, user, new Date(), ;

out = socket.getOutputStream();

objO = new ObjectOutputStream(out);

objO.writeObject(dataPacket);

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

objO.close();

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

public class ClientListerenThread extends Thread {

private ServerSocket servrSocket;

private ClientChat frame;

public ClientListerenThread(ServerSocket servrSocket, ClientChat frame) { this.servrSocket = servrSocket;

this.frame = frame;

this.start();

}

public void run() {

while (true) {

try {

Socket socket = ;

ClientChatThread chat = new ClientChatThread(this.frame, socket);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

6.运行与测试

6.1用户登录界面

6.2输入端口界面

聊天的双方必须要有统一的端口号。

6.3服务器记录,在线的用户信息。

6.4私聊

6.5群聊

7.小结

从接触到计算机我就对网络比较感兴趣,然后今年又主修了计算机网络,所以在这次选题的时候我就毫不犹豫选择了基于socket的网络聊天系统。

很荣幸的是这此课程设计我们是以我们的寝室为小组,个人认为这样的分组有利于交流,和分工以及彼此互相监督。我们的分工明确,小组成员彭蛟龙由于在尚学堂机构参加培训,编程能力比较扎实,所以主要负责编码工作(尤其是难点:服务器的配置);小组成员陈亚雄爱好PS和视频制作,负责程序页面前端的设计,页面的优化以及文档的制作;小组成员周小庆擅长管理和爱好钻研算法,主要负责服务器客户端的编写,整个程序设计的工作流程管理尤其是他提出采用加密解密来提高传输的可靠性,是本次课程设计的亮点也是难点之一;我在本次课程中我主要担任系统分析的任务,由于曾经备考过系分考试,所以这次也是自己理论联系实际的一个锻炼机会。由于这此我们分工明确所以自我感觉彼此的任务量都不是很大。

由于时间比较紧还有一些技术掌握的不是很好,所以系统需求分析提相互的一些功能没有完全实现,但是最基础的功能,私聊和群聊都有很好的实现。

这次课程设计我们犯了一些以往的编程经常犯的弊端,刚开始对于需求分析不是很在乎,上来就编写代码,在老师的提醒下,我们提高了对需求分析重要性的认识,在经过一起讨论后对于需求分析明确后,运用了UML建模技术用Rational Rose 对系统进行了用例建模,静态建模(主要有类图),动态建模(主要包括序列图和协作图)。对模块进行了划分。对程序以后的扩展和一些非功能性需求

进行了讨论和探讨。

JA V A网络编程课程设计,让我有很多的收获与体会。在整个课程设计的过程中,我对JA V A网络编程的相关知识有了进一步的了解和掌握。我对软件开发有了更深刻的认识,认识到了建模和需求分析的重要性,软件开发最重要的不是编码。在完成设计的过程中,我查阅了不少资料,提高了自己动手的能力以及解决问题的能力,也增加了寝室之间舍友的关系。

8.参考文献

Java编程思想(Thinking in Java)原书第四版 Brunce Eckle著

计算机网络(第五版)谢希仁著

Java核心技术(卷1:基础知识)原书第八版 Cay S.HOratman Gary Cornell著

Java核心技术(卷1:高级特性)原书第八版 Cay S.HOratman Gary Cornell著

软件工程导论(第五版)张海潘著

软件工程课程设计

软件工程课程设计 题目:网上购物系统 专业:计算机科学与技术 班级:04计算机(4)班 组员:孔兵兵:0412002426 冷晓林:0412002419 郭伟:0412002425 谌小仲:0412002422 李佩:0412002429

目录 需求分析……………………………………………………….孔兵兵 1.1编写目的 1.2开发背景 1.3项目提出原因 1.4系统设计目标 1.5项目构想 1.6 系统功能 1.7项目名称 1.8需求分析 1.9所运用的知识点 概要设计…………………………………………………………冷晓林 2.1:购物系统的功能 2.2:功能图 2.2.1:购物车流程图 2.2.2:定单处理流程图 2.2.3/:商品分类管理流程图 2.3:管理员实现的功能 2.4:顾客实现的功能 2.5:实现中的问题与难点 详细设计…………………………………………………………郭伟 3.1:商品的信息 3.2:商品的类别 3.3:订单 3.5:订单明细 3.6:对概要设计中问题的解决方法 编码………………………………………………………..谌小仲测试………………………………………………………..李佩

网上购物系统 1网上购物系统需求分析说明 1.1编写目的 本文档是针对网上购物系统从总体设计、设备配置、设备配置等方面所做的说明。 本文档的编写目的是:对网上购物系统的总体架构设计进行描述。 对该系统的整个流程作详细、准确的描述,为系统的概要设计及编码提供指导。 1.2开发背景 随着计算机和网络的日趋普及,越来越多的商家在网上升起商店,向消费者展示出一片新鲜的购物大地。在美、日等信息化程度较高的国家和地区,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特,家庭仓储等纷纷脐身于网络经商的行列。调查表明:美国的家庭已越来越习惯于在家中从网上购物。 在我国,网上购物从无到有也不过短短几年时间。网上购物还不完善,结算方式的原始落后是网上购物致命的弱点。大部分商家结算只能采取“送货上门、到货付款”或“邮寄上门、贷款邮资先付”的方式。这样不但浪费了时间和人力,而且限制了网络的覆盖范围和商品的结构种类。因此,安全、快捷、方便的电子支付手段将是今后网上商店健康发展的主要要素。 1.3 项目提出原因 为了对所学知识(软件工程)做一个全面的考查,加深对软件工程思想的理解和提高个人的实践能力,赵岚老师要求我们用所学的知识完成一个实际的项目(系统)。 1.4系统设计目标 网上购物系统以解决客户在网上进行电子交易的需求为出发点构思。因此在建立与消费者之间交流信息和进行电子交易方面在行业中具有示范作用,在系统总体规划中,应把握先进性、安全性、可扩展性和集成性四项基本原则。 (1)先进性原则 设计方案立足先进技术。在服务器和网络方面以优化通信流量,提高系统的管理性和安全性为重点,尽量采用领先成熟的技术。 (2)安全性原则 网上购物系统要解决的安全问题包括非授权使用、非法入侵、服务失效、不可否认和交易信息泄漏。系统采用防火墙技术,隔离Internet,一方面可以防范公用网上非法用户的访问,另一方面可以防止中心的一些重要数据被不合法用户

软件工程课程设计报告人事管理系统

软件工程课程设计报告人事管理系统

软件工程课程设计 题目人事管理系统 系计算机系 专业班级软件工程(动画方向)(2)班 学生姓名贾秋洪 学号 2358069 指导教师姜青山 年 6 月 18 日 1.课程题目 人事管理系统设计 2.概述 2.1本课题的来源 A公司是一家以寿险营销为目的的寿险公司,公司员工众多业务流量大,为了方便管理,我制作了一个人事管理系统。主要经

过员工基本信息录入、修改、查询、删除以及员工考勤等方面来对员工综合考评。以便对员工发放工资进行合理分配。这样能提高领导的人事管理水平还能提高员工的积极性。经过现代计算机技术与企业管理相结合,实现人事管理系统的科学化、信息化、现代化,而且适合一般人群使用。 企业人事管理是相对企业内部员工的管理。集人员、考勤、工资、员工培训、系统功能等于一体的大型管理系统,为公司在人事管理等方面提供极大的方便。本软件是以中小型企业为背景而设计开发的,界面美观、使用方便。本系统主要以人员管理、考勤管理、统计分析管理、工资核算等,是企业人事管理必不可缺的好帮手。 2.2本课题目的、实现功能与预期成果 2.2.1目的 当前市面上流行的人事管理系统不少。可是,对于A公司来说,不需要大型的数据库系统。只需要一个操作方便,功能实用,能满足本中心对数据的管理及需求的系统。我们的目标就是在于开发一个功能实用、操作方便,简单明了的人事管理系统。 2.2.2实现功能 能够录入人事的基本资料,在操作上能够完成诸如添加、修改、删除、按各种条件进行查询、新用户的设置及密码修改等方

面的工作,基本满足人事日常业务的需要。 2.2.3预期成果 所做出的人事管理系统能让A公司管理层在操作简单的前提下并有效的提高对该公司的人事管理,并经过该系统提高员工的能力。尽量使本系统做到是一个科学化、信息化、简单使用的人事管理系统。 3.系统分析 3.1系统调研 正式开发管理信息系统之前进行调研是非常必要的,必要对现行系统进行详细的调查,明确用户需求,保证开发的新系统的功能与用户的要求相吻合,避免耗费大量的人力、物力、财力,新系统的开发却失败的悲剧发生。 3.2可行性分析概述 可行性分析是在A公司的要求和系统调研的基础上进行的,对新系统的开发从社会、技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。 可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。 可行性分析阶段的主要工作包括以下几个方面:

东方明珠施工项目设计方案

明珠施工项目设计方案 一、编制依据 1、文件:本工程招标文件。 2、图纸: 本工程设计图纸。 3、颁布的法律、法规及其他相关规定 <1>《中华人民国建筑法》 <2>《中华人民国环境保护法》 <3>《中华人民国招投标法》 <4>《中华人民国合同法》 <5>《工程建设标准强制性条文》 4、国家颁布的规,规程及行业标准 <1>建筑地基基础工程施工质量验收规 GB50202-2002 <2>建筑基坑支护技术规 JGJ120-99 <3>地下防水工程质量验收规 GB50208-2002 <4>混凝土结构工程施工质量验收规 GB50204-2002 <5>砌体工程施工质量验收规 GB50203-2002 <6>屋面工程施工质量验收规 GB50207-2002 <7>建筑地面工程施工质量验收规 GB50209-2002 <8>建筑装饰装修工程质量验收规 GB50210-2001 <9>建筑防腐蚀工程施工质量验收规 GB50212-91 <10>建筑工程施工质量验收统一标准 GB50300-2001 <11>建筑机械使用安全技术规程 JGJ33-2001

<12>施工现场临时用电安全技术规 JGJ46-88 <13>建筑给水排水及采暖工程施工质量验收规 GB50242-2002 <14>建筑电气工程施工质量验收规 GB50303-2002 二、工程概况 1、工程设计情况: 工程为9#楼为框剪结构二十层,会所框架结构二层,建筑耐久年限为50年,耐火等级二级,抗震设防烈度为七度。 2、结构设计: 本工程基础为筏板基础。 3、给、排水设计 本工程给水管均采用PP—R管热熔连接,排水管选用硬聚氯乙烯排水管(PVC-U)粘接,生活给水管道上的阀门,DN50以下采用截止阀,DN50以上采用闸阀。分户冷水水表采用钢制螺旋式水表。所有角阀均为瓷磁芯快开阀,所有水龙头均为磁芯快开水龙头。连接卫生洁具与冷热水干管的支管均选用耐高压软管。 4、采暖设计 本工程室采暖系统采用地板辐射采暖。 5、电气设计 本工程电气设计包括照明、、综合布线系统及防雷设计,本工程电源设计为埋地引入,三相四线制,电压380/220V,导线敷设,室导线均穿暗管敷设,配电箱、开关箱、插座箱、综合分线箱、有线电视分线箱均选用贴制成品箱.配电箱柜、电线电缆、穿线管等电气产品必须符合国家有关规定要求.本工程

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

西安科技大学 软件工程课程设计报告 题目:图书馆管理系统 班级:软件工程** 学号: ********** 姓名: ******* 2013年1月

目录 1绪论 (1) 2 可行性研究报告 (1) 3 需求规格说明书 (4) 4 总体设计说明书 (7) 5 数据库设计说明书 (8) 6 详细设计说明书 (9) 7 系统实现 (11) 8测试分析报告 (23) 参考文献

1.绪论 1.1 选题目的及意义 随着计算机技术的快速发展,人们对用计算机代替手工管理信息的需求越来越强烈,越来越多的计算机软件如雨后春笋般的应用于人们生产生活的各个领域,为人们提供各种各样的便利。本图书馆管理系统应用软件可以有效地解决高等院校、中小学图书馆由于藏书量增大而带来的管理问题,图书馆管理员可以更好地管理学校图书馆藏书信息,学生可以更方便地享受借书还书的服务,为更有效地学习知识提供有利的保证。 对于我来说,选择这个题目作为课程设计的题目有以下两个原因:一是因为自从上大学以来,每当在图书馆借书的时候,我都会留心观察一下图书馆管理员的那台计算机上显示的内容,久而久之,就对本系统的基本流程越来越了解,做好一个软件的前提是必须对这个软件的功能和原理非常熟悉,相比别的题目,我对这个题目更加了解;二是本学期通过学习Java程序设计和Oracle数据库课程,我觉得这个题目虽然没有那么难(涉及算法的内容很少),但也不是轻而易举就能完成的,所以我想挑战一下自己,看看自己的实现能力到底怎么样,因此决定用面向对象方法学的思想,前台用Java程序设计语言编写界面,访问Oracle数据库中的数据,完成本系统。 1.2 系统概述 本系统通过JDBC-ODBC桥实现前后台数据的联系,基本上实现了一个图书馆管理系统所具备的基本功能,本系统把使用者分为三类:超级管理员、普通管理员、读者,对三种用户分别设计了各自的主界面,以便更好的实现信息的隐藏性,超级管理员可以进行这个系统所有操作;管理员只能执行超级管理员的基本功能,查看自己的信息;读者只能查看自己的信息,对自己当前借书进行挂失和续借两种操作,查询图书馆的藏书。 2.可行性研究报告 2.1 编写目的 本报告编写目的在于研究图书馆管理系统应用软件是否可行,指出本软件开发所使用的方法和手段,并对该软件前景进行分析。 本报告的预期读者是:高等院校、中小学图书馆管理人员、程序设计人员、以及对图书馆管理系统感兴趣的爱好者。 2.2 相关背景 工程名称:图书馆管理应用软件 工程产品名称:高校图书馆管理系统应用软件 工程的组织者:西安科技大学计算机学院软件工程系 产品用户:高校图书馆、中小学图书馆; 产品的生产者:西安科技大学计算机学院软件工程062班袁震; 产品设计者:西安科技大学计算机学院软件工程062班袁震; 2.3 可行性研究的前提 本图书管理系统在功能上要求完成以下基本功能: a).读者、管理员登陆;

软件工程课程设计报告——人事管理系统

软件工程课程设计 题目人事管理系统 系计算机系 专业班级软件工程(动画方向)(2)班 学生姓名贾秋洪 学号20082358069 指导教师姜青山 2010 年6 月18 日 1.课程题目 人事管理系统设计 2.概述 2.1本课题的来源 A公司是一家以寿险营销为目的的寿险公司,公司员工众多业务流量大,为了方便管理,我制作了一个人事管理系统。主要

通过员工基本信息录入、修改、查询、删除以及员工考勤等方面来对员工综合考评。以便对员工发放工资进行合理分配。这样能提高领导的人事管理水平还能提高员工的积极性。通过现代计算机技术与企业管理相结合,实现人事管理系统的科学化、信息化、现代化,并且适合一般人群使用。 企业人事管理是相对企业内部员工的管理。集人员、考勤、工资、员工培训、系统功能等于一体的大型管理系统,为公司在人事管理等方面提供极大的方便。本软件是以中小型企业为背景而设计开发的,界面美观、使用方便。本系统主要以人员管理、考勤管理、统计分析管理、工资核算等,是企业人事管理必不可缺的好帮手。 2.2本课题目的、实现功能与预期成果 2.2.1目的 目前市面上流行的人事管理系统不少。但是,对于A公司来说,不需要大型的数据库系统。只需要一个操作方便,功能实用,能满足本中心对数据的管理及需求的系统。我们的目标就是在于开发一个功能实用、操作方便,简单明了的人事管理系统。 2.2.2实现功能 能够录入人事的基本资料,在操作上能够完成诸如添加、修改、删除、按各种条件进行查询、新用户的设置及密码修改等方

面的工作,基本满足人事日常业务的需要。 2.2.3预期成果 所做出的人事管理系统能让A公司管理层在操作简单的前提下并有效的提高对该公司的人事管理,并通过该系统提高员工的能力。尽量使本系统做到是一个科学化、信息化、简单使用的人事管理系统。 3.系统分析 3.1系统调研 正式开发管理信息系统之前进行调研是非常必要的,必要对现行系统进行详细的调查,明确用户需求,保证开发的新系统的功能与用户的要求相吻合,避免耗费大量的人力、物力、财力,新系统的开发却失败的悲剧发生。 3.2可行性分析概述 可行性分析是在A公司的要求和系统调研的基础上进行的,对新系统的开发从社会、技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。 可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。 可行性分析阶段的主要工作包括以下几个方面:

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

网上招聘系统分析设计

目录 第一章网上招聘系统需求规格说明书.................... - 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.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方面容: 名字:数据元素的名字,作为在数据流图中的标识符, 描述:对名字所代表的数据功能和含义加以描述 定义:对名字所代表的实际构成加以解释 位置:表示数据流的来源 名字:管理员 描述:对宿舍管理系统进行操作的人员

工程机械项目规划方案

工程机械项目 规划方案 规划设计/投资方案/产业运营

工程机械项目规划方案 中国建筑机械设备租赁行业发展仍处于相对初级阶段,国际成熟市场经验来看仍有较大的成长空间。当前中国建筑机械设备租赁消费额占整个工程机械市场需求的比例还不足10%,而海外发达国家则达到80%以上,日本的建筑工程机械租赁率达到了53%。国内房地产发展以及对于基础设施建设政策的倾斜,也会造成工程机械租赁市场产生巨大的潜力。 该工程机械项目计划总投资11276.00万元,其中:固定资产投资7636.36万元,占项目总投资的67.72%;流动资金3639.64万元,占项目总投资的32.28%。 达产年营业收入25086.00万元,总成本费用18995.76万元,税金及附加223.88万元,利润总额6090.24万元,利税总额7154.15万元,税后净利润4567.68万元,达产年纳税总额2586.47万元;达产年投资利润率54.01%,投资利税率63.45%,投资回报率40.51%,全部投资回收期3.97年,提供就业职位458个。 坚持应用先进技术的原则。根据项目承办单位和项目建设地的实际情况,合理制定项目产品方案及工艺路线,在项目产品生产技术设计上充分体现设备的技术先进性、操作安全性。采用先进适用的项目产品生产工艺技术,努力提高项目产品生产装置自动化控制水平,以经济效益为中心,

在采用先进工艺和高效设备的同时,做好项目投资费用的控制工作,以求 实科学的态度进行细致的论证和比较,为投资决策提供可靠的依据。努力 提高项目承办单位的整体技术水平和装备水平,增强企业的整体经济实力,使企业完全进入可持续发展的境地。 ......

软件工程课程设计

软件工程课程设计

题目:高校课表编排子系统 学院信息工程学院 专业计算机科学与技术 指导教师白娟 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编写目的 供设计人员、开发人员参考。 为明确软件需求、安排项目规划进度、组织软件开发与测试,撰写本文档。

软件工程课程设计实验报告

重庆邮电大学 软 件 工 程 课程设计实验报告 ——网上选课系统 姓名:雷雷 学号:08500329 专业:计算机科学与技术班级:0410801 指导老师:邹洋 教室:S331-A 时间:2011-5-30~2011-6-3

一、实验题目:网上选课系统 主要功能描述:系统首先维护校内所有课程的信息;课程分为研究生、本科生;也可以分为必修、选修、辅修。用户以学号和密码登陆,系统显示用户以选的课程、用户有权选但未选的其他课程,并显示具体信息(如学分)。用户选择后,系统根据规则检查用户是否进行正确的选课(如时间冲突、跨专业选课等);如果错误提示用户改,否则修改选课数据库。最后系统应能够向管理员提供查询界面和各类报表,统计每门课的选课情况。 二、实验目的 软件工程课程设计是软件工程专业一个综合性的实践教学环节,其目的在于促进学生复习和巩固计算机软件设计知识,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学软件设计知识和面向对象技术进行综合软件设计,提高学生的综合应用能力。通过这次课程设计,要掌握UML(统一建模语言),并能运用UML在Rational Rose中建模。 三、实验要求 1.一人一组。 2.熟悉Rose开发环境。 3.掌握UML的基本模型元素(如角色、用例、类等)。 4.熟悉UML,主要了解UML中的9大图:Use case diagram(用例图)、Class diagram(类 图)、Sequence diagram(序列图)、Collaboration diagram(协作图)、Statechart diagram(状态图)、Activity diagram(活动图)、Component diagram(组件图)、Deployment diagram(配置图)、datamodel diagram(数据模型图)。 5.进行系统需求分析与系统功能模块设计,绘出系统详细的业务流程图和数据流程图, 建立完整的系统数据库的逻辑模型。 6.完成对系统的建模实现。 7.进行检查,并提交设计报告。 四、实验内容 1、系统的需求分析 学生选课系统主要满足来自两方面的需求,这两个方面分别是学生用户和管理员用户,也即是两类用户角色。 (1)学生用户是主要的需求者,主要需求功能是查询可选课程、查看自己选课情况及进行选课、退课操作等; (2)管理员用户的功能需求较为复杂,包括对学生信息、课程信息进行管理。在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。在课程管理子模块中,实现对课程信息的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除、查看某个课程的详细信息等。 本系统将管理员用户、学生用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看、维护系统中的所有信息,如添加学生,添加课程,修改课程信息等;让学生拥有选课和退选的权限;而修改密码模块的权限每个用户都可拥有,用以修改自己的密码信息。通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。

工程项目设计方案

项目工程设计方案 (一)计算工程量 通常可以利用工程预算中的工程量。工程量计算准确,才能保证劳动力和资源需要量计算的正确和分层分段流水作业的合理组织,故工程必须根据图纸和较为准确的定额资料进行计算。如工程的分层段按流水作业方法施工时,工程量也应相应的分层分段计算。 (二)确定施工方案 如果施工组织总设计已有原则规定,则该项工作的任务就是进一步具体化,否则应全面加以考虑。需要特别加以研究的是主要分部、分项工程的施工方法和施工机械的选择,因为它对整个单位工程的施工具有决定性的作用。具体施工顺序的安排和流水段的划分,也是需要考虑的重点。 (三)组织流水作业,排定施工进度 根据流水作业的基本原理,按照工期要求、工作面的情况、工程结构对分层分段的影响以及其他因素,组织流水作业,决定劳动力和机械的具体需要量以及各工序的作业时间,编制网络计划,并按工作日排出施工进度。 (四)计算各种资源的需要量和确定供应计划 依据采用的劳动定额和工程量及进度可以决定劳动量(以工日为单位)和每日的工人需要量。依据有关定额和工程量及进度,就可以计算确定材料和加工预制品的主要种类和数量及其供应计划。 (五)平衡劳动力、材料物资和施工机械的需要量并修正进度计划 根据对劳动力和材料物资的计算就可绘制出相应的曲线以检查其平衡状况。如果发现有过大的高峰或低谷,即应将进度计划作适当的调整与修改,使其尽可能趋于平衡,以便使劳动力的利用和物资的供应更为合理。 (六)设计施工平面图 施工平面图应使生产要素在空间上的位置合理、互不干扰,能加快施工进度。

二、施工组织设计编制的方法 (一)施工方案的制订原则和内容 1.施工方案制订的原则 (1)制订方案首先必须从实际出发,切实可行,符合现场的实际情况,有实现的可能性。制订方案在资源、技术上提出的要求应该与当时已有的条件或在一定时间能争取到的条件相吻合,否则是不能实现的,因此只有在切实可行的范围内尽量求其先进和快速。 (2)满足合同要求的工期,就是按工期要求投入生产,交付使用,发挥技资效益,这对国民经济的发展具有重大的意义。所以在制订施工方案时,必须保证在竣工时间上符合合同的要求,并能争取提前完成。为此,在施工组织上要统筹安排,均衡施工,在技术上尽可能地采用先进的施工技术、施工工艺、新材料,在管理上采用现代化的管理方法进行动态管理和控制。 (3)确保工程质量和施工安全。工程建设是百年大计,要求质量第一,保证施工安全是社会的要求。因此,在制订方案时应充分考虑工程质量和施工安全,并提出保证工程质量和施工安全的技术组织措施,使方案完全符合技术规范、操作规范和安全规程的要求。 (4)在合同价控制下,尽量降低施工成本,使方案更加经济合理,增加施工生产的盈利。从施工成本的直接费(人工、材料、机具、设备、周转性材料等)和间接费中找出节约的途径,采取措施控制直接消耗,减少非生产人员。 2.施工方案制订的内容 施工方案包括的内容很多,主要有:施工方法的确定、施工机具和设备的选择、施工顺序的安排、科学的施工组织、合理的施工进度、现场的平面布置及各种技术措施。施工方案前两项属于施工技术问题,后四项属于科学施工组织和管理问题。 (1)施工方法的确定:施工方法是施工方案的核心内容,具有决定性作用。施工方法一经确定,机具设备的选择就只能以满足它的要求为基本依据,施工组织也是在这个基础上进行。

软件工程课程设计必备指导书

《软件工程》课程设计指导书 福建农林大学 计算机与信息学院 2010年12月

软件工程课程设计指导书 一、软件工程课程设计指导书适用范围 (3) 二、课程设计基本目的 (4) 三、课程设计选题方案及备选题目 (5) 四、可采用技术简介 (5) 五、课程设计过程与具体要求 (5) 六、角色分工 (8) 七、课程设计交付说明 (10) 八、主要参考文献与网址 (10) 附录A:软件工程课程设计报告格式 (13)

一、软件工程课程设计指导书适用范围 所属课程:软件工程 所属专业:计算机科学与技术、软件工程等 领域方向:软件工程与软件开发实践、网页设计与Web应用、数据库应用与电子商务、Java/.net语言及其应用等等 参考学时:2周或以上 适用学生:学习《软件工程》课程的计算机科学与技术、软件工程等专业的本科生 先修课要求:程序设计、操作系统、数据库等

二、课程设计基本目的 1.通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,比如,软件项目的完整设计与开发过程、结构化技术、快速原型法和面向对象方法等。特别是结构化分析、结构化设计、快速原型开发、面向对象分析与面向对象设计。 2.为学生适应毕业后团队合作开发规模稍大项目和综合应用本专业所学习的多门课程知识(例如,软件工程、程序设计语言、操作系统、数据库、网络编程等)创造实践机会。为学生提供主动学习(比如,对Web网页设计、ASP或ASP交互网页技术、Java 开发环境、商用数据库应用、电子商务、客户机/服务器技术、Visio与Rose软件工具等内容的学习)、积极探索与大胆创新的机会。 3.使学生通过参加小组团队的开发实践,了解项目管理、团队合作、文档编写、口头与书面表达的重要性。 4.使每个学生了解软件工具与环境对于项目开发的重要性,并且重点深入掌握好一、两种较新或较流行的软件工具或计算机应用技术、技能(比如,网页设计技术与常见工具;基于Java(ASP、PHP等)技术的Web编程;软件开发文档编制工具Office、Visio、Rose等;商用数据库Access(或SQL Server、Oracle、MySql等)设计与实现;客户机/服务器结构)。 5.通过“稍大的”富有挑战性的软件实验项目开发实践,为学生提供主动学习(比如,对Web网页设计、ASP或ASP交互网页技术、Java开发环境、商用数据库应用、电子商务、客户机/服务器技术、Visio与Rose软件工具等内容的学习)、深入实践的机会,并且通过课程设计实践中,提高学生的自学能力、书面与口头表达能力、创造能力和与团队其他成员交往和协作开发软件的能力,提高学生今后参与开发稍大规模实际软件项目和探索未知领域的能力和自信心。

软件工程课程设计报告

软件工程课程设计报告题目:校园小商品交易系统 一、实验题目 (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)向访客提供以下功能:商品浏览、查找、获知商家联系方式。

工程项目建设方案设计

目录 一、项目概况 二、项目组织机构 三、项目建设程序办理计划 四、项目设计进度计划 五、项目招标进度计划 六、项目施工进度计划 七、项目资金使用计划 八、项目主要机电设备、装饰装修等材料采购计划 九、项目建设保证措施 一、项目概况 2010年4月12日,滨海新区建交局给建投集团下发津滨建交计[2010]3号“关于开展滨海文化商务中心前期工作的通知”,将滨海新区行政中心的项目暂定名为“滨海文化商务中心”。 1、项目位置和用地面积 滨海文化商务中心位于中央大道以东、东道以南、于家堡安居房以西、紫云中学以北,总用地面积约为30公顷。

2、主要建设容和规模 滨海文化商务中心按照统一规划,分期建设的原则。本项目一期 总建筑面积约为47万平方米,其中地上建筑面积约为29万平方米、地下建筑面积约为18万平方米,由7座建筑和地下车库组成;它们为:商务主楼、培训中心、服务中心、接待中心、会议中心、商务辅楼、公寓。各建筑具体功能和建筑面积如下: 商务主楼(9) 为滨海新区区委、区政府、区人大区政协四套领导班子的办公场所,建筑位于基地北部,座北朝南布置成双“一”字形布局,用连廊相连接,各套班子办公区域分布明确又相互联系,均取得良好朝向,地上建筑面积6.78万平方米,宽度约172米,建筑层数最高9层,立面处理简洁大气,现代明快,该幢建筑为商务中心最主要的建筑,外檐处理以浅色石材为主要装饰面,运用柱廊,檐口等细部的构造处理,以突出历久弥新,庄重典雅的建筑性格。 辅助办公楼(4层)

是辅助商务主楼的会议、办公场所,建筑位于行政办公楼的南侧,建筑面积2.87万平方米,建筑层数为四层。 服务中心(3层) 为滨海新区企业和市民提供工作和生活一站式服务的场所,一、二层设有开放式业务大厅,三层设有接待、办公、会议等项设施,建筑位于行政办公楼的西侧,主入口设置于南侧,方便前来办理业务的企业和市民。建筑面积为3.36万平方米,建筑层数为三层。 职工食堂(3层) 为商务中心提供接待,用餐的场所,设有多类大、小餐厅及接待服务设施,建筑位于行政办公楼的南侧,建筑面积3.09 万平方米,分三层设置。 会议中心(2层) 为大型行政会议场所,建筑位于行政办公楼东侧,建筑面积2.25万平方米,层数为两层,一层设置700人的会议厅和若干个大小会议室,二层为1200人,大会议厅并设200座席的主席台及服务于会议的其它设施。 商务辅楼(6层) 商务辅楼位于基地东侧,分三幢建筑,建筑面积8.2万平方米。主要功能为各委办局办公、会议、接待用地。 公寓2栋(10层、15层) 总建筑面积为6万平米,主要为办公人员住宿用。 地下车库 区域及周边提供停车场所,车库面积为10.4万平米。 二、建设标准 (一)结构设计 本工程属重点设防类(乙类)建筑,按本地区抗震设防烈度7度设计基本加速度0.15g进行抗震设计,按高于本地区设防烈度即8

软件工程课程设计报告完整版

软件工程课程设计报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

软件工程课程设计报告 旅游信息管理系统 姓名: 学号: 专业:软件工程 班级: 14软件工程1班 指导教师: 目录 4. 1系统结构图 4. 2系统登陆流程图 (7) 4. 3系统E-R图 (8)

1.课程设计概述 系统目的 该系统主要建立一个完整的旅游网站,突出旅游特点,有美观的界面设计。主要功能: 1.用户可以对各景点相关交通方式管理与查询、酒店预订、各个景点路程与旅游方式的设计与查询、对个景点所需费用查询。 2.有一定数量旅游景点相关信息可供处理。方便游客了解景区各种相关信息,同时有利与景区管理部门的管理,加强双边的沟通与协作,以提高和改善管理水平,使游客通过对网站的浏览可以对景点有比较真实和丰富的了解,对景点本身做一个比较好的宣传和推广。 系统根据实际情况收集的资料为背景,网站中包括各个景区的基本情况介绍如:交通情况,门票价格和风景图片欣赏等,用户登陆后,都可以浏览站中的所有信息,同时可以通过系统来查询所需要的各种信息,并且可以订购门票和预约酒店以及车辆等。 管理人员登陆系统后,将各种烦琐的管理工作通过网站来管理,用最少的人力和物力提高管理水平,方便发布各种旅游信息,处理游客所遇到的各种问题,及时了解游客对旅游管理部门的意见,通过数据分析可以了解游客的基本情况和不同时期游客的变化情况,提前做出必要的准备工作。 管理人员通过系统处理各个事务,使前台的用户操作方便简单,突出旅游特点,具有美观的界面设计,保证网站安全稳定的运行。 系统任务 旅游网站管理系统主要是用于旅游管理部门和旅游公司,对旅游信息的进行发布和修改以及加强游客进行交流。 本系统是根据旅游行业的这种现状,提出解决问题的一个可行性方法:采用现代化统一的计算机网络系统,实现了旅游管理的网络化,各类信息有序地进行存储,同时采用了权限认证的方式,只有经过了系统权限认证之后,方可

软件工程课程设计 实验报告 房产管理系统

软件工程课程设计报告 房产管理系统 学院:计算机科学与技术学院 班级: 姓名: 指导教师:

实验要求 1.两人一组。 2.熟悉Visio开发环境,认真分析题目。 3.掌握UML的基本模型元素(如角色、用例、类、数据模型等),准确把握 所要开发系统的功能需求,认真完成系统前期的需求分析,绘制出系统的业务流程图。 4.建立完善的角色与用例的关系,绘制出系统的用例图。 5.分析用例为完成业务目标而进行的各项任务或活动及执行顺序,绘制出 用例要求所要进行的活动以及活动间的约束关系的活动图。 6.分析各用例的可能状态及状态间的转移,描述状态变化序列的起点和终 点,绘制出系统的状态图。 7.进行业务流的分析,根据系统所要完成的功能和所要处理的数据,画出 反映系统逻辑模型的数据流程图。 8.通过分析系统的功能要求,抽象出系统的实体类,描述各实体类的属性, 建立各个实体类及它们之间的关联,绘制系统的实体类图。 9.总结分析出系统的各功能模块,绘制系统各子模块的结构图。 10. 模块的结构设计完成后,进行功能模块的界面风格和要求规范的设计, 实现变量命名规范和模块命名规范的设计,根据设计结果撰写各模块说明书 11.进行检查,并提交设计报告。 实验题目:房产管理系统 需求分析 在我国住房管理是一个关系到每个人切身利益的大问题。某大学拟开发一个用计算机进行房产管理的系统,要求系统具有分房、调房、退房和咨询统计等功能。 房产科把用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表系统会拒绝接受;对合法的申请表则根据其类型分别进行处理。 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阈值分数时,按分数高低将申请表插到分房队列的适当位置。每月最后一天进行一次分房活动:从空房文件中读出空房信息(房号、面积、等级、单位面积房租等);把好房优先分配给排在前面的符合该等级住房条件的申请者,从空房文件中删除这个房号的信息,从分房队列中删除该申请者;把此房号的信息和住房信息一起写入住房文件中,输出住房分配单给住户,同时计算房租写入房租文件中。 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中

工程项目实施方案设计(最终版)

工程项目管理 (试行) 实 施 方 案 河北鸿铭建筑工程集团有限公司 二0一四年三月

序言 面对越来越激烈的市场竟争,施工企业工程利润空间不断缩水,企业要想立足市场,提高自身的抗风险能力,只有从狠抓管理入手,工程管理的两条主线是质量控制与成本控制。集团公司成立之初,公司领导高瞻远瞩,坚持“承揽与管理”两手抓的方针,高度重视成本核算工作。在集团公司领导的关注下,在各部门、各项目部及广大业务人员的努力下,使我集团公司的成本管理工作有了初步的开端,但同时我们必须清醒地看到:我们的企业是在改革中诞生,在艰难中起步,各项工作有待规范,在成本管理方面,各职能部门起点不一,业务人员水平参差不齐;宣传培训力度不足,成本核算意识相对薄弱,相关部门、人员对成本控制程序掌握不够熟练。 成本核算是个动态管理过程,是全体员工、施工生产全过程、企业全部职能部门的责任,它涵盖了从企业第一管理者到每一个具体施工的员工的责任,也包括了对企业投标、施工、保修、资金回收等经营管理过程中的各项经济活动的控制,是一个丝丝相连、环环相扣的责任链条,需参建人员全员共同参与。为使工程参建人员更好地掌握责任成本管理办法,特将责任成本管理办法印刷成《工程项目成本管理实施方案》下发至各职能部门,要求全体人员认真学习,熟练掌握涉及到本人工作范围的成本管理内容,使我集团公司成本管理工作形成上下互动、全员努力的良好氛围,推进企业效益规模与经营规模的同步发展。 二 0一四年三月

第一章责任成本管理体制及流程 一、关于责任成本管理 责任成本管理是现代企业管理的一个重要组成部分,是把“责任”和“成本”这两个主题巧妙地结合起来的一种科学的核算形式,宗旨是达到在保证合理工期、设计质量的前提下,以最少的投入换取最大的经济利益,实现企业增效、职工增收的目的。它是一项贯穿施工全过程进行管理的工作,须由全员参加、全方位、全过程实施。 二、责任成本管理的主要特点 1、综合性:责任成本管理集预算管理、定额管理、财务管理、会计核算等管理办法于一体,具有很强的综合管理职能。 2、全员性:责任成本管理涉及的部门多、人员广,需各业务部门的紧密配合。 3、可控性:责任成本管理以成本的可控性来划分责任,以责任的范围来确定职权,以完成的责任预算总额和责任盈亏来兑现经济利益,使得责任主体的责任、职权和利益紧密结合。 4、双向性:责任成本管理的基础是责任预算,而责任预算是单位工程量中数量和单价组成,因此责任成本管理更多的是数量和价格的双向管理。 三、责任成本管理的管理体制 要形成完整的责任成本管理体系,首先须建立健全组织机构,完善管理体制,明确责任分工。根据河北鸿铭建筑工程集团有限公司现有的机制,责任管理体制暂分为三级:

相关文档
最新文档