当前位置:文档之家› POP3邮件接收器设计报告

POP3邮件接收器设计报告

POP3邮件接收器设计报告
POP3邮件接收器设计报告

POP3邮件接收器设计报告

1.POP3协议简介

1.1 POP3协议概述

POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。协议主要用于支持使用客户端远程管理在服务器上的电子邮件。

POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC 上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。

1.2 对于POP3的个人理解

根据大家对POP3协议的理解,POP3采用“离线”邮件处理,只是在登录之后的一段时间内POP3客户端与POP3服务器建立起连接,对比本地的邮件和服务器之上的邮件,从而得到未阅读的邮件的列表,进而将所有为阅读的邮件下载到本地,在本地进行存储和管理,下载完毕,并不在服务器端删除已经下载了的邮件,正是基于这样对于POP3协议的理解,我们实现了本款POP3邮件接受程序,简言之,我们实现的POP3邮件接受程序采用的是改进了的POP3协议。

2.开发环境

2.1 开发环境简介

Unix操作系统

C++编程语言

QT跨平台的C++图形用户界面应用程序框架

2.2开发环境选择

本款POP3邮件接受器是在unix环境下采用C++语言开发的建立在QT平台之上的邮件接收程序,其中具体的业务逻辑实现所使用到的知识是在标准C++STL范围之内,换言之,QT只是用来显示界面,其中具体的实体类大部分是可以转移到windows或者其他操作系统之上的。

由于QT本身是一个完整的图形用户界面应用程序框架,而且具有跨平台的特性,本身具有现成的免费的IDE,对于初试在unix环境上编写图形用户界面程序的我们,是一个不错的选择。

3.POP3协议类的封装

由于邮件接收程序采用的是POP3协议,因此,在项目进展的初期,首先考虑到的自然是对于POP3协议的封装实现。

3.1 思考过程

在确定了对于POP3协议的理解之后,自然会考虑到对POP3协议类的封装实现。所谓的POP3连接,最底层的是一个Socket连接,作为客户端,所需要的只是一个客户端socket,

只设计到socket(), connect(), read() write(), close()函数,因此,为了方便调用,首先对客户端socket进行了封装。具体结构如下图所示:

对于各种命令,没有采用一般的各个函数的方法,因为不同命令得到的信息之间可以相互关联,比如LIST命令,和stat命令之间返回的信息之间有关联的地方。

3.2 CClientSocket类

CClientSocket是对unix环境中socket套接字的一个简单封装,使得更方便使用,剔除了不需要用的服务器端socket的方法。具体函数成员如上图所示,一下简单的介绍:3.2.1 数据成员

int socketfd; //套接字的标识

bool isConnected; //是否已经建立连接的标识

bool isClosed; //标识是否已经断开连接

string lastErrorMsg; //最后一次错误的信息

3.2.2 函数成员

CClientSocket(); //构造函数

CClientSocket(int domain, int type, int protocol);

bool connectByIp(string ip, int port);//通过IP地址连接服务器

bool connectByServerName(string serverName, int port);

//通过主机名连接服务器void close();//关闭套接字

string readLine(); //读取一行内容,读到\n或者\r\n结束int write(string content); //向socket中写入一个字符串

string getLastErrorMsg(); //获取上次出错信息

3.2.3 特色函数说明

其中由于unix环境中的read、write函数本身是阻塞的,也就是当套接字缓冲区没有内容时,函数会阻塞,直到有内容为止,在readLine()函数中进行了等待处理。readLine 函数中使用了系统的select函数每隔一段时间判断设备是否可读,通过控制循环次数,成功实现了对等待时间的控制。

timeval timeout={0, 10};

fd_set fds;

int i = 0;

while(i<10){

FD_ZERO(&fds); // 每次循环要清空集合,否则看不出描述服变化

FD_SET(sockfd, &fds);

switch(select(sockfd+1, &fds, &fds, NULL, &timeout)){

case -1:

return "The socket is not readable.";

break; // 出错

case 0:

break; // 再次询问

default:

if(FD_ISSET(sockfd, &fds)){ //测试文件是否可读

//返回内容

goto L;

}

}

i++;

}

return "time out";

L:

char ch; // 用来保存从socket中读入的一个字符

int bytes; // 用来保存从socket中读入的字节数目

string result="";

while(true){

bytes= ::read(sockfd,&ch, 1);

if(bytes!=1){ break; }

result.push_back(ch);

// 遇到换行符号那么中断循环,换行符号有"\r\f","\r\n","\n"

if (ch=='\n' || ch=='\f')

{

break;

}

}

3.3 CPOP3Command结构

CPOP3Command为枚举类型,分别对应与POP3协议中的各种命令,其中包括USER, PASS, LIST, STAT, RETR, DELE, RSET, TOP, NOOP, QUIT, APOP, UIDL 命令,几乎包含完整

的POP3协议中的各种命令,如上图所示。

3.4 CPOP3Request,类

CPOP3Request是对一条POP3命令的封装,方便向服务器端发送一条命令。

3.4.1 数据成员

CPOP3Command command; //枚举值command,标识命令的类型,

vector params; //params,用来存储参数信息。

3.4.2 函数成员

CPOP3Request(); //构造函数

CPOP3Command getCommand(); //command的访问器

void setCommand(CPOP3Command command);

bool addParam(const string& param); //添加参数

bool addParam(int param); //添加一个整型的参数

bool rmvParam(int pos); //删除指定位置的参数

vector& getParams(); //获取参数列表

string getParam(int pos); //返回指定位置上的参数

void generateFromString(string comStr); //从一个string对象进行初始化string toString(); //将request对象序列化为字符串

3.5 CPOP3Response类

CPOP3Response类用于保存解析从服务器得到的响应信息之后的结果。

3.5.1数据成员

int totalMsgNumber; //用来存储总的邮件数目

int totalMsgSize; //用来存储总的邮件尺寸

vector pop3Msgs;//暂时存放单封邮件的信息,包括大小等

3.5.2 函数成员

CPOP3Response(); //构造函数

int getTotalMsgNumber(); //获取总的邮件数目

void setTotalMsgNumber(int msgNumber); //设置总的邮件数目

int getTotalMsgSize(); //获取总的邮件尺寸

void setTotalMsgSize(int msgSize); //设置总的邮件尺寸

vector& getPOP3Msgs();//获取邮件列表

CPOP3Message* getPOP3MsgBySessionID(int sessionID);//获取制定的整型ID的邮件 CPOP3Message* getPOP3MsgByUID(string uid);//获取制定UID的邮件

bool addPOP3Msg(CPOP3Message& msg); //向邮件列表中添加一个邮件bool rmvPOP3Msg(int sessionID); //删除制定整型ID的邮件

3.6 CPOP3Connection类

CPOP3Connection类用于直接与POP3服务器进行交互。

3.6.1 数据成员

string username; //表示用户名,对应于用户邮箱的账户

string password; //对应于邮箱的密码

string host; //对应于POP3服务器的主机名称

int port; //对应与端口号

int total; //记录总的邮件数目

bool isConnected; //用于标识是否成功建立与服务器的连接

vector< pair > resultMessage;//用于保存提示信息

3.6.2 函数成员

CPOP3Connection(string username, string password, string host, int port=110);//构造函数

CPOP3Connection();

string getUsername(); //获取用户名

void setUsername(string username); //设置用户名

string getPassword(); //获取密码

void setPassword(string password); //设置密码

string getHost(); //获取主机名

void setHost(string host); //设置主机名

int getPort(); //获取端口号

void setPort(int port); //设置端口号

vector > getResultMessage();//获取提示信息

bool connect(); //连接到服务器,此处指的是发送用户名、密码 void disconnect(); //断开到服务器的连接,发送quit命令bool executeCommand(CPOP3Request& request, CPOP3Response& response);//执行命令

int getTotal(); //获取总的邮件数目

3.6.3 特色函数说明

bool executeCommand(CPOP3Request& request, CPOP3Response& response);是本类中最具特色的函数,request使用引用是为了加快效率, response则是为了保存从服务器返回信息提取后得到的结果,因此使用引用。

此处并没有采用一般的方法,对应与每一种指令创建一种函数,这样做可以使得更加灵活的添加或者删除对于某种命令的支持。类似于适配器设计模式达到的效果比如向socket中发送 USER songdaojun2008\r\n 只需

CPOP3Request resuest.setCommand(USER);

request.addParam("songdaojun2008");

CPOP3Response response;

con.executeCommand(request, response);

3.7 CPOP3Client 类

CPOP3Client类用于GUI和底层代码交互的接口,提供对界面控件事件的直接调用函数。

CPOP3Client类继承自QThread类,利用线程实现邮件的接收的初始化工作。

3.7.1 数据成员

CPOP3Connection con; // 与服务器之间的连接

CPOP3Folder folder; // 本地邮件状态的维护

int current; // 当前正在下载的邮件数

string fileDir; // 邮件保存文件夹

3.7.2 函数成员

CPOP3Client(string username, string password, string host, int port);

~CPOP3Client();

// 点击登录后调用,返回信息为是否登录成功的标识

bool login();

// 启动线程

void initialize()

{

start(HighestPriority);

}

// 列出所有已读邮件的主题

vector listSubectOfHasReadMails();

// 列出所有未读邮件的主题

vector listSubectOfHasNotReadMails();

// 列出所有已删除邮件的主题

vector listSubectOfHasDeletedMails();

// 删除已读邮件列表中的邮件

bool deleteMailFromHasRead(int index);

// 从未读邮件列表中删除邮件

bool deleteMailFromHasNotRead(int index);

// 将已删除的邮件的状态设置为已读

bool setMailHasReadFromDelete(int index);

// 将未读的邮件设置为已读

bool setMailHasReadFromHasNotRead(int index);

// get an email UID by the index and type

string getMailUIDByIndex(int index, int type);

// 获取连接过程中从服务器传来的提示信息

vector > getMessageFromServer();

// 获取邮件总数

int getTotal();

// 用户退出登录后调用,用于进行善后处理,保存配置信息到配置文件中void finalize();

// 重写继承自 QThread的run函数,将服务器邮件下载到本地并分类

void run();

// 自定义signals,实现GUI的进度条功能

void notify(int);

3.7.3 特色说明

本身该类继承自QThread类,利用多线程机制实现邮件下载的同时显示进度条进度,实现的run()函数中通过调用msleep(50)来实现进度条的更新。

run()函数主要实现从服务器将邮件下载到本地,并进行分类:未读、已读、已删除,并实现相对应的接口供上层GUI调用。

4. 本地邮件管理的实现

由于正如本文开始部分所述POP3邮件接收程序将邮件从服务器下载到本地进行管理,只在用户登录的初期和服务器建立连接,对比邮件列表,下载新的邮件,然后对本地的进行管理,不管是读邮件还是删除邮件都是在本地进行。正是基于此思想,编写了本地邮件管理

模块.

4.1 MailInfo结构

MailInfo结构是用来记录邮件在本地存在的状态信息,包括邮件是否已读,是否已经被删除。

4.1.1 成员

string uid; //邮件的UID

bool hasRead; //邮件是否已读

bool hasDeleted; //邮件是否已从本地删除

4.2 CPOP3Folder类

CPOP3Folder类主要用于从本地文件中提取所有本地主机已经访问过的邮件的状态信息。并再次基础之上可以获取到所有本地已读邮件的UID的列表,本地未读邮件的UID的列表以及本地已经删除的邮件的UID的列表,将邮件从本地删除只是将邮件的删除标记为标记为真。

4.2.1 数据成员

vector mailInfos; //所有本地已经访问过的邮件的列表

4.2.2 函数成员

CPOP3Folder(); //构造函数

// 从指定路径的文件加载记录已经访问过的邮件的状态

bool loadMailsStateFromFile(string filePath);

// 将已经访问过的邮件态的状态记录到文件中

bool saveMailsStateToFile(string filePath);

// 获取储存本地已经访问过的邮件状态的向量

vector& getMailsState();

// 向已经访问过的邮件状态的向量中添加一条信息

void addMailInfo(MailInfo& mailInfo);

// 向已经访问过的邮件状态的向量中添加一个vector中的所有新邮件的信息

void addNewMailInfos(const vector& mailInfos);

MailInfo* getMailInfoByUID(string uid); //获取特定UID的邮件的状态信息

vector listHasNotReadMailUIDs(); //返回本地所有未读邮件的UID的集合// 返回本地所有已读邮件的UID的集合

vector listHasReadMailUIDs();

// 返回本地所有已经删除邮件的UID的集合

vector listHasDeletedMailUIDs();

4.3 本地邮件管理界面

本地邮件保存在当前路径下的 mails/文件夹下,每个用户名/服务器对应一个文件夹,该文件夹下面即是用户的全部邮件及邮件状态文件mailState.config。

本地邮件夹

用户所有邮件

5.邮件解析模块

在基本实现本地邮件管理的情况下,就该考虑邮件解析了,邮件解析设计到解码,字符集转换,以及MIME协议的相关内容,是本POP3邮件解析器的难点。

5.1 实现思路

首先,涉及到的是邮件格式,MIME,自然通过对MIME协议的进一步学习,对整个解决方案的推出起到至关重要的作用。

其次,解码,如何顺利的base64解码,以及实现字符集gbk到utf8的转换自然很重要。

5.2 Base64类

通过百度以及各种途径,对base64编码有了更深层次的认识,在此基础之上,融合他人解码代码上的特色,实现了这个可以编码解码的类。如下所示:

5.2.1 数据成员

static char *base64_encoding;//存放解码时用到的字符串,包含之间的转换关系5.2.2 函数成员

5.2.2.1 公有的函数成员

//对一个string对象进行base64编码

static string Base64Encode(string instr);

//对一个string对象进行base64解码

static string Base64Decode(string instr);

//编码,对一个字符数组进行base64编码

static int Base64Encode( unsigned char *inBuf, int inLen, char *outBuf, int outLen );

//解码,对一个base64编码的字符数组进行解码

static int Base64Decode(char *inBuf, unsigned char *OutBuf, int size);

5.2.2.2 私有的函数成员

Base64();

//获取一个字符的base64值

static char GetBase64Value(char ch);

5.3 QuotedPrintable类

QuotedPrintable类实现了QuotedPrintable的编码以及解码。

5.3.1 函数成员

5.3.1.1 公有函数成员

//对一个string对象进行QuotedPrintable编码

static string QuotedPrintableEncode(string srcString, int nMaxLineLen);

//对一个QuotedPrintable编码的string对象进行解码

static string QuotedPrintableDecode(string srcString);

//对字符串进行QuotedPrintable编码

static int QuotedPrintableEncode(const unsigned char* pSrc, int nSrcLen, char* pDst, int nMaxLineLen);

//对QuotedPrintable编码的字符串进行解码

static int QuotedPrintableDecode(const char* pSrc, int nSrcLen, unsigned char* pDst);

5.3.1.2 私有函数成员

QuotedPrintable();

5.4 Converter类

Converter类实现了不同字符集间字符串的转化。

5.4.1 函数成员

public:

//实现字符串从不同字符集之间的转换

static string convertBetweenCharset(string fromCharset, string toCharset, string oricontent);

private:

Converter();

5.5 Node类

由于MIME格式的文件本身可以解析成一棵树,而树中的节点包括文本节点以及附件节点

//节点类,为抽象类,类似

class Node{

public:

Node():parent(NULL){}

virtual ~Node(){}

virtual void printNode(ostream&){}

friend ostream& operator<< (ostream& out, Node& node){

node.printNode(out);

return out;

}

public:

MIMENode * parent;//父指针

};

5.6 TextNode类

对应于text/plain或者text/tml类型。

//文本节点类

class TextNode: public Node{

public:

void printNode(ostream& out){

out<<"TextNode: "<

out<

out<<"End of TextNode"<

}

public:

string content;//文本内容

};

5.7 文件节点 FileNode

FileNode对应于MIME中的附件,或者是嵌入的图片等等。

//文件节点,用于储存得到的附件信息

class FileNode : public Node{

public:

FileNode():isAttach(false), fileName(""), fileType(IMAGE), content(""){}

void printNode(ostream& out){

out<<"FileNode: "<

out<<"fileName: "<

out<<"content: "<

out<<"End of FileNode"<

}

public:

bool isAttach;

string fileName;

enum{ IMAGE, APPLICATION, } fileType;

string content;

};

5.8 MIMENode类

//MIME节点类,只有MIME节点可以包含多个子节点

class MIMENode : public Node{

public:

//析构函数,销毁所有子节点

~MIMENode(){

for(vector::iterator iter=children.begin(); iter!=children.end(); iter++){

delete *iter;

}

}

void printNode(ostream& out){

out<<"MIMENode: "<

for(vector::iterator iter=children.begin(); iter!=children.end(); iter++){

(*iter)->printNode(out);

}

out<<"End of MIMENode"<

}

public:

enum{ MIXED, ALTERNATIVE, RELATED, SIGNED } nodeType;//标识MIME节点的类型 vector children;//保存各个孩子的指针

string boundary;//边界,在分析过程中使用到

};

5.9 MIME类

MIME类中只有一个函数,是解析特定目录下的一个文件得到一棵文档树,返回类型为这棵树的根节点。

//MIME

class MIME

{

public:

//获取邮件解析之后的根节点

static Node* generateNodeFromFile(string fileDir, string uid);

private:

MIME();

};

5.10 CPOP3MessageHeader结构

//CPOP3MessageHeader结构保存文件头信息

struct CPOP3MessageHeader{

string subject;//主题

string date;//日期

string from;//发件人

string to;//收件人

};

5.11 CPOP3Entity结构

//保存附件信息的结构

struct CPOP3Entity{

string fileName;

string content;

5.12 CPOP3MessageBody结构

//邮件主体部分的结构

struct CPOP3MessageBody{

string contentType;//邮件类型, text/html/ multipart/fixed等,诸如此类

string content;//邮件主题部分

vector attachments;//附件部分

};

5.12 CPOP3Message类

CPOP3Message类中,数据成员主要是存放在与服务器进行交互时候需要存储的数据信息。其中包含解析邮件的方法为静态方法,放在这个类中主要是他的名字比较容易给人这种感觉。邮件类,并不含有具体的邮件的具体字段,只在与服务器交互的过程中使用,具体解析邮件的过程已经作为静态函数

5.12.1 数据成员

int sessionID;//在一次于服务器会话中的整型ID

string msgUID;// 运行UIDL命令后得到的UID

int msgTotalSize;//邮件总的长度

5.12.2 函数成员

//无参构造函数,主要在与服务器交互时使用

CPOP3Message();

//sessionID是在与服务器交互时的ID

int getSessionID();

void setSessionID(int sessionID);

string getMsgUID();

void setMsgUID(string msgUID);

int getMsgTotalSize();

void setMsgTotalSize(int totalSize);

public:

//根据邮件的UID在本地读取一个文件并解析出邮件的主题

static string generateSubjectFromFile(string fileDir, string uid);

//根据邮件的UID在本地读取一个文件并解析出邮件的头

static CPOP3MessageHeader generateHeaderFromFile(string fileDir, string uid);

//根据邮件的UID在本地读取一个文件并解析出邮件的头

static CPOP3MessageBody generateContentFromFile(string fileDir, string uid);

private:

//对一个字符串进行解码,转化为UTF8

static string convertStringToUTF8(string encodedsubject);

friend class MIME;

6.日志模块

将程序的每次操作写入日志,包括程序的启动、用户名、服务器、与服务器的交互以及本地的删除、还原操作等。

该模块仅有一个类:CPOP3WriteLog类。

6.1 CPOP3WriteLog类

CPOP3WriteLog类主要实现将程序操作信息写入日志文件。

6.1.1 数据成员

ofstream out; // 输出流

6.1.2 函数成员

CPOP3WriteLog();

~CPOP3WriteLog();

void writeTop(); // 写入头部信息,为程序的启动时间

void writeUserInfo(string username, string server);

// 将用户名、服务器信息写入日志

void writeContent(string content);

// 将主要操作写入日志,包括和服务器的通信及本地操作void writeEnd(); // 写入结束信息,标志程序结束

6.2 日志截图如下:

日志片段截图

7.GUI模块

GUI由两部分组成:登陆界面和详细信息界面。

7.1 登陆界面

CPOP3Receiver类,继承自QMainWindow类。

7.1.1 数据成员

Ui::CPOP3Receiver *ui; // 界面UI

CPOP3ReceiverDetails details;

// CPOP3ReceiverDetails对象,用于启动详细信息界面 CPOP3Client *client; // CPOP3Client对象,用于底层方法调用

CPOP3WriteLog log; // CPOP3WriteLog对象,用于写日志

7.1.2 函数成员

explicit CPOP3Receiver(QWidget *parent = 0);

~CPOP3Receiver();

void clear(); // 清空所有输入框

const char* intToString(int i); // int 转换为char *

信号槽:

void onLoginClicked(); // 单击登陆按钮事件

void onResetClicked(); // 单击重置按钮事件

void display(); // 关闭当前窗口并显示详细信息窗口

void OnNotify(int current); // 进度条更新

7.1.3 登陆界面截图

登陆界面

信息不完整提示

进度条

7.2 详细信息界面

CPOP3ReceiverDetails类,继承自QMainWindow类。

7.2.1 数据成员

Ui::CPOP3ReceiverDetails *ui; // 界面UI

CPOP3Client *client; // CPOP3Client对象,用于调用底层接口

QStandardItemModel *model; // QStandardItemModel对象,用于创建QTreeView QStandardItem *notread; // QStandardItem对象,未读邮件节点

QStandardItem *read; // QStandardItem对象,已邮件节点

QStandardItem *deleted; // QStandardItem对象,已删除点

CPOP3WriteLog detailslog; // CPOP3WriteLog对象,用于写日志

7.2.2 函数成员

explicit CPOP3ReceiverDetails(QWidget *parent = 0);

~CPOP3ReceiverDetails();

void initial(CPOP3Client* &client); // 初始化左侧邮件void freshTreeView(); // 刷新QTreeView控件

信号槽:

void ItemClicked(); // QTreeView子节点单击事件 void ItemDoubleClicked(); // QTreeView子节点双击事件 void onDeleteClicked(); // 删除按钮单击事件

void onRevertClicked(); // 还原按钮单击事件

void onExitClicked(); // 退出按钮单击事件

7.2.3 详细信息界面截图

详细信息界面初始化

邮件详细信息

邮件分类

课程设计报告模板)

课程设计报告模板()

————————————————————————————————作者: ————————————————————————————————日期: ?

课程设计(论文)任务书 软件学院软件+电商专业09级(2)班 一、课程设计(论文)题目基本模型机设计与实现 二、课程设计(论文)工作自2011年6月 20 日起至2011年 6月 24日止。 三、课程设计(论文) 地点:计算机组成原理实验室(5#301) 四、课程设计(论文)内容要求: 1.课程设计的目的 通过课程设计的综合训练,在掌握部件单元电路实验的基础上,进一步掌握整机 概念。培养学生实际分析问题、解决问题和动手能力,最终目标是想通过课程设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。 2.课程设计的任务及要求 1)基本要求? (1)课程设计前必须根据课程设计题目认真查阅资料; (2)实验前准备好实验程序及调试时所需的输入数据; (3)实验独立认真完成; (4)对实验结果认真记录,并进行总结和讨论。 2)课程设计论文编写要求 (1)按照书稿的规格撰写打印课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有问题描述、实验原理、设计思路、实验步骤、调试过程与遇到问题的解决方法、总结和讨论等 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查:

(1)出勤情况和课设态度; (2)设计思路; (3)代码实现; (4)动手调试能力; (5)论文的层次性、条理性、格式的规范性。 4)参考文献 [1]王爱英.计算机组成与结构[M]. 北京:清华大学出版社, 2007. [2] 王爱英. 计算机组成与结构习题详解与实验指导[M]. 北京:清华大学出版社, 2007. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 实验与调试 3 实验室 撰写论文 1 图书馆 6)任务及具体要求 设计实现一个简单的模型机,该模型机包含若干条简单的计算机指令,其中至少包括输入、输出指令,存储器读写指令,寄存器访问指令,运算指令,程序控制指令。学生须根据要求自行设计出这些机器指令对应的微指令代码,并将其存放于控制存储器,并利用机器指令设计一段简单机器指令程序。将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符 合设计要求,并对程序运行结果的正、误分析其原因。 学生签名: 亲笔签名 2011年6月20 日 课程设计(论文)评审意见 (1)设计思路:优( )、良()、中( )、一般()、差( ); (2)代码实现:优()、良()、中()、一般()、差();

系统设计报告模板

CRM系统设计 1. 功能模块划分及描述 系统功能模块结构图 系统功能模块描述 2. 系统配置设计 3.系统流程图设计 4. 代码设计 5. 数据库设计 概念结构设计 逻辑设计 6. 系统模块设计

1. 功能模块划分及描述 客户关系管理系统是一个典型的数据库开发应用程序,由客户管理模块、库存管理模块、服务管理模块、报表管理模块、email管理模块、用户管理模块组成,系统功能模块及描述如下。 系统功能模块结构图 图1 系统功能模块结构图 系统功能模块描述 1、客户管理模块 该模块主要功能是对客户信息、客户联系人信息、合同信息进行添加、删除、查询等操作。 2、库存管理模块 该模块的主要功能是管理入库、出库信息、产品信息进行管理,其中包括对库存信息、产品信息进行添加、删除、查询等操作。 3、服务管理模块 该模块主要功能是对客户反馈信息进行添加、删除、查询等操作。

4、报表管理模块 该模块主要通过查询条件,对各种信息进行查询,并将得到的结果导出Excel表、进行打印报表等操作(其中信息包括:客户信息、联系人信息、反馈客户信息、库存信息)。 5、邮件管理模块 该模块主要管理客户联系人email地址信息,对企业客户之间的email文件进行管理,向客户发送邮件。 6、用户管理 该模块主要管理用户信息的添加、删除等操作,并设置用户的使用权限。 2. 系统配置设计 硬件平台: CPU:P4 ; 内存:2GB以上。 软件平台: 操作系统:Windows xp/ Windows 7/ Windows 2003; 数据库:SQL Server 2000; 浏览器:,推荐使用; Web服务器:; 分辨率:最佳效果1024*768。 3.系统流程图设计 系统流程图又叫事务流程图,是在计算机事务处理应用进行系统分析时常用的一种描述方法(另一个是数据流图),它描述了计算机事务处理中从数据输入开始到获得输出为止,各个处理工序的逻辑过程。 根据需求分析的要求对系统进行设计,系统流程图如图2:

智能化电子系统设计报告

目录 1 前言(绪论) (2) 2 总体方案设计 (3) 2.1方案比较4 2.1.1方案一:长期寿命测试 (4) 2.1.2方案二:加速(短期)寿命测试 (4) 2.2方案论证4 3 单元模块设计 (5) 3.1各单元模块功能介绍及电路设计5 3.1.1热阻( Rθ ) 的测量 (5) 3.1.2结温测量 (6) 3.1.3光通量的测量 (7) 3.1.4串口电路的设计 (8) 3.1.5温度控制和报警电路设计 (9) 3.1.6 过零触发电路设计 (9) 3.2电路参数的计算及元器件10 3.2.1 LED灯常用电路参数 (10) 3.2.2电学特性 (10) 3.3特殊器件的介绍13 3.3.1 ADM3251E (13) 3.3.2 ADUC848 (14) 3.3.3 555芯片 (15) 3.4各单元模块的联接17 4 软件设计 (18) 4.1 PROTEL99 SE简介18 4.2软件设计结构及功能18 5 系统调试 (19) 6 系统功能及指标参数 (20) 6.1说明系统能实现的功能20 6.2系统指标参数测试及测试方法说明20 6.2.1失效时间和失效数的确定 (20) 6.2.2 数据处理方法 (22) 6.3系统功能及指标参数分析22 7 结论 (23) 8 总结与体会 (24) 9 参考文献 (25) 附录1:相关设计图 (26) 附录2:元器件清单表 (27) 附录3:相关设计软件 (28)

1 前言(绪论) 1986 年,在蓝宝石基底上沉积高品质GaN 晶体获得成功,并且在1993 年开发出了高亮度蓝光发光二极管( LEDs) 。至今,人们仍在对高亮度蓝光 LED 进行不断地完善。在 1996 年,开发出了采用蓝光 LED 与黄色荧光粉相结合发出白光的 LED 产品并将其商业化[1]。21 世纪照明 METI 国家(Akari) 项目是一项基于高效率白光 LED 照明技术的工程,它利用的是近紫外线 LED 与荧光粉系统相结合的方法,该项目于1998 年启动,其第一阶段的项目已于 2004 年完成。 作为电子元器件,发光二极管(Light Emitting Diode-LED)已出现40多年,但长久以来,受到发光效率和亮度的限制,仅为指示灯所采用,直到上世纪末突破了技术瓶颈,生产出高亮度高效率的LED和兰光LED,使其应用围扩展到信号灯、城市夜景工程、全彩屏等,提供了作为照明光源的可能性。随着LED应用围的加大,提高LED可靠性具有更加重要的意义。LED具有高可靠性和长寿命的优点,在实际生产研发过程中,需要通过寿命试验对LED芯片的可靠性水平进行评价,并通过质量反馈来提高LED芯片的可靠性水平,以保证LED芯片质量,为此我司在实现全色系LED产业化的同时,开发了LED芯片寿命试验的条件、方法、手段和装置等,以提高寿命试验的科学性和结果的准确性。 近些年来,LED 照明因具有许多优点,例如长寿命、低能耗、体积小等而非常有吸引力。最早 LED 只是被用来替换小型白炽灯充当指示器。在其光效有所提高后,LED 被应用于显示器中。随着其光效和总光通量的进一步改善,LED 开始被应用于日常照明领域。对于普通照明设备而言, LED 有限的光通量是一个难以解决的问题。要想获得高光通量就需要有高密度基底和大的工作电流。这将导致LED 产生热量、温度升高, 损坏LED 模块。 随着LED生产技术水平的提高,产品的寿命和可靠性大为改观,LED的理论寿命为10万小时,如果仍采用常规的正常额定应力下的寿命试验,很难对产品的寿命和可靠性做出较为客观的评价,而我们试验的主要目的是,通过寿命试验掌握LED芯片光输出衰减状况,进而推断其寿命。 本设计介绍了LED芯片寿命试验过程,提出了寿命试验条件,完善的试验方案,消除可能影响寿命试验结果准确性的因素,保证了寿命试验结果的客观性和准确性。采用科学的试验线路和连接方式,使寿命试验台不但操作简便、安全,而且试验容量大。

课程设计报告【模板】

模拟电子技术课程设计报告设计题目:直流稳压电源设计 专业电子信息科学与技术 班级电信092 学号 200916022230 学生姓名夏惜 指导教师王瑞 设计时间2010-2011学年上学期 教师评分 2010年月日

昆明理工大学津桥学院模拟电子技术课程设计 目录 1.概述 (2) 1.1直流稳压电源设计目的 (2) 1.2课程设计的组成部分 (2) 2.直流稳压电源设计的内容 (4) 2.1变压电路设计 (4) 2.2整流电路设计 (4) 2.3滤波电路设计 (8) 2.4稳压电路设计 (9) 2.5总电路设计 (10) 3.总结 (12) 3.1所遇到的问题,你是怎样解决这些问题的12 3.3体会收获及建议 (12) 3.4参考资料(书、论文、网络资料) (13) 4.教师评语 (13) 5.成绩 (13)

昆明理工大学津桥学院模拟电子技术课程设计 1.概述 电源是各种电子、电器设备工作的动力,是自动化不可或缺的组成部分,直流稳压电源是应用极为广泛的一种电源。直流稳压电源是常用的电子设备,它能保证在电网电压波动或负载发生变化时,输出稳定的电压。一个低纹波、高精度的稳压源在仪器仪表、工业控制及测量领域中有着重要的实际应用价值。 直流稳压电源通常由变压器、整流电路、滤波电路、稳压控制电路所组成,具有体积小,重量轻,性能稳定可等优点,电压从零起连续可调,可串联或关联使用,直流输出纹波小,稳定度高,稳压稳流自动转换、限流式过短路保护和自动恢复功能,是大专院校、工业企业、科研单位及电子维修人员理想的直流稳压电源。适用于电子仪器设备、电器维修、实验室、电解电镀、测试、测量设备、工厂电器设备配套使用。几乎所有的电子设备都需要有稳压的电压供给,才能使其处于良好的工作状态。家用电器中的电视机、音响、电脑尤其是这样。电网电压时高时低,电子设备本身耗供电造成不稳定因家。解决这个不稳定因素的办法是在电子设备的前端进行稳压。 直流稳压电源广泛应用于国防、科研、大专院校、实验室、工矿企业、电解、电镀、充电设备等的直流供电。 1.1直流稳压电源设计目的 (1)、学习直流稳压电源的设计方法; (2)、研究直流稳压电源的设计方案; (3)、掌握直流稳压电源的稳压系数和内阻测试方法。 1.2课程设计的组成部分 1.2.1 设计原理

系统设计报告模板范文

系统设计报告模板

CRM系统设计 1. 功能模块划分及描述 1.1系统功能模块结构图 1.2系统功能模块描述 2. 系统配置设计 3.系统流程图设计 4. 代码设计 5. 数据库设计 5.1概念结构设计 5.2逻辑设计 6. 系统模块设计

1. 功能模块划分及描述 客户关系管理系统是一个典型的数据库开发应用程序,由客户管理模块、库存管理模块、服务管理模块、报表管理模块、email管理模块、用户管理模块组成,系统功能模块及描述如下。 1.1系统功能模块结构图 图1 系统功能模块结构图 1.2系统功能模块描述 1、客户管理模块 该模块主要功能是对客户信息、客户联系人信息、合同信息进行添加、删除、查询等操作。

2、库存管理模块 该模块的主要功能是管理入库、出库信息、产品信息进行管理,其中包括对库存信息、产品信息进行添加、删除、查询等操作。 3、服务管理模块 该模块主要功能是对客户反馈信息进行添加、删除、查询等操作。 4、报表管理模块 该模块主要经过查询条件,对各种信息进行查询,并将得到的结果导出Excel表、进行打印报表等操作(其中信息包括:客户信息、联系人信息、反馈客户信息、库存信息)。 5、邮件管理模块 该模块主要管理客户联系人email地址信息,对企业客户之间的email文件进行管理,向客户发送邮件。 6、用户管理 该模块主要管理用户信息的添加、删除等操作,并设置用户的使用权限。 2. 系统配置设计 硬件平台: CPU:P4 2.8GHz; 内存:2GB以上。 软件平台:

操作系统:Windows xp/ Windows 7/ Windows ; 数据库:SQL Server ; 浏览器:IE6.0,推荐使用IE8.0; Web服务器:IIS5.0; 分辨率:最佳效果1024*768。 3.系统流程图设计 系统流程图又叫事务流程图,是在计算机事务处理应用进行系统分析时常见的一种描述方法(另一个是数据流图),它描述了计算机事务处理中从数据输入开始到获得输出为止,各个处理工序的逻辑过程。 根据需求分析的要求对系统进行设计,系统流程图如图2:

电子系统设计报告

课程设计实践报告 一、课程设计的性质、目的与作用 本次电子系统设计实践课程参照全国大学生电子设计模式,要求学生综合利用所学的有关知识,在教师的指导下,分析和熟悉已给题目,然后设计系统方案、画原理图及PCB、软件编程,并做出课程设计报告。因此,在设计中,要求学生应该全面考虑各个设计环节以及它们之间的相互联系,在设计思路上不框定和约束同学们的思维,同学们可以发挥自己的创造性,有所发挥,并力求设计方案凝练可行、思路独特、效果良好。 本课程设计的目的是为了让学生能够全面了解电子电路应用系统的整个设计过程,逐步掌握系统开发的以下相关技术: (1)熟悉系统设计概念; (2)利用所学数电、模拟电路知识,设计电路图; (3)利用PROTEL软件画原理图及PCB; (4)熟悉系统项目设计报告填写知识; (5)培养团队合作意识。 通过本课程设计,有助于学生更好地了解整个课程的知识体系,锻炼学生实际设计能力、分析和思考能力,使其理论与实践相结合,从而为后续课程的学习、毕业设计环节以及将来的实际工作打好坚实的基础。 二、课程设计的具体内容 电子系统设计实践课程就是锻炼学生系统设计、分析和思考能力,全面运用课程所学知识,发挥自己的创造性,全面提高系统及电路设计、原理图及PCB 绘画等硬件水平和实际应用能力,从而体现出电子系统设计的真谛。下面是各个设计阶段的具体内容。 1.系统方案认识 根据所设定的题目,能够给出系统设计方案与思路

题目:信号发生器产生电路,请设计一个能产生正弦波、方波及三角波电路,并制作原理图,然后阐述其原理。 基本原理: 系统框图如图1所示。 图1 低频信号发生器系统框图 低频信号发生器系统主要由CPU、D/A转换电路、基准电压电路、电流/电 压转换电路、按键和波形指示电路、电源等电路组成。 其工作原理为当分别按下四个按键中的任一个按键就会分别出现方波、锯齿 波、三角波、正弦波,并且有四个发光二极管分别作为不同的波形指示灯。2、各部分电路原理 (1)DAC0832芯片原理 ①管脚功能介绍(如图5所示) 图5 DAC0832管脚图 1) DI7~DI0:8位的数据输入端,DI7为最高位。

城市轨道交通课程设计报告很齐全很完整的课程设计

城市轨道交通课程设计报告很齐全很完整的课 程设计 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

轨道交通课程设计报告指导老师:江苏大学武晓辉老师 一、项目背景及镇江市轨道交通建设必要性 镇江市位于北纬31°37′~32°19′,东经118°58′~119°58′,地处长江三角洲地区的东端,江苏省的西南部,北临长江,与扬州市、泰州市隔江相望;东、南与常州市相接;西邻南京市。镇江市域总面积3847平方公里,总体规划定位城市性质为国家历史文化名城,长江三角洲重要的港口、风景旅游城市和区域中心城市之一。 2005年,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求。镇江市为江苏省辖地级市,现辖京口、润州、丹徒三区,代管句容、丹阳、扬中三市。另有国家级经济技术开发区-镇江新区行使市辖区经济、社会管理权限。镇江全市总面积3848平方公里,人口311万人,市区户籍人口万人市,市区常住人口万人,人民政府驻润州区南徐大道68号。 内部城市空间结构调整:2005年,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求,建设轨道交通是未来城市规划的必然结果。 城市化发展水平规划: 近期(2000-2010):城市化水平达到:55% 城镇人口162万

中期(2010-2020):城市化水平达到:60% 城镇人口184万 远期(2020-2050):城市化水平达到:70% 城镇人口231万 城市等级规模规划: 中期:形成1个大城市,1个中等城市,2个小城市和38个小城镇的等级结构。 远期:形成1个特大城市,2个中等城市,1个小城市和27个小城镇的等级结构。 镇江位于南京都市圈核心层,是一座新兴工业城。镇江拥有2个国家级开发区、6个省级开发区、5个国家级高新技术产业基地,镇江市的经济发展水平居江苏省中等偏上水平。2013年实现国内生产总值亿元,完成公共财政预算收入亿元,城镇居民人均可支配收入32977元,农民人均纯收入16258元,增长%,;人均GDP73947元,居江苏省第5名。“三次产业”分别实现增加值亿元、亿元、亿元,同比分别增长%、%和%。 镇江高新区位于我市主城区的西部,晋升为国家级高新区后,就与东部的镇江国家级经济技术开发区(镇江新区)形成“两翼”,在提升经济体量的基础上,进一步提升经济质量,形成主城区“一体两翼”格局。同时,与苏南现代化示范区建设、国家自主创新示范区创建等重大机遇形成叠加优势。 经济发展规划: 近期:人均GDP达到万元,产业结构为∶∶41,财政总收入完成80亿元以上 中期:人均GDP达到6万元,产业结构为∶∶44,财政总收入150亿元以上。

数字电子系统设计报告模板

宁波工程学院 数字电子系统设计报告 设计题目: 学院名称:电子与信息工程学院 专业班级:电科12-X 学生姓名:XXX 学号:13401090XXX 指导教师:苏树兵 起讫时间:2016年06月20日至2016年06月29日

目录第一章设计任务 1.1 基本要求 1.2 发挥部分 第二章整体方案设计 2.1 基本原理及整体系统框图 2.2 算法设计 第三章硬件电路设计(按模块)3.1 XX电路设计(有几个写几个) 3.2 整体电路图 3.3 整机元件清单 第四章系统软件设计 4.1 主程序流程图 4.2 子程序流程图(有几个写几个) 第五章系统测试与结果分析 5.1 XX电路的调测 5.2 整体指标测试(有数据的需要附上)5.3 结果分析 第六章设计小结 6.1 设计任务完成情况 6.2 问题及改进 6.3心得体会 第七章任务分配及自评分 附录1 系统程序 附录2 实物图 参考文献

第一章技术指标 1.整体功能要求 频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。其扩展功能可以测量信号的周期和脉冲宽度。 2.系统结构要求 数字频率计的整体结构要求如图所示。图中被测信号为外部信号,送入测量电路进行处理、测量,档位转换用于选择测试的项目------频率、周期或脉宽,若测量频率则进一步选择档位。 数字频率计整体方案结构方框图 3.电气指标 3.1被测信号波形:正弦波、三角波和矩形波。 3.2 测量频率范围:分三档: 1Hz~999Hz 0.01kHz~9.99kHz 0.1kHz~99.9kHz 3.3 测量周期范围:1ms~1s。 3.4 测量脉宽范围:1ms~1s。 3.5测量精度:显示3位有效数字(要求分析1Hz、1kHz和999kHz的测量误

电子系统设计报告

电子系统设计与实践—— 具有报时报温功能的电子钟 设计者:电气83班 08041074刘湛 08041072 李旭 内容摘要 本次设计以AT89C52芯片为核心,辅以必要的外围电路,设计了一个简易的具有报时报温功能的电子钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用8个七段LED数码管来进行显示,LED采用的是动态扫描显示,利用74LS573进行数码管段驱动,利用ULN2803A进行位驱动。通过LED能够比较准确显示时、分、秒以及日期和当前室温。利用5个简单的按键分别实现对时间的调整,年月日显示的切换,温度显示切换。时钟日历来源于DS1302芯片。温度测量功能来源于DS18BU20芯片。 软件方面采用C语言编程,以完成功能实现。整个电子钟系统能完成时间的显示,调时,以及温度显示等功能。 关键词:电子系统设计AT89C52 LED数码管日历芯片DS1302 温度测量芯片DS18BU20

目录 一.实现功能、任务以及具体要求二.重要硬件简介及应用 三.功能的论证与实现 四.系统框图 五.总体设计系统电路原理图和PCB 版图 六.程序流程图 七.实验遇到的问题及改进 八.实验总结及感想 九.参考书目 十.源程序

一.实现功能、任务以及具体要求1.目的及任务: (1)通过查阅相关资料,深入了解温度测量相关知识; (2)学习动态显示方式的实现方法及原理; (3)复习“MCS-51单片机原理及C语言程序设计”,掌握其接口扩展; (4)确定具有报时报温功能的电子钟的原理图,构建硬件平台; (5)采用汇编或C语言编写应用程序并调试通过;(6)制作出样机并测试达到功能和技术指标要求;(7)写出设计报告和答辩PPT。 .2.具体工作内容: (1)技术要求: 1. 时钟日历来源于DS1302芯片。 2. 温度测量使用DS18BU20。 3. 定闹功能、蜂鸣器音提示。 4. 具有实时年月日显示和校时功能。 5. 六位数码管动态显示,可采用按键切换显示。(2)工作任务: 1.组建具有报时报温功能的电子钟的总体结构框图;

WEB课程设计报告

Web开发技术课程设计题目:学生信息管理系统 院系:软件工程 班级学号:软件13 -1(21,19) 姓名:唐波 同组成员:史伟良 指导教师:王双利 2014 年12 月12 日

Web开发技术课程设计任务书 一、题目:学生信息管理系统 二、设计要求 (1)史伟良负责设计与实现管理系统登陆界面;唐波负责设计与实现管理系统增删改查界面。 (2)查阅相关资料,自学具体课题中涉及到的新知识。 (3)采用结构化、模块化程序设计方法,功能要完善,具有一定的创新。 (4)所设计的程序有输入、输出。 (5)按要求写出了课程设计报告,于设计结束后2天提交了。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件总体设计、详细设计、软件的调试、总结、致谢、附录(带中文注释的程序清单)、参考文献。总体设计应配合软件总体模块结构图来说明软件应具有的功能;详细设计应用传统或N-S流程图和屏幕抓图说明;调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。 三、课程设计工作量 一般每人的程序量在200行有效程序行左右,不得抄袭。 四、课程设计工作计划 2014年12月8日,指导教师讲解布置题目,学生根据题目准备资料; 2014年12月8日,进行总体方案设计; 2014年12月8日~2014年12月10日,完成程序模块并通过独立编译; 2014年12月10日~2014年12月11日,将各模块集成为一完整的系统, 并录入足够数据进行调试运行; 2014年12月11日~2014年12月12日,验收、撰写课程设计报告。 指导教师签章: 专业主任签章:

Web开发技术课程设计指导教师评语与成绩

课程设计报告(模板)

《地震勘探课程设计》 报告 院系 班级 学生 学号 指导教师 完成日期2014年3月12日 长江大学工程技术学院

目录 一、课程设计目的 (3) 二、课程设计的容 (3) 三、课程设计原理 (3) 四、工区数据 (4) 五、课程设计步骤 (5) 1、建立工区 (5) 2、资料加载 (8) 3、层位标定和层位追踪 (10) 4、断层解释 (13) 5、构造图绘制 (14) 六、心得体会 (15)

一、课程设计目的 地震勘探解释课程设计是我们勘查技术与工程专业和资源勘查工程专业教学中的一个重要的实践性训练环节,通过上机实际操作,训练我们对地震资料进行常规构造解释的实际能力,最终使我们达到:学会利用地震解释软件来进行地震数据的加载,地震层位的标定,地震层位的追踪对比,在地震资料上分析和解释各种断层,以及地震构造图的编制方法。同时,还要学会综合地震地质资料对构造解释结果进行分析,进而对含油气有利地带进行评价和预测,最终编制成果报告。 二、课程设计的容 本次课程设计是理论联系实际的具体表现,是培养学生分析问题、解决问题能力的一个必不可少的环节,主要分为两部分:一、通过对地震资料解释软件Discovery的使用,追踪解释层位数据;二、通过surfer软件学习成图。使学生对地震常用的解释软件有一个初步的认识,能为毕业后从事地震勘探工作奠定良好的基础。地震解释课程设计是勘查技术与工程专业教学中的一个重要的实践性训练环节。通过实验主要训练学生对地震资料进行常规构造解释的实际能力,具体要使学生达到: 1.了解人机联作的基本知识; 2.初步学会地震解释软件的操作流程(工区建立、资料加载、合成记录制作、层位标定、层位追踪、断层解释、断点组合); 3. 进一步巩固和掌握地震资料解释的基本功; 4.初步学会地震成果的地质分析; 5.初步学会编写地震资料解释文字报告;

计算机系统设计报告书模板

课程设计报告目录

一、课程设计概述: 本次数据结构课程设计共完成三个题:一元稀疏矩阵多项式计算器、稀疏矩阵的操作、Josephu问题。 使用语言:C 编译环境:vc6.0 二、课程设计题目一 成绩分析文档资料 [问题描述] 录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。 [需求分析] 1.通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat 2.对文件input.dat中的数据进行处理,要求具有如下功能: a.按各门课程成绩排序,并生成相应的文件输出 b.计算每人的平均成绩,按平均成绩排序,并生成文件 c.求出各门课程的平均成绩、最高分、最低分、不及格人数、

60-69分人数、70-79分人数、80-89分人数、90分以上人数 d.根据姓名或学号查询某人的各门课成绩,重名也要能处理 3.界面美观 [概要设计] -=ADT=- { Status CreateList(DataRecond* DR, int n); //创建成绩表 Status SortScore(DataRecond* DR,int n); //按各科成绩排序并存于文件 Status Partition(KeyWord* RL, int low, int high); //快速排序的第一趟 Status QSort(KeyWord* RL, int low, int high); //快速排序 Status QuickSort(KeyWord* RL,int n); //快速排序

Status EveryAvageScore(DataRecond* DR, int n); //计算每科平均成绩 Status CaluAverage(int *temp, int n); //计算平均成绩 Status ScoreProcess(DataRecond* DR); //成绩处理 Status MaxScore(int *temp, int n); //求最大分数 Status MinScore(int *temp, int n); //求最小分数 Status ScoreSegment(DataRecond* DR); //求分数段 Status Process(int *temp,int n); //主处理函数 Status NameQuery(DataRecond* DR); //按名字查找

电子系统设计报告

电子系统设计报告 设计题目:基于单片机的简易电压表设计 指导老师:///////// 专业班级:///////// 报告人姓名://///////// (签名) 学号:////////// 信息工程学院通信工程教研室

摘要 数字电压表简称DVM,它是采用了数字化测量技术,把连续模拟量(直流输入电压)转换成不连续,离散的数字形式加以现实的仪表。传统的指针是电压表功能单一,精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高,抗干扰能力强,可扩展性强,集成方便,不可与PC进行实时通信。目前由各种单片机A/D转换器构成的数字电压表,已被广泛的应用为电子及其电工的测量,工业自动化仪表,自动测试系统等智能化测量领域,显示出强大的生命力。数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式,并加以显示,这有别于传统的指针加刻度盘进行读数的方法,避免了读数的视差和视觉的疲劳,目前数字电压表的核心部件是A/D转换器,转换器的精度很大程度上影响着数字电压表的准确度。本设计主要分为两部分:软件仿真原理图及软件程序。而软件仿真又大体可分为单片机小系统电路、A/D转换电路、LCD显示电路,各部分电路的设计及原理将会在软件仿真设计部分详细介绍;程序的设计使用C语言编程,利用keil软件对其编译,详细的设计算法将会在程序设计部分详细介绍。 关键字:数字电压表转换A/D转换器

目录 第一章绪论 (3) 第二章设计准备知识 (3) 2.1设计目的 (3) 2.2设计要求或内容 (3) 2.3设计软件及材料 (3) 2.3.1单片机软件开发工具keil介绍 (3) 2.3.2仿真软件protues介绍 (4) 2.3.3ADC0804 介绍 (4) 2.3.4液晶显示器 (4) 第三章整体设计过程 (4) 3.1设计思路 (4) 3.2模块分析 (5) 3.2.1AT89C51单片机 (5) 3.2.2A/D转换 (6) 3.2.3显示电路 (6) 3.3程序设计 (7) 3.3.1程序设计总方案 (7) 3.3.2系统子程序设计 (7) 3.4软件调试 (8) 第四章显示结果及误差分析 (8) 4.1 显示结果 (8) 4.2误差分析 (10) 第五章出现的问题及解决 (10) 5.1问题 (10) 5.2改进 (11) 第六章设计总结 (11) 第七章附件:(程序) (12) 7.1主程序 (12) 7.2SMC1602 (13) 7.3AD转换程序 (16)

城市轨道交通课程设计报告很齐全很完整的课程设计

城市轨道交通课程设计报告很齐全很完整的课程设计

轨道交通课程设计报告 指导老师:江苏大学武晓辉老师 一、项目背景及镇江市轨道交通建设必要性 镇江市位于北纬31°37′~32°19′,东经118°58′~119°58′,地处长江三角洲地区的东端,江苏省的西南部,北临长江,与扬州市、泰州市隔江相望;东、南与常州市相接;西邻南京市。镇江市域总面积3847平方公里,总体规划定位城市性质为国家历史文化名城,长江三角洲重要的港口、风景旅游城市和区域中心城市之一。 ,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求。镇江市为江苏省辖地级市,现辖京口、润州、丹徒三区,代管句容、丹阳、扬中三市。另有国家级经济技术开发区-镇江新区行使市辖区经济、社会管理权限。镇江全市总面积3848平方公里,人口311万人, 市区户籍人口103.3万人市, 市区常住人口122.37万人,人民政府驻润州区南徐大道68号。

内部城市空间结构调整:,镇江城市总体规划进入实施阶段,城市空间布局将极大突破现有形态,“扩充两翼、向南延伸”成为城市新的发展方向。伴随城市化进程加快、镇江跨入特大城市行列,城市空间的拓展对城市交通体系提出了新的要求,建设轨道交通是未来城市规划的必然结果。 城市化发展水平规划: 近期( - ):城市化水平达到:55% 城镇人口162万 中期( -2020):城市化水平达到:60% 城镇人口184万 远期(2020-2050):城市化水平达到:70% 城镇人口231万 城市等级规模规划: 中期:形成1个大城市,1个中等城市,2个小城市和38个小城镇的等级结构。 远期:形成1个特大城市,2个中等城市,1个小城市和27个小城镇的等级结构。 镇江位于南京都市圈核心层,是一座新兴工业城。镇江拥有2个国家级开发区、6个省级开发区、5个国家级高新技术产业基地,镇江市的经济发展水平居江苏省中等偏上水平。实现国内生产总值2927.09亿元,完成公共财政预算收入245.52亿元,城镇居民人均可支配收入32977元,农民人均纯收入16258元,增长18.1%,;人均GDP73947元,居江苏省第5名。“三次产业”分

课程设计报告模版

课程设计报告模版

《城市排水处理》 课程设计报告 系别:城市建设系 专业班级:给水排水0601班 学生姓名: 指导教师:段泽琪 (课程设计时间: 6月15日—— 6月19日) 华中科技大学武昌分校

目录 1.课程设计目的 (1) 2.课程设计题目描述和要求 (1) 3.课程设计报告内容 (3) 3.1污水处理工艺方案比较 (3) 3.2主要污水处理构筑物选型 (6) 3.3污水处理构筑物的主要设计参数 (7) 3.4污水处理辅助构筑物设计 (8) 3.5污水处理厂平面布置设计 (8) 3.6 污水处理厂高程布置设计 (9) 3.7 设计计算………………………………………………………………………

10 4.总结……………………………………………………………………………页码 参考文献…………………………………………………………………………页码 (要求:目录题头用三号黑体字居中书写,隔行书写目录内容。目录中各级题序及标题用小四号黑体)

1. 课程设计目的 (1) 经过污水处理厂课程设计,巩固学习成果,加深对《水污染控制》课程内容的学习与理解,使学生学习使用规范、手册与文献资料,进一步掌握设计原则、方法等步骤,达到巩固、消化课程的主要内容; (2) 锻炼独立工作能力,对污水处理厂的主体构筑物、辅助设施、计量设备及污水厂总体规划、管道系统做到一般的技术设计深度,培养和提高计算能力、设计和绘图水平; (3) 在教师指导下,基本能独立完成一个中、小型污水处理厂工艺设计,锻炼和提高学生分析及解决工程问题的能力。 2.课程设计题目描述和要求 2.1 设计题目描述 (1) 设计题目 某城市污水处理厂工艺初步设计。 (2) 设计内容 根据任务书所给定的资料,综合运用所学的基础、专业基础和专业知识,设计一个中小型污水处理厂。 ①确定污水处理方法和工艺流程; ②选择各种处理构筑物形式,并进行工艺设计计算(计算书中要附计算草图); ③估算各辅助构筑物的平面尺寸; ④进行污水厂平面布置和高程布置。

电子系统设计总结报告汇编

电子系统设计总结报告 题目:医院呼叫系统 班级: 组别:第四组 指导教师:张廷荣 设计时间

医院呼叫系统 一、引言 1. 选题意义 1.1 性价比 在此次课程设计中,选用的原件蜂鸣器、74LS147译码器、555定时器等,都是较常见和比较常用的,比较经济实惠,节约成本。因此,该方案设计的医院呼叫系统经济适用,成本合适,性价比较高。 1.2 EWB模拟仿真 EWB模拟仿真图如图1所示(见附录1)。 综上所述,呼叫器应用广泛,所需器件价格低,成本低,性价比高。经过EWB模拟仿真结果可得出,它具有可实行性。所以我们选则这个题目进行设计与制作。2. 设计目标 对于此课题,主要分为三个模块,一是采用74LS147为核心进行优先编码,设计优先编码模块,多人同时呼救时,危重病人优先被医治;二是采用555定时器与74LS192组成呼叫系统控制模块,三是呼叫提示系统,由二极管和蜂鸣器组成,病房病人呼叫即开关闭合时,二极管发光提示,蜂鸣器报警,持续5秒钟 3.小组成员及分工 二、作品说明 1.功能 此设计是用于医院病人的紧急呼叫,它的功能如下: 1.当病人按下呼救信号按钮,呼救灯亮,同时显示病人编号,蜂鸣器发出5秒呼救声,等待医护人员来护理。 2.按照病人的病情划分出优先级别,有多个病人同时呼救时,系统优先显示最高级别的呼救编号。 3.当医护人员处理完最高级别呼救后,按下清零键,系统按优先等级先后显示其它病人编号。 2. 操作说明

此设计使用的的是四节1.5V干电池,放入电池槽中即可。病人在需要帮助时,只需按下与自己床位相对应的开关,医生便可获知病人相应的床位信息 三、基本原理 1. 原理图 (1) 方案呼叫系统电路原理框图如图2所示。 图2医院呼叫系统电路的原理框图 对于此课题,主要分为三个模块,一是采用74LS147为核心进行优先编码,设计优先编码模块,多人同时呼救时,数码管按优先级显示病人病房编号,危重病人优先被医治;二是采用555定时器与74LS192组成呼叫系统控制模块,控制呼叫提示系统;三是呼叫提示系统,由二极管和蜂鸣器组成,病房病人呼叫即开关闭合时,二极管发光提示,蜂鸣器报警,持续5秒钟。 (2) 电路原理图如图3所示(见附录2) 2.工作原理 (1) 直流电源 将四节电压为1.5V的干电池串联起来,为整个电路提供电压。 (2)呼叫控制模块 利用由555定时器和外接元件R 1、R 2 、C构成多谐振荡器,长时间的振震荡 信号驱动蜂鸣器呼叫。配以相应参数的阻容器件以及计数器74LS192,可将振荡时间准确的控制在要求的8秒钟 每次呼叫时长:T=(R1+2R2)×C1×Ln2×8 =(15+2×68)×0.00001×Ln2×8= 8s 呼叫控制电路原理图如图3所示:

CAD课程设计报告

XXX课程标准 盐城工学院 《电子线路CAD》课程设计报告 设计题号:第五题 姓名:邓钟鸣 学院:信息工程学院 专业:电科 班级:141 页脚内容1

学号:33 日期2016年12月26日——2017年1月13日指导教师:曹瑞、朱明 页脚内容2

目录 一、摘要 (1) 二、设计的任务与要求 (1) 三、软件介绍 (1) 四、画图的步骤 (3) 五、设计总结 (20) 六、参考文献 (21) 附录: 附录1.原理图 附录2.PCB图 页脚内容1

页脚内容2

一、摘要 电子线路CAD是从实用角度出发,详细介绍了Altium Designer的实用功能,可以引导读者轻松入门,快速提高。全面介绍了Altium Designer的界面、基本组成及使用环境等,并详细讲解了电路原理图的绘制、元件设计、印制电路板图的基本知识、印制电路板图设计方法及操作步骤等,详细讲解了电路从电路原理图设计到印制电路板图输出的整个过程。 关键词:Altium Designer软件;电路原理图设计;电路板; 二、设计的任务与要求 1.锻炼学生将理论用于实际和动手的能力以及更熟练的使用Altium Designer软件 2.使学生学会绘制电路原理图、电路查错、仿真、PCB(Printed Circuit Board,印刷电路板)设计 3、掌握元件封装的方法 意义:通过这次Altium Designer期末考试以及报告的设计,提高思考能力和实践能力。同时通过本课题设计,巩固已学的理论知识,建立逻辑数字电路的理论和实践的结合,了解各单元电路之间的关系及相互影响,从而能正确设计、计算各个单元电路。而且更加掌握的Altium Designer该软件的使用,对原理图的绘制和PCB的布局以及电路的仿真都有了进一步的理解。 三、软件介绍 页脚内容1

单片机课程设计报告模板

单片机系统课程设计报告 专业:自动化 学生姓名: 学号: 指导教师: 完成日期:2011 年 3 月17 日

目录 1 设计任务和性能指标 (3) 1.1设计任务............................................................................ 错误!未定义书签。 2 设计方案 (4) 2.1任务分析 (4) 2.2方案设计 (4) 3 系统硬件设计 (5) 3.1时钟的电路设计 (5) 3.2复位电路设计 (5) 3.3灯控电路设计 (5) 3.4倒计时电路设计 (6) 3.5按键控制电路设计 (7) 4 系统软件设计 (8) 4.11秒定时 (8) 4.2定时程序流程 (8) 4.3交通灯的设计流程图 (9) 4.4定时器0与中断响应 (10) 5 仿真及性能分析 (10) 5.1仿真结果图 (11) 5.2仿真结果与分析 (12) 6 心得体会 (13) 参考文献 (14) 附录1 系统原理图 (15) 附录2 系统PCB图 .................................................................. 错误!未定义书签。附录3 程序清单 (17)

1.1设计任务 利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图5.1所示。设东西向为主干道,南北为支干道。 图5.1 交通灯示意图 1. 基本要求 (1) 主干道处于常允许通行的状态,支干道有车来时才允许通行。主干 道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (2) 主、支干道均有车时,两者交替允许通行,主干道每次放行30秒, 支干道每次放行20秒,设立30秒、20秒计时、显示电路。 (3) 在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。 黄灯亮时,原红灯按1Hz 的频率闪烁。 (4) 要求主支干道通行时间及黄灯亮的时间均可在0~99秒内任意设置。 2. 选做 (1) 可设置紧急按钮,在出现紧急情况时可由交警手动实现全路口车辆 禁行而行人通行状态,即主干道和支干道均为红灯亮。 (2) 实现绿波带。所谓‘绿波带’,是指在一定路段,只要按照规定时速, 就能一路绿灯畅行无阻。“绿波带”将根据道路车辆行驶的速度和路口间的距离,自动设置信号灯的点亮时间差,以保证车辆从遇到第一个绿灯开始,只要按照规定速度行驶,之后遇到的信号灯将全是绿灯。 南 北 东 西

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