当前位置:文档之家› 简单邮件客户端设计

简单邮件客户端设计

简单邮件客户端设计
简单邮件客户端设计

《计算机网络》课程设计报告

题目:简单邮件客户端设计

学院:计算机科学与工程学院

专业:软件工程

2012年3月10日

目录

简单邮件客户端设计说明书 (1)

一前言 (1)

二需求分析 (1)

2.1 功能需求 (1)

2.2开发环境工具 (1)

2.3 所需要的知识 (2)

三概要设计 (2)

3.1 邮件系统各功能概述 (2)

3.1.1 JavaMail简介 (2)

3.1.2 设计目标 (3)

3.1.3 系统功能概述 (3)

3.2 邮件管理系统总体设计方案 (4)

3.2.1 系统体系结构 (4)

3.2.2 功能模块 (4)

3.3 系统开发的技术难点和解决方案 (5)

3.3.1 MIME Messsage的解析 (5)

3.3.2 邮件发送 (6)

3.3.3 系统性能问题 (6)

3.4 系统特点 (7)

3.5 系统具体设计 (7)

3.6 关键代码 (11)

3.7 结束语 (20)

简单邮件客户端设计说明书

一前言

随着互联网技术及网络办公化的发展,电子邮件成为人们主要的通信方式之一。越来越多的人开始使用它。而且用它的人数势必会继续增加。虽然,现在已经有很多的邮件收发软件例如著名的FoxMail ,但是对于大多数的非专业的人来说它还是有点难度。因此,我们所设计的基于JavaMail的邮件收发系统就利用JavaMail开发包的高级应用和E-Mail的相关协议开发出这个功能相对简单,但是实用、方便、快捷的邮件收发系统。主要用于帮助用户将邮件发送给SMTP服务器和从POP3邮件服务器读取用户的电子邮件。它集邮件的撰写、发送和接收功能与一体。并且支持附件的发送和接收以及其它一些附加功能的实现。虽然它没有FoxMail那么强大的功能,但是它容易掌握和使用。整个系统功能流畅,从操作简便、界面友好、灵活实用的要求出发,使用户之间的交流能够更加地方便和快捷。

本人结合SMTP以及POP3协议的实现原理、相关JavaMail API帮助文档以及相关参考书,实现了一个工作在PC下的邮箱客户端程序,该程序基本上实现了一个邮箱所对应的所有功能。

二需求分析

2.1 功能需求

(1)开发一个JavaMail API下的邮箱客户端,实现邮件的发送、接收以及。

(2)通过输入服务器地址、用户名、密码,可以实现远程FTP服务器登录。

(3)提供本地文件和文件夹的上传功能,对FTP主机文件进行下载和删除。

(4)提供对本地目录的读取与返回,能够列出文件和文件夹。

(5)FTP提供两种工作模式的选择,Port模式(主动模式)和Passive模式(被动模式)。

2.2开发环境工具

(1)使用编程工具:Eclipse

(2)使用的语言:Java

(3)使用的开发包:javamail-1_4版,下载地址为

https://www.doczj.com/doc/5616680224.html,/technetwork/java/javasebusiness/downloads/java-archive-do wnloads-eeplat-419426.html#javamail-1.4.4-oth-JPR

(4)开发平台:Mac OS X 10.6.8

2.3 所需要的知识

(1)计算机网络的基本知识

(2)了解SMTP协议以及POP3协议基本实现原理

(3)使用Windows下的Eclipse编译器的使用方法

(4)熟悉邮件的各项功能。

三概要设计

3.1 邮件系统各功能概述

3.1.1 JavaMail简介

JavaMail API是Java EE的一部分,是Java SE的可选组件。该组件提供了一个平台无关、协议独立的框架,预置了一些最常用的邮件传送协议的实现方法,通过一组API来模拟邮件系统。提供Email的发送和接收服务。它借鉴了IMAP、MAPI、CMC等消息系统API

的设计,采用面向对象的思想将接2008年4月18日收到接口与实现相分离,支持存取方式、消息格式、消息传送协议不同的邮件消息系统,可以简便的为应用程序增加Email支持,广泛应用于构件邮件和消息应用系统 JavaMail API封装了电子邮件功能中:邮件对象、发送、身份认证、接收等功能。其核心类有:Session、Authenticator Address Message Transport、Store、Folder等。其中Session是邮件操作的接口,用于建立了基本的邮件会话;Authenticator类提供访问邮件服务器所需的认证信息;Message描述基本的邮件消息,是收发邮件的操作单位;Transport是发送邮件时所用的协议,通常是SMTP;Store模拟了消息数据库及其内部存储消息的目录的访问协议;Folder用于描述消息数据库中的目录结构。一个Session会有多个Trans—

port,每个Store包含一系列的Folder和Message,每个Folder又包含一系列的Folder 和Message。借助这些类,就可以构建各种典型的邮件应用。JavaMail的最新实现是1.4

版本,可以支持POP3、IMAP4、SMTP协议。由于JavaMail还需要JavaBeans Activation Framework(JAF)框架的支持,

3.1.2 设计目标

公用邮箱是和外单位交互的主要渠道,用户获取和提交一些重要数据和文件,也是与本单位其它部门进行业务的信息交换的重要渠道。公用邮箱不仅有13常办公相关的各类邮件,还有很多其它种类的邮件。此外,一些与办公相关的邮件还会发送到工作人员的个人邮箱中。工作人员使用Fox.mail或其它邮件客户端将公用邮箱中的邮件从服务器下载至本地,然后进行处理。这样的工作模式存在的缺点有:邮箱中邮件太多,很难找到与工作相关的邮件,工作效率低下,存在潜在处理风险;工作人员都利用邮件客户端存储和处理邮件,造成资源浪费,且无法及时得悉邮件的处理情况,难以落实责任;难以对办公相关的邮件进行统一归档和备份,并提供检索、统计、数据分析等服务;邮件帐号分散管理,带来潜在的信息安全隐患。本系统的设计旨在解决这些问题,为工作人员提供一个基于Web的简洁、易用、安全可靠、功能完备的办公邮件处理平台。

3.1.3 系统功能概述

(1)邮件自动获取与过滤

系统每天实时或者在固定的时间,统一收集多个外部邮件服务上多个邮件帐号的新邮件后汇总在一起,并根据发送地址和过滤规则对邮件进行过滤,提取服务器上的有效邮件,通过人工干预或者自动化的机制将邮件基本信息存储在数据库中,附件存人文件服务器,对完全重复的邮件通过比对后只保留一份。

(2)邮件分类

对过滤后的有效邮件,按照制定好的分类规则,根据邮件主题、发件人信息、附件属性及关键词对邮件及其附件进行归类,并提供自动归类和人工干预后确定邮件类别两种灵活的类别确认机制。

(3)邮件提醒与处理

在邮件归类后,对于新邮件,系统通过与短信发送平台的接口,将发件人、发送时间、主题、优先级等信息以短信的形式发送给相应邮件类别的处理者。邮件处理者通过网页登陆系统,可以像使用Web邮箱那样,方便快捷的查阅和处理只属于自己需要处理的那些邮件。

(4)邮件管理

系统向用户提供邮件检索、删除、调整分类等功能。可以统一直观的对:信息过滤情况、信息分类跟踪、处理情况、审阅结果、处理者信息、反馈情

况等进行展示。还可以对邮件进行统计,生成月度及年度邮件统计报表。普通用户只能管理与自己工作相关的邮件,系统管理员可以管理所有邮件。

(5)邮件帐号设定及过滤和分类规则定义

系统管理员可根据需求设定多个邮件帐号,将不同邮箱的邮件汇总在一起。过滤规则是系统选择接收邮件的依据,目前状况下,对邮件地址和发送时间进行过滤已能满足需求。分类规则是对邮件进行分类的依据,对每个公司或单位,管理员可以根据业务类型定义邮件及附件类别,然后指定该类别邮件的关键词、特征及处理者。

3.2 邮件管理系统总体设计方案

3.2.1 系统体系结构

系统基于B/S结构,采用MVC(Mode1.View.Controller)模式,体系结构

系统采用三层结构:

第一层是客户端层,用户通过IE、Firefox等浏览器与系统交互,发起浏览、检索、处理邮件、系统配置与管理等请求,并展示处理结果。

第二层为服务器层,可以分为两个功能相对独立的部分,一个是Web服务器,用于响应和处理客户端请求,通过请求处理程序与后台数据库交互,返回处理结果给浏览器;一个是邮件处理部分,通过JavaMail API与邮件服务器交互,发送和接收邮件,并对有效邮件进行解析与分类,将结果存放在数据库和文件系统中,然后借助短信发送平台的接口通知用户处理邮件。

第三层为数据层,包括:用于存储系统信息、邮件信息的数据库服务器,存

储邮件附件的文件服务器。为了提高系统可扩展性和满足复杂应用逻辑的需求,在系统第二层的Web应用中,是MVC模式的一种实现。

3.2.2 功能模块

系统涵盖了运行中心日常邮件管理与维护的所有功能,共分为六个模块:邮件获取模块、邮件发送模块、邮件分类模块、邮件处理模块、邮件管理模块、联系人模块。这些模块功能相对独立,具有高内聚、低耦合的特点,每个模块都有定义良好的接口,可以扩展和增加复杂的应用逻辑。

其中,邮件发送模块可以发送文字,图片,附件,并可以同时发送给不同的邮箱。其中可编辑发送文字的大小格式颜色等。

邮件获取模块可以获取邮件,在收件箱可以看到邮件列表,刷新可见新邮件。

邮件分类模块是将邮件客户端分为发信箱,收信箱,已发送,已删除

邮件管理模块是可对邮件删除,回复,彻底删除,对已删除的邮件可以恢复,刷新收信箱。

邮件处理模块是对邮件的查看,下载附件,回复。

联系人模块是可以添加,删除联系人,发邮件的时候可以直接点击已添加过的联系人进行发送。

3.3 系统开发的技术难点和解决方案

3.3.1 MIME Messsage的解析

MIME(Multipurpose Internet Mail Extension)协议是目前应用最广泛的邮件协议,用于定义邮件的格式,它可以包含文本、图像、音频、视频以及其它

应用程序专用的数据。邮件的解析实际上可以就是解析MIME消息的过程,是邮件过滤、分类、管理等工作的前提。通常情况下,一个MIME消息由消息头(Headers)和消息体(Content)组成。消息头包括:发送者、接收者、发送时间、主题、优先级、邮件内容类型、MIME版本号等信息。消息体为邮件的内容,它可以为简单的文本,也可以是包含多个分段(Part)的多重消息(Muhipart),而其中每个分段的消息都有自己的消息头和消息体。对于不带附件的简单邮件,其消息体的内容类型是纯文本,text/plain或者text/html等。对于带附件或者包含多种

内容格式的邮件,其消息体为muhipart类型,通常为:muhipart/mixed、

muhipart/related或multipart/alternative.比如:邮件正文、附件、HTML信件等。因此,邮件消息的解析过程实际上是一个后序周游整棵MIME消息树的过程。消息的解析需要递归访问消息中的每个消息体,也就是树的叶结点,从中获取相关信息,并生成一个邮件对象,用于随后的邮件分类和写人数据库操作。在解析时,需要将发送者、接收者、主题、发送时间、正文等有用信息存储在定义好的邮件对象中,将附件和HTML格式的信件存储在文件系统,并将附件的文件名和文件路径存储在邮件对象中。

3.3.2 邮件发送

Email的发送实际上就是构造一个MIME消息的过程。JavaMail API提供了相应的接口用于构造一个邮件消息,但是相对较复杂。本系统采用A—pache的开源工具包Commons Email来实现邮件发送。Commons Email构建于JavaMail API上,对JavaMail进行了再封装,提供了极为简便的借口用于通过Java程序发送Email。它提供的主要类有:SimpleEmail(用于发送简单的文本类型Email)、MultiPartEmail(用于发送带附件的Email)、HtmlEmail(用于发送Html格式的邮件)、EmailAttachment(描述Email的附件)]。

借助Commons Email工具包发送一个简单Email只需要创建SimpleEmail对象,设置SMTP服务器、认证信息、发送者、接收者、主题、正文,然后发送即可。要发送一个带附件的邮件,只需要构造一个MuhiPartEmail对象,设置和简单Email一样的属性,然后构造附件对象并将之附加在MuhiPartEmail中即可。不难看出采用了Commons Email工具包后,邮件的发送十分简洁,只需要构建相应的附件和邮件内容即可,而且工具包还支持直接用网络上的文件作为附件内容。

3.3.3 系统性能问题

邮件服务器上可能会有很多封邮件,如何判断一封邮件是否被处理过,并对未处理的邮件消息进行过滤与分类是系统的一个性能瓶颈。系统基于Web技术构建客户端,而Web应用程序不可避免的会有频繁的数据库操作,建立数据库连接是相当耗费资源和时间的操作。在JSP应用中若直接采用JDBC接口访问数据库,必然会频繁建立和关闭数据库连接,从而导致服务器性能下降。为保证系统高效运行,采用如下的策略来提高整体性能:

(1)多线程技术

每个Email消息的处理是相对独立的过程,因而采用多线程技术同时处理多封邮件是提高性能的最简单可行的做法。系统共使用8个线程处理邮件消息,根据邮件消息的总数,就能计算出每个线程所需要处理的消息数为N=[M/8]([]表示取上整)。其中第k个线程处理邮件消息队列中第8i+k(i=0,1,?,N一1)个消息,以倒序的方式处理可以使得消息相对均匀的分配给处理线程,并保证有效消息先被处理。

(2)灵活高效的过滤机制

每个Email都会对应一个固定的Message—ID和SentDate,在解析时很容易获取。系统会对每个帐号设定邮件开始接收13期(ReceiveStartDate),在处理E—mail消息时,先根据SentDate来判断,若在该13期前,则不予以处理。每次接收完成后,更新ReceiveStartDate至当前13期。为了避免重新设定Re—ceiveStartDate或者重新执行接收任务时,对已经处理过的有效邮件重复处理,系统提供两种机制,一种是不在服务器上保

留副本,这样每次获取的必然是新邮件;一种是保留副本,但利用Property文件记录每个符合要求的消息的处理情况,以便快速判断邮件消息是否被处理过。

(3)采用数据库连接池技术

连接池会在初始化时保持一定数量的数据库连接,应用程序在操作数据库时,从连接池中获取一个连接,完成操作后释放连接,这样大大提高了系统性能。保存邮件信息至数据库时,系统采用Apache DBCP Component来建立数据库连接池。在系统的Web应用部分,通过配置Tomcat数据源来建立数据库连接池。

3.4 系统特点

系统借助JavaMail API实现了一个简单的基于Web的邮件客户端,可以将不同邮件服务器的有效邮件聚合在一起进行统一归档管理,并提供统一、友好的界面以方便相关人员处理邮件。系统在自动化的基础上提供选择性干预的机制,以应对一些特殊情况。系统使用Java语言开发,基于B/S结构,采用MVC模式,系统层次清晰,结构合理。在后台处理程序和应用逻辑的设计中,采用面向对象的设计方法和分层设计思想,将抽象和实现相分离,具有很好的可扩展性好。为了提高系统性能,采用了多线程技术和连接池技术,系统执行效率高。系统支持自定义简单的过滤规则、邮件类别、分类规则,并能很容易的进行扩展以支持复杂的自动化分类技术。

3.5 系统具体设计

登陆界面

功能目录

发送邮件

邮件已发送

对方收到邮件并回复邮件后刷新收信箱

收信箱列表,收到对方回复的新邮件

读取邮件内容

发送邮件列表

对邮件的操作:

回复邮件

3.6 关键代码

LoginAction.java

/**

* 用于验证登陆是否成功

*/

package action;

import mailutil.GetMail;

import mailutil.SendAttachMail;

import utils.EditorUtils;

public class LoginAction {

private String POP3Host = ""; // POP3服务器private String SMTPHost = ""; // SMTP服务器

private String user = ""; // 登录服务器的帐号

private String password = ""; // 登录服务器的密码

private GetMail getMail = null;

private SendAttachMail sendMail = null;

// 三个参数的构造方法

public LoginAction(String sMTPHost, String pOP3Host, String user, String password) {

super();

POP3Host = pOP3Host;

SMTPHost = sMTPHost;

https://www.doczj.com/doc/5616680224.html,er = user;

this.password = password;

// 实例化收邮件对象

getMail = GetMail.getMailInstantiate();

getMail.setPOP3Host(POP3Host);

getMail.setUser(user);

getMail.setPassword(password);

// 实例化发邮件件对象

sendMail = SendAttachMail.getSendMailInstantiate();

sendMail.setSMTPHost(SMTPHost);

sendMail.setUser(user);

sendMail.setPassword(password);

}

// 判断登陆是否成功

public boolean isLogin() {

boolean isLogin = false;

// 判断用户名是否为空

if (checkUser()) {

try {

sendMail.connect();// 连接发件服务器(只能通过连接发件箱验证身份,否者发件时会抛异常)

isLogin = true;

} catch (Exception e) {

isLogin = false;

e.printStackTrace();

}

}

return isLogin;

}

// 验证用户输入数据的有效性

public boolean checkUser() {

boolean check = false;

boolean checkSMTP = SMTPHost.toLowerCase().startsWith("smtp");// 验证smtp服务器

boolean checkPOP = POP3Host.toLowerCase().startsWith("pop");// 验证pop 服务器

boolean checkPassword = !"".equals(password) && password.length() >= 1;

boolean checkUser = EditorUtils.checkEmailAdress(user);// 验证邮箱的有效性

if (checkSMTP && checkPOP && checkPassword && checkUser) {

check = true;// 验证通过

}

return check;

}

}

添加附件

// 添加附件

private void addAttachment() {

if (listmodel.getSize() >= 4) {

JOptionPane.showMessageDialog(this, "只能添加4个附件");

return;

}

File f = new File(".");// 得到当前目录

JFileChooser chooser = new JFileChooser(f);// 构造一个当前路径的文件选择器

if (chooser.showOpenDialog(getContentPane()) ==

JFileChooser.APPROVE_OPTION) {// 如果选择确定键

File file = chooser.getSelectedFile();

Icon icon = chooser.getIcon(file);

attachmentList.setCellRenderer(new CellRender(icon));

listmodel.addElement(file.getName());// 将附件添加到JLIST中

attachArrayList.add(file.getPath());// 将附件的路径添加到附件列表中}

if (listmodel.getSize() <= 1) {

boxV1.add(adjunctL);

boxV2.add(jsp);

}

validate();

repaint();

}

发送邮件

new Thread() {// 开启一个新的线程发送邮件

public void run() {

String message = "";

if ("".equals(message = sendMail.send())) {

SendedMailTable.getSendedMailTable().setValues(toMan,

subject, attachArrayList, text, copy, sendMan);// 将邮件添加到已发送

message = "邮件已发送成功!";

} else {

message = "

邮件发送失败!失败原因:

\n"+ message;

}

progressBar.dispose();

JOptionPane.showMessageDialog(SendFrame.this, message, "提示",

https://www.doczj.com/doc/5616680224.html,RMATION_MESSAGE);

}

}.start();

刷新列表

splitPane.setOneTouchExpandable(true);// 在分隔条上提供一个 UI 小部件来快速展开/折叠分隔条

收件箱列表

// 获得所有邮件的列表

public Message[] getAllMail() throws Exception {

// 建立POP3连接

connect();// 连接邮件服务器

// 取得一个Folder对象,得到默认的收件箱文件夹

folder = store.getDefaultFolder().getFolder("INBOX");

if (folder == null)

System.out.println("出错!");

if (!folder.isOpen())

folder.open(Folder.READ_ONLY);

// folder.open(Folder.READ_WRITE);

// 取得所有的Message对象

msg = folder.getMessages();

FetchProfile profile = new FetchProfile();

profile.add(FetchProfile.Item.ENVELOPE);

folder.fetch(msg, profile);

closeConnect();// 关闭连接邮件服务器

return msg;

}

对邮件的操作

// 查找指定邮件

public Message findMail(Message[] msg, String id) throws Exception { Enumeration enumMail = null;

Header h = null;

for (int i = 0; i < msg.length; i++) {

enumMail = msg[i].getAllHeaders();

// 查找邮件头中的Message-ID项

while (enumMail.hasMoreElements()) {

h = (Header) enumMail.nextElement();

// 根据传入的message-id来查找目标邮件

boolean messageId = (h.getName().equals("Message-ID"))

|| (h.getName().equals("Message-Id"));

if (messageId && (h.getValue().equals(id))) {

return msg[i];

}

}

}

return null;

}

// 删除邮件

public boolean deleteMail(String[] id) {

boolean isDelete = false;

try {

connect();// 连接邮件服务器

// 取得一个Folder对象

folder = store.getDefaultFolder().getFolder("INBOX");

folder.open(Folder.READ_WRITE);

Message[] deletemsg = folder.getMessages();

Message mes = null;

for (int i = 0; i < id.length; i++) {

mes = findMail(deletemsg, id[i]);// 查找指定邮件

mes.setFlag(Flags.Flag.DELETED, true);// 把邮件标记为删除}

closeConnect();// 关闭邮件服务器的连接并删除邮件

CheckNewMialUtil.isCheck = true;// 设置新邮件标记

isDelete = true;

} catch (Exception e) {

e.printStackTrace();

}

return isDelete;

}

// 读取邮件内容

public Map readMail(String id) throws Exception {

Map map = new HashMap();

// 找到目标邮件

Message readmsg = findMail(msg, id);

// 读取邮件标题

map.put("subject", readmsg.getSubject());

// 读取发件人

map.put("sender", MimeUtility.decodeText(readmsg.getFrom()[0] .toString()));

map.put("attach", "");

// 取得邮件内容

if (readmsg.isMimeType("text/*")) {

map.put("content", readmsg.getContent().toString());

} else {

Multipart mp = (Multipart) readmsg.getContent();

BodyPart part = null;

String disp = null;

StringBuffer result = new StringBuffer();

// 遍历每个Miltipart对象

for (int j = 0; j < mp.getCount(); j++) {

part = mp.getBodyPart(j);

disp = part.getDisposition();

// 如果有附件

if (disp != null

&& (disp.equals(Part.ATTACHMENT) || disp

.equals(Part.INLINE))) {

// 取得附件文件名

String filename = MimeUtility

.decodeText(part.getFileName());// 解决中文附件名的问题

map.put("attach", filename);

// 下载附件

InputStream in = part.getInputStream();// 附件输入流

if (attachFile.isDownload(filename))

attachFile.choicePath(filename, in);// // 下载附件

} else {

// 显示复杂邮件正文内容

result.append(getPart(part, j, 1));

}

}

map.put("content", result.toString());

}

return map;

}

国内外最流行的几款电子邮件客户端软件评测

国内外最流行的几款电子邮件客户端软件评测邮件客户端软件点评 1. 商业用户的选择Outlook Outlook和OutlookExpress同样是微软提供的电子邮件客户端软件,很多人都将它们看做是同一款软件,在此有必要说明一下它们之间的区别。这两款软件虽然有许多共同之处,当一个系统内同时安装了这两个软件时,它们甚至共用某些程序,在评测的结果中也可以看出它们大部分的功能和特点都是一样的。但实际上,这是两个不同的电子邮件软件: Outlook 是微软Office 套件的一个组件,属于商业软件。而OutlookExpress 是随Windows98以后的操作系统和IE浏览器发布的一个免费电子邮件软件。 在功能方面,OutlookExpress没有Outlook的日历、日程安排等商务功能,而Outlook没有OutlookExpress的新闻组功能。简单地说,OutlookExpress更符合普通用户的需求,而Outlook是商务用户的最佳选择。而且在安全性与稳定性方面,Outlook也要比OutlookExpress好,虽然评测结果中两者的安全性得分相同,但Outlook具备的邮件数据加密功能对商业用户来说,比将HTML转换为文本阅读更重要,而且通过手工编辑注册表或者使用第三方插件,Outlook 也可支持将HTML邮件转换成文本阅读的功能。另一方面,由于国外的商业用户很多都使用Outlook,因此从邮件的兼容性方面讲,Outlook也是商业用户的首选。 如果不考虑付费的问题,对于普通用户Outlook也要比OutlookExpress更有 优势,因为很多微软的插件和第三方插件都只提供给Outlook。例如新浪和微软联合推出的“新浪商业短信插件” ( http: 2. 最易学易用的软件Foxmail 在国产电子邮件客户端软件中,Foxmail无疑是其中最出色的。它那友好的用户界面、简单的操作方法、单一的程序功能都深受用户的喜爱。

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 0 4.1 设计环境和目标分析 0 4.1.1 设计环境 0 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (1) 4.3 控制模块详细设计 (2) 4.3 爬虫模块详细设计 (2) 4.3.1 URL管理器设计 (2) 4.3.2 网页下载器设计 (2) 4.3.3 网页解析器设计 (2) 4.4数据输出器详细设计 (3) 5 调试与测试 (3) 5.1 调试过程中遇到的问题 (3) 5.2测试数据及结果显示 (4) 6 课程设计心得与体会 (4) 7 参考文献 (5) 8 附录1 网络爬虫程序设计代码 (5) 9 附录2 网络爬虫爬取的数据文档 (8)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计 在本爬虫程序中共有三个模块: 1、爬虫调度端:启动爬虫,停止爬虫,监视爬虫的运行情况 2、爬虫模块:包含三个小模块,URL管理器、网页下载器、网页解析器。 (1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL 管理器中取出一个待爬取的URL,传递给网页下载器。 (2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。 (3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取的数据,而且还可以解析出每一个网页指向其他网页的URL,这些URL被解析出来会补充进URL管理器 3、数据输出模块:存储爬取的数据 4 网络爬虫程序详细设计 4.1 设计环境和目标分析 4.1.1 设计环境

程序设计基础课程设计报告 内容样例

第一章目的与要求 书上有。 第二章需求分析 软件设计的一个重要的环节就是需求分析。本章在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。以下是ATM取款机管理系统所需要的需求分析。 ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。 ①登录: 输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面 ②挂失功能: 确认是否对银行卡进行挂失,挂失后账户无法操作 ③修改密码: 用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码 ④取款功能: 用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内 ⑤转账功能: 用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账

号 ⑥查询功能: 用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额 模拟ATM取款机的操作: 首先录入账户信息,格式如下 ㈠、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 ㈡、查询功能:查询账户余额。 ㈢、取款功能:取款,更新余额。 ㈣、挂失功能:挂失后,该账户不能进行任何操作。 ㈤、修改密码:输入原密码和新设置密码。 ㈥、转账功能:输入转账的转出账户以及转账金额,进行转账。

第三章设计分析 3.1、ATM系统管理 3.1.1系统基本功能 首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。所以在创建类的时候,先创建一个ATM类,然后创建取款人类,并与ATM 类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。 基本功能: 登录功能---------输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 查询功能---------查询账户余额。 取款功能---------取款,更新余额。 挂失功能---------挂失后,该账户不能进行任何操作。 修改密码---------输入原密码和新设置密码。 转账功能---------输入转账的转出账户以及转账金额,进行转账。、

电子邮件客户端系统设计

毕业设计说明书 电子邮件客户端系统设计 专业 计算机科学与技术 学生姓名 吴振凯 班级 B 计算机082 学号 0810704229 指导教师 许秋艳 完成日期 2012年6月1日

电子邮件客户端系统设计 摘要:电子邮件的使用简易,投递迅速,收费低廉,易于保存,全球畅通无阻,使得电子邮件被广泛地应用。当前流行的各大邮件系统除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更见显得太过于华丽而不太实用。有鉴于此,开发一个集收、发、管理为一体的功能相对简单实用的电子邮件系统可以大大方便我们对邮件的收发和管理。 基于Web的网络邮件系统以SQL Server 2005数据库,使用https://www.doczj.com/doc/5616680224.html,技术开发而成,是一款融合了邮件发送、邮件接收、个人邮件管理等功能的计算机软件系统。其中邮件发送和接收是系统的两大特色,用户可以发送工作及问候邮件,并且可以接收到别人的邮件,同时还可以对自己的邮件进行相关的操作和管理。 本说明书以软件工程理论为指导,论述了系统的设计构想,分析了系统开发各个阶段的主要任务,并详细阐述了系统各个功能模块的实现原理及解决方案,最后对系统开发过程进行了总结。 关键词:网络邮件系统;简单邮件传输协议;邮局协议3

Design of Email Client System Abstract:Email has been increasingly popular these days since it is simple, instantaneous, reliable, cheap and easy to save. Besides the functions of receive and deliver mails, the mail system offers a few more features. However, people do not really use these flashy functions, especially for those who know few about computers. Therefore, it would be of great users’ convenience to develop a simple, practical and user-friendly email system, which integrates sending, receiving, and management functions. The email system is based on internet, using the SQL Server 2005 database https://www.doczj.com/doc/5616680224.html, technology. The system is one software system that combines the functions of sending, receiving, and managing emails. Its main features include sending and replying emails. Users can send mails on work and greetings, receive the mails, and manage the emails. Guided by software engineering theory, the system design concept is discussed in the instruction book. The main task of the various stages of system development is analyzed. The system principle and solutions of the various functional modules are described. The system development process is summarized in the end. Key Words:Net Email System; SMTP; POP3

程序设计基础课程设计

设计题目:学生成绩管理系统班级:计0902 姓名:付乐颖 学号:20091221067 完成日期:2010.10.15

1. 课程设计目的和要求 随着科学的发展和社会的进步,许多过去有人工处理的繁杂事务开始交付计算机来完成。学生成绩管理系统可以说是一个得力助手,它利用计算机对学生成绩进行统一管理,实现学生成绩信息管理工作流程的系统化、规范化和自动化,提高了广大教师的工作效率。 本程序旨在训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件等的各种基本操作,使学生能对C语言的文件操作有一个更深的理解。为进一步开发出高质量的信息管理系统打下坚实的基础。 2. 课程设计任务内容 学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。系统的主要功能包括: 1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。 2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。 3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。 4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。 5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。 (1) 按学号查询,输入一个学号,输出对应的学生信息。

《.NET程序设计》课程设计报告

《.NET程序设计》课程设计报告 班级:计算机1403 学号:1411640305 姓名:黄世增

一、实验名称 作者信息管理系统 二、实验目的 1.进一步掌握并加深“.NET程序设计”课程的基本知识,理解“.NET程序设计”课程中重点讲解的https://www.doczj.com/doc/5616680224.html,技术在项目开发中的应用。 2.培养正确的程序设计思想,提高分析问题、解决问题的能力。 3.提高学生进行技术总结和撰写说明书的能力。 三、系统设计描述 实验设计内容: 本次实验设计的内容是使用https://www.doczj.com/doc/5616680224.html,技术为某出版社设计并实现一个小型作者信息管理系统。出版社的工作人员登录该系统后,可以查看该社出版的各类书籍的作者的信息,并可以对作者信息进行各类查询,便于工作人员对作者信息进行管理。 系统数据库设计: 在SQL Server Express中为作者信息管理系统建立一个名为作者信息管理系统的数据库,并设计以下2张数据表: 1.系统管理员表 该表用来记录使用本系统的管理员的基本信息,包括管理员账户及密码。 【思考题】 (1)数据库中的一条记录中有若干个属性,若其中某一个属性(注

意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 统管理员表中用户名应设为主键。 (2)用户名和密码都设为varchar字符型。 2.作者个人信息表 该表用来记录作者个人的基本信息,包括作者编号、姓名、联系地址、电话、email。 【思考题】 (1)表中作者编号应设为主键。 (2)表中作者ID、电话号码和Email为nchar字符串型,姓名和联系人地址为nvarchar字符串型。 设计好数据库的两个表后,分别在两个表中输入数据,如下图所示:

c语言程序设计》课程设计报告

《C语言程序设计》课程设计报告 (2013—2014学年第3学期) 题目:C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号:1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 掷骰子游戏 (5) 射击游戏 (7) 计算存款本息之和 (8) 肇事逃逸 (10) 礼炮 (12) 汽车加油 (14) 大优惠 (16) 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;

2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式 ③必须上机调试通过 二、方案实现与调试 掷骰子游戏 2.1.1题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。 4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述 本算法的思路过程:首先要随机产生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。

简单邮件客户端设计要点

《计算网络》课程设计 学院_ __ 计算机学院______专业_______网络工程_______ 年级班别____2012级(3)班 _ _ 学号_ 3112006443 学生姓名________王彦德________ 课题简单的电子邮件客户端 指导教师____ 何翠红 ______ 成绩

计算机网络课程设计任务书设计题目利用MyEclipse+SWT-Designer实现电子邮件客户端 已知技术参数和设计要 求1.设计图形用户接口(GUI)的电子邮件客户端,与收件人SMTP服务器交互,实现邮件的发送。 2.界面设计中至少包含用户输入收件人地址、邮件主题、发件人地址、文本电子邮件内容编辑等的编辑框,以及发送邮件(Send)、清除邮件内容(Clear)、退出客户端(Exit)等的命令按钮等。 3.如果可能,实现附件发送,完成该项功能将得到加分。 设计内容与 步骤1.阅读RFC821-Simple Mail Transfer Protocol,熟悉SMTP协议; 2.熟悉Java Socket实现网络通信的基本机制; 3.熟悉TCP Socket程序设计方法; 4.熟悉MyEclipse+SWT-Designer的GUI应用程序开发环境的安装、使用; 5.电子邮件客户端用户界面设计; 6.电子邮件客户端功能实现; 7.课程设计任务说明书。 设计工作计划与进度安 排1.SMTP 4小时 2.Java TCP Socket程序设计基础2小时 3.MyEclipse+SWT-Designer环境安装与使用8小时 4.电子邮件客户端GUI界面设计4小时 5.电子邮件客户端功能实现12小时 6.课程设计说明书10小时

java网络编程课程设计终极版

枣庄学院 信息科学与工程学院课程设计任务书题目:基于UDP的聊天系统 小组成员:谭德鹏、崔浩、王珂、李洪康 成员学号:201212120221、201212120202 201212120224、201212120209 专业班级:网络工程、2012级本2班 课程:Java网络编程 指导教师:吕加国职称:副教授 完成时间:2015年4 月----2015年6 月 枣庄学院信息科学与工程学院制 2015年4 月15日

课程设计任务书及成绩评定 课程设计的任务和具体要求 任务:运用JDK和Eclipse开发环境,完成一个聊天或通讯系统的设计,初步掌握利用Java语言和JDK开发网络通信程序的基本方法。 具体要求: 1、需求分析:根据自己的选题,绘制用例图、功能结构图等。 2、系统设计:合理划分系统的功能结构,写清楚各个功能模块之间的关系。 3、详细设计:根据自己选题的业务逻辑,完成系统的界面设计、代码设计。 4、设计小结:总结课程设计的过程、体会及建议。 6、其他:参考文献等。 指导教师签字:吕加国日期: 2015-11-10 指导教师评语 成绩:____________指导教师签字:日期: 2015-1-10

课程设计所需软件、硬件等 ?硬件环境:Iterl(R) Core(TM)2 Duo CPU,主频2.31GHz;内存3G; 硬盘320G以上;1024×768显示分辨率 ?软件环境: JDK XXX、Eclipse XXX 课程设计进度计划 起至日期工作内容备注 6月10日~6月20日 我们小组根据所选的题目以及在这学期所学的软件工程的知识,严格按照软件生产的流程(使用的是瀑布模型)来完成此作品,小组成员各职其所,都完成了预期所做的工作! 参考文献、资料索引 序号文献、资料名称编著者出版单位[1]《Java网络编程基础》(第2版).作者:朱喜福戴舒樽王晓勇

Web程序设计课程设计报告模板

Web程序设计课程设计报告课程设计题目:某电子杂志网站 姓名:肖琴霞 专业:软件工程(国际教育) 班级:10211133 学号:1021113321 指导教师:吴光明 2013 年 3 月 10 日

一、设计目的 《Web应用开发课程设计》是实践性教学环节之一,是《Web程序设计》课程的辅助教学课程。通过课程设计,使学生掌握Web网站的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握软件开发的基本概念、原理和技术,将理论与实际相结合,应用现有的开发工具,规范、科学地完成一个完整地应用软件的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。 当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正使得计算机被广泛的应用于信息管理系统。计算机的最大好处在于利用它能够进行信息管理和查询。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。制作电子杂志网站可以方便读者阅读,且可以扩大读者的视野以及提高阅历。 二、设计解决方案 问题解决方案: 经过分析,我们决定利用ASP编程,使用Dreamweaver MX作前端开发工具,利用SQLServer2000作后台数据库管理,数据库驱动使用ADO。 前台功能模块:系统主界面与登录程序设计,杂志查询及订阅,读者服务模块,杂志分类设计等。 后台功能模块:管理主界面与登录程序设计,最新杂志信息管理模块,杂志订阅管理模块,在留言管理模块设计等。后台管理的建立,使管理员可以通过后台很容易的对杂志城进行管理,比如:对最畅销杂志,公告和杂志城注册用户进行添加,删除等管理工作,还可以对读者在线留言的处理。 三、电子杂志网需求分析 3.1 需求分析 需求分析是整个设计过程的基础,最困难、最消耗时间的一步。它的最终结果是提供

简单邮件客户端设计

《计算网络》课程设计

目录

简单邮件客户端设计说明书 一前言 随着互联网技术及网络办公化的发展,电子邮件成为人们主要的通信方式之一。越来越多的人开始使用它。而且用它的人数势必会继续增加。虽然,现在已经有很多的邮件收发软件例如著名的FoxMail ,但是对于大多数的非专业的人来说它还是有点难度。因此,我们所设计的基于JavaMail的邮件收发系统就利用JavaMail开发包的高级应用和E-Mail的相关协议开发出这个功能相对简单,但是实用、方便、快捷的邮件收发系统。主要用于帮助用户将邮件发送给SMTP服务器和从POP3邮件服务器读取用户的电子邮件。它集邮件的撰写、发送和接收功能与一体。并且支持附件的发送和接收以及其它一些附加功能的实现。虽然它没有FoxMail那么强大的功能,但是它容易掌握和使用。整个系统功能流畅,从操作简便、界面友好、灵活实用的要求出发,使用户之间的交流能够更加地方便和快捷。 本人结合SMTP以及POP3协议的实现原理、相关JavaMail API帮助文档以及相关参考书,实现了一个工作在PC下的邮箱客户端程序,该程序基本上实现了一个邮箱所对应的所有功能。 二需求分析 2.1 功能需求 (1)开发一个JavaMail API下的邮箱客户端,实现邮件的发送、接收以及。 (2)通过输入服务器地址、用户名、密码,可以实现远程FTP服务器登录。 (3)提供本地文件和文件夹的上传功能,对FTP主机文件进行下载和删除。 (4)提供对本地目录的读取与返回,能够列出文件和文件夹。 (5)FTP提供两种工作模式的选择,Port模式(主动模式)和Passive模式(被动模式)。 2.2开发环境工具 (1)使用编程工具:MyEclipse SWT-Designer (2)使用的语言:Java (3)开发平台:Mac OS X 10.6.8

程序设计基础课程设计

1 矩阵的操作(6人) 设有两个矩阵A=(a ij)m×n,B=(b ij)p×q 实现要求: ⑴编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的数组和对应矩阵的行数、列数。(不能使用全局变量) ⑵编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出。 ⑶求矩阵的转置,矩阵的转置A’=(a ji)n×m,转置前输出原矩阵,转置后输出转置矩阵。 ⑷求矩阵A、B的和。矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C。 C=A+B=(c ij)m×n,其中c ij=a ij+b ij ⑸求矩阵A、B的积。矩阵A和B能够相乘的条件是:p=n;矩阵A和B 如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D。 D=A×B=(d ij)m×q,其中d ij=∑a ik×b kj,k=1,2,……,n ⑹设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。

2 数据汇总 (6人) 问题描述: 在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。 假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。实现要求: ⑴编写实现将数据记录插入到数据文件的最后的函数; ⑵编写以收款机为单位的数据分类处理函数。构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表; ⑶统计每台收款机的销售总额; ⑷编写以商品为单位的数据分类处理函数。构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表; ⑸以商品为单位,统计每种商品的销售总额。 ⑹设计一个菜单,具有插入数据记录、按收款机统计销售总额、按商品统计销售总额、退出系统等最基本的功能。

《网络应用程序设计》课程设计报告书

网络应用程序设计课程设计报告书 题目:局域网多人聊天室 班级:0991132 学号:1099113202 姓名:赵燃 指导教师:宋毅、王家宁、徐红梅、姚璐 周期:一周 成绩: 2011年12 月23 日

一、课程设计的目的与要求( (一)课程设计目的与任务 (1)课程设计的目的:《网络高级程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用vc++语言进行面向对象设计的基本方法。提高运用面向对象知识分析实际问题、解决实际问题的能力。 (2)课程设计任务:局域网多人聊天室 该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。 客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。 服务器端程序:可将消息发送到客户端和接受客户端发送来的消息。 (二)题目要求 该系统要求完成聊天室的全过程,包括客户端和服务器两大部分的编程及其连接。服务器端聊天程序负责接收和发送来自客户端的聊天信息,客户端聊天程序负责建立和维护与服务器端的连接,想服务器发送本客户的聊天内容。系统采用VISUAL C++语言程序设计编程实现。并且按要求编写程序设计报告书,能正确编写分析、设计、编码、测试等技术文档。 二、设计正文 1系统分析 (1)服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。 (2)服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息除源端外的所有客户发送过去。 (3)服务器还要监控这些连接的状态。在客户主动离开或发生故障时从列表删除相应的表项,并及时更新连接表。 2功能详细描述及框图 用户首先启动客户端,登陆服务器并向服务器发送信息,启动服务器,服务器等待客户要求并向客户反馈在线用户信息,用户向服务器发送信息,服务器处理用户的数据,然后用户开始聊天,客户端的聊天分为对群聊天和私聊的信息,该信息应通过程序控制分别进行处理。

程序设计基础课程设计报告

课程设计(大作业)报告 课程名称:程序设计基础 设计题目:学生成绩记录薄设计 院系:信息技术学院 班级: 设计者: 学号: 指导教师: 设计时间:2013.7 8.-2013.7.13 信息技术学院

昆明学院课程设计(大作业)任务书

学生成绩记录薄设计 一、课程设计目的与要求 1.课程设计目的 (1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。 (2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。 2. 课程设计要求 设计一个简易学生成绩记录簿设计,其中包括:姓名,学号,C语言成绩; 具体功能: 1.系统以菜单方式工作 2. 创建学生成绩信息并以磁盘文件保存; 3. 读取磁盘文件并显示输出所有学生的成绩; 4. 查询学生成绩 (1)按学号查询成绩 (2)学号姓名查询成绩 5.添加成绩记录; 6.修改指定姓名或学号的学生的成绩并可存盘; 7.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。 二、总体设计 图1 系统总体结构

三、详细设计 1、数据结构设计 #include #include #include #include int n=4; struct student { int num; /*学号*/ char name[10]; /*姓名*/ float score[3]; /*成绩*/ } 2.函数说明 1.主函数 main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。 2.其他部分功能函数包括 (1) 将学生成绩信息保存为文件void save(); 算法思想: ①定义指向文件的指针变量; ②输入保存路径及文件名,打开文件,若不能打开文件给出提示信息; ③将存有学生成绩信息的结构体数组信息依次保存到文件中。 (2)学生成绩信息录入函数void input() 算法思想: ①依次录入结构体数组中所包含的各个成员; ②直到输入的结构体成员中信息为4,数据输入结束; ③返回实际录入的学生成绩信息数。 (3)从文件中读出学生成绩信息void output(); 算法思想: ①定义指向结构体变量的指针和指向文件的指针; ②输入文件的路径,打开文件,若不能打开文件给出提示信息; ③将文件中的信息依次读出,最后结构体的指针为NULL。

pop3邮件客户端课程设计文档

青海民族大学课程设计报告 课程类别:本科 课程名称:TCP/IP协议原理课程设计 课程代号:XXXXXX 指导教师:昝风彪 POP3邮件客户端 姓名:卢国祥 学号:1410030010 院系:计算机学院 专业:网络工程 班级:14网本 课程设计报告提交时间:2016 年12月日

目录 1课程设计内容 (1) 2课程设计要求 (1) 2.1功能要求 (1) 3概要设计 (3) 3.1功能模块图 (3) 3.2功能模块描述 (4) 4详细设计 (5) 4.1功能流程图 (5) 4.2重点设计 (7) 5测试与调试 (11) 6心得体会 (13) 参考文献 (28)

POP3邮件客户端 1课程设计内容 设计并实现POP3邮件客户端系统,要求能够向POP服务器发送命令,并接受POP服务器返回的响应和数据,程序设计具备以下功能模块: (1)功能模块1要求实现的程序为图形化界面,可以输入POP服务的相关信息(包括POP服务器名、用户和密码),输出交互过程中的POP命 令与响应信息,以及从POP服务器的制定邮箱中获得的邮件信息。 (2)功能模块2要求遵循RFC1939的相关POP3协议规定可以登录到任意一个标准的POP3服务器。只要求实现USER 、PASS、STAT、RETR、 DELE和QUIT命令。点击链接按钮,实现USER与PASS命令;单机 删除按钮,实现DELE命令;单击退出按钮,实现QUIT命令。 2课程设计要求 2.1 设计要求 (1)要求有良好的编程规范与详细的注释信息。 (2)要求有详细的说明文档,包括程序的设计思想、工作流程、关键问题等。 (3)要求在Windows操作系统环境中,建议使用Visual C++编程工具实现。 2.2 功能要求 所设计的的程序经调试后能与现有的邮件服务器系统(如:163、126、sina、sohu、QQ)等进行通信,并能查看邮件服务器上的邮件并下载到本机上。2.3 设计平台介绍 VC++是微软公司开发的一个IDE(集成开发环境),换句话说就是使用C++的一个开发平台。VC++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大,Windows下编程需要了解其消息机制以及回调(callback)函数的原理,MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等。MFC是Visual C++进行开发的

《测量程序设计课程设计》指导书-2015

测量数据处理程序设计指导书 设计名称:测量数据处理程序设计 计划周数:2周 适用对象:测绘工程专业本科 先修课程:测量学,测量平差基础,大地控制测量,测量程序设计 一、设计目的 测量数据处理程序设计是学生在系统学习完大地控制测量学、测量平差基础、测量程序设计等相关课程之后,为了系统理解控制网平差的整体过程及综合运用科学工具而安排的。通过课程设计主要达到以下几个目的:掌握控制网平差课程设计具体内容、方法和步骤;通过理论联系实际,进一步巩固已学到的专业理论知识,并加深对理论的认识;培养学生对编写代码,上机调试和编写说明书等基本技能;锻炼学生阅读各类编程参考书籍及加以编程运用的能力。 二、设计内容及日程 在VB、 VC软件或matlab科学计算软件的平台上,选择的具体课程设计题目,进行程序设计与实现,共计10个工作日,工作程序如下: 三、设计的组织: 1.设计领导 (1)指导教师:由教研室指派教师、实验员兼任。

职责:全面组织设计大纲的实施,完成分管工作及相关技术指导。 (2)设计队长:学生班长兼任。 职责:协助教师做好本班学生的人员组织工作。 (3)设计组长:每组一人。 职责:组织执行下达的设计任务,安排组内各成员的工作分工。 2.设计分组 学生实习作业组由3~4人组成(含组长一人)。 四、设计内容 在VB、VC或MATLAB 软件平台上,按选择的设计题目进行相关程序开发 1、闭合导线简易平差、附合导线简易平差支导线计算 2、闭合水准网计算、附合水准网简易平差 3、地形图编号(新、旧两种方法) 4、误差椭圆的参数的计算与绘制误差椭圆 5、水准网严密平差 6、高斯正反算计算 7、高斯投影换带计算 8、七参数大地坐标转换(WGS84-bj54坐标转换、WGS84-CGCS2000坐标转换) 9、四参数坐标转换(西安80-bj54坐标转换、CGCS2000-bj54坐标转换、CGCS2000-西安80坐 标转换(平面) 10、大地高转换为正常高的计算 11、工程投影变形超限的处理 12、遥感图像数据处理 13、曲线(曲面)拟合 14、摄影测量空间后方交会 15、****管理信息系统设计与开发 五、上交成果 1) 小组利用vb、vc或matlab编写的软件包一个及测试数据一份 2)小组关于所开发程序设计说明书一份 3) 个人课程设计的心得一份 4)小组答辩PPT一份

网络编程课程设计

课程设计说明书 课程名称:Windows网络编程 设计题目:基于JA V A网络聊天室设计 学院:计算机科学与信息工程学院 专业班级:网络工程12级 指导教师: 小组成员: 2015年6月 目录 摘要 (1) 引言: (1) 1.需求分析 (1) 1.1需求分析 (1) 1.2系统简介 (2) 2. 系统开发技术 (2)

2.1 JAVA网络编程技术 (2) 2.2 Socket套接字 (3) 2.3 TCP三次握手 (3) 3. 系统总框图与功能分析 (4) 3.1系统总框图 (4) 3.2系统功能模块分析 (5) 4. 系统模块代码设计与分析 (6) 4.1系统流程分析 (6) 4.2类的设计与分析 (7) 4.3客户端模块部分代码 (7) 4.4服务器端模块部分代码: (9) 5.系统测试 (11) 6. 总结 (13) 7.成员分工 (13) 参考文献: (14)

网络聊天室 摘要:随着我国经济发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,对于人与人之间通过网络的沟通和交流,聊天室是人们最常见、最直接的交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型应用。本文所介绍的网络聊天系统是基于JAVA应用程序开发设计的,其主要特性是简单、面向对象、分布式、解释执行、安全、体系结构中立、可移植、高性能、多线程以及动态性。 关键词:局域网、聊天室、JAVA、Socket、WindowsSocket 引言:目前,基于TCP/IP协议的网络得到了普及和飞速的发展,Windows下的网络程序越来越显得重要。利用TCP/IP协议提供的编程接口———Socket(套接字)可以开发出TCP/IP应用程序。正确的使用WindowsSocket,就可使得不同地址下的进程得以在Windows 环境下顺利进行各种网络通信,因此研究WinSock更有意义。而基于TCP/IP协议网络环境下的应用程序是通过客户机/服务器(C/S)作用方式模式在网络(应用)编程界面实现的。本次实验采用java语言设计一个基于C/S模式的TCP网络通讯程序。实现客户端与服务器端之间的数据传输。 1.需求分析 1.1需求分析 根据当前网络的需求,网络聊天越来越受到各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而小组成员也都学习过JAVA 语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,小组成

C++面向对象程序设计课程设计报告

. 课程设计 课程名称C++面向对象程序设计题目名称公司人员管理系统 专业班级13级计算机科学与技术一班学生林涛、甑德胜、梁增辉 吴志伟、齐、江靖 学号51302011015、51302011016、51302011001 51302011037、51302011006、51302011009指导教师郭有强 二○一四年六月二十日

目录 一、引言 (2) 二、课程设计报告 (4) 1、问题描述 (4) 2、系统总体方案 (4) 3、设计思路和主要步骤 (5) 4、各功能模块和流程图 (5) (1)各功能模块 (5) (2)流程图 (6) 三、系统测试 (9) 四、心得体会 (15) 五、参考文献 (17) 附:程序设计代码 (18)

一、引言 1985年,管理信息系统的创始人,高登?戴维斯给出的管理信息系统的定义是:“它是一个利用计算机硬件和软件,手工作业,分析、计划、控制和决策模型,以及数据库的用户一机器系统。它能提供信息,支持企业或组织的运行、管理和决策。”这个定义说明了管理信息系统的组成要素:计算机硬件、软件、数据库、模型库和用户。 随着我国社会的不断进步,人们对管理信息系统越来越重视,再加之管理信息系统在管理方面所产生的巨大影响,也使得人们越来越关注管理信息系统的发展趋势。由于管理信息系统的发展受到以上各种变革因素的制约,传统的管理信息系统必然向现代管理信息系统发展,在这个发展过程中,管理信息系统的发展将会呈现出以下趋势: 管理信息系统将会越来越注重以人为本。管理科学的发展有科学管理理论、行为管理理论和现代管理理论三个发展阶段,正在向着越来越人性化的方向发展,即以人为本。基于管理学的这一研究视角,管理信息系统也将向着更加人性化的方向发展。在今后的管理信息系统中将会越来越注重人的因素,以人为出发点和中心,围绕着激发和调动人的主动性、积极性、创造性展开的,以实现人与社会共同发展的一系列管理活动。而且这种人性化还会贯穿于管理信息系统的开发设计与研究中,具体表现为今后的管理信息系统将具有更加友好的人机界面,易于人们操作,也会考虑到不同用户的不同需求,更加个性化。 管理信息系统向智能化方向发展。随着人工智能技术的发展,数据仓库、数据挖掘技术在管理信息系统中的应用,管理信息系统必将向着智能化方向发展,如产生了很多的决策支持系统、专家系统等等。智能化的管理信息系统具有思维模拟活动,它具有很高的自学习、自组织和进化性,并具有知识创新功能,可以解决非结构化事务,在决策中处于主导地位,是人的向导,在体系上将是大规模分布式计算模式,以基于网络神经元构件的智能网为主。 管理信息系统向集成化方向发展。随着当前系统集成技术的提高,集成技术和方法也逐步地运用到管理信息系统中。由于管理信息系统将包含多个子系统,因此将这些功能集合在一起以便更好地发挥它的作用,这就是集成化的管理信息系统。集成化的管理信息系统将管理信息系统的各个子系统有机地结合起来,达到互通信息、共享数据资源的目的,其支撑技术是数据库和计算机网络。集成管

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