北邮程序设计实验报告
北京邮电大学微机原理软件实验报告

北京邮电大学微机原理软件实验报告信息与通信工程学院微机原理软件实验报告班级:姓名:学号:班内序号:时间:微机原理软件实验·报告实验一DEBUG 的使用一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG 调试程序的方法。
二、实验内容1. 用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20 ;(自定)B DB 15 ;(自定)Y DB 3 DUP (0)Z DB 0, 0DAT ENDSSTA SEGMENT STACKDW 50 DUP (?)STA ENDSCOD SEGMENTASSUME CS: COD, DS: DATSTAR PROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATMOV DS, AXMOV AX, STAMOV SS, AXMOV AL, AMOV Z, ALMOV Z+1, ALCALL SUB1MOV AL,B微机原理软件实验·报告MOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL, ZMOV AH, Z+1MUL AHADD WORD PTR Y, AXADC BYTE PTR[Y+2], 0RETSUB1 ENDPCOD ENDSEND STAR2. 通过编译,连接形成可执行文件。
3. 用DEBUG 将可执行文件调入,并进行调试。
1) 用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址。
2) 用U 命令对目标代码反汇编,观察反汇编后的结果。
注意发现源程序的起始位置,并记录这个起始地址。
3) 用T 命令作单步跟踪调试。
比较每条指令执行后的结果和原来的理解是否一致,得出程序运行的结果:它们是写在什么单元,具体内容是什么;并判断结果是否正确。
北邮程序设计实验报告

实验名称:程序设计实验实验时间:2023年X月X日实验地点:北邮计算机实验室一、实验目的1. 熟悉C语言编程环境,掌握基本的程序设计方法。
2. 通过实际编程,提高逻辑思维和问题解决能力。
3. 理解算法设计的重要性,掌握常用的算法设计方法。
二、实验内容本次实验主要分为以下几个部分:1. 编写一个计算两个整数相加的程序。
2. 编写一个计算两个整数相减的程序。
3. 编写一个计算两个整数相乘的程序。
4. 编写一个计算两个整数相除的程序(要求考虑除数为0的情况)。
5. 编写一个判断两个整数是否相等的程序。
三、实验步骤1. 打开C语言编程环境,创建一个新的项目。
2. 编写计算两个整数相加的程序:```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数相加的结果为:%d\n", sum); return 0;}```3. 编写计算两个整数相减的程序:```c#include <stdio.h>int main() {int a, b, sub;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);sub = a - b;printf("两个整数相减的结果为:%d\n", sub); return 0;}```4. 编写计算两个整数相乘的程序:```c#include <stdio.h>int main() {int a, b, mul;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);mul = a b;printf("两个整数相乘的结果为:%d\n", mul);return 0;}```5. 编写计算两个整数相除的程序(考虑除数为0的情况):```c#include <stdio.h>int main() {int a, b, div;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);if (b == 0) {printf("除数不能为0,请重新输入。
北京邮电大学-计算机实习-实验报告

高校知识高校知识一.人民币金额大写转换器1.1功能说明1.1.1总体功能说明从键盘输入一个十亿以内的正整数,把它转换为人民币金额大写(不考虑用户输入错误的情况)。
1.1.2用户界面1)正常输入高校知识学院:电子工程学院2017年4月2)错误提示1.1.3使用说明在金额数值文本框中输入数值(不超过9位),点击开始转换按钮,金额大写文本框即可显示大写金额。
1.2程序设计说明1.2.1使用工具开发工具:VS2017语言:c#应用类型:windows窗体应用1.2.2程序流程输入金额数值(int)输出大写金额(string)调用转换方法进行转换点击按钮动作触发1.2.3关键算法说明转换方法:以每个数位为一个单位,逐个处理。
基本转换方法是直接将数字(整型)转化为大写数字和单位(字符串),位数-大写对应关系为:1-元,2-十,3-百,4-千,5-万,6-十,7-百,8-千,9-亿。
每一位的处理方式是转换或不转换。
遇到数字零需要特殊处理,最后需要检查万位并且特殊处理。
1)对数字零的处理。
防止出现多个连续的零,整十整百等不出现零。
即:第一类:以一个或多个零结尾,不转换。
第二类:连续多个零合并为一个零。
解决方法:检查前一位,如果是零,则当前位的零不转换,否则转换。
人为设定第一位的前一位数值是零。
2)万位处理。
当前算法存在缺陷,采用以下方法修正。
如果5-8位均为零,则“万”字省略,不需要修正。
否则,“万”字需要有,当万位为零时需要增加输出“万”。
1.2.4数据结构说明所有常量,变量和方法存在于Form1 类中。
1.2.5关键算法描述1.private void button1_Click(object sender, EventArgs e)2.{3.int number = 0;4.int[] num = new int[9] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };5.int len = 0;6.int i;7.int j = 0;8.int temp;9.textBox2.Text = ""; //清空金额大写文本10.try11. {12. number = Convert.ToInt32(textBox1.Text); //金额数值文本框获得的数据为字符型,转换为整型13. }14. catch //异常处理,如果输入错误,则出现提示15. {16.textBox1.Text = "";17. textBox2.Text = "输入错误,请输入9位以内的正整数";18. }19.while(number != 0) //字符型转换为字符数组20.{21.num[len] = number % 10;22.number /= 10;23.len++;24.}25.26.for(i = 0; i < len; i++) //非零位直接转换27.{28.temp = num[i];29.if(num[i] != 0)30.{31.ans[j++] = unit[i];32.ans[j++] = cap[temp];33.}34.else if(num[i] == 0 && i == 0) //个位为零,只转换单位35.{36.ans[j++] = unit[0];37.}38.else if(num[i] == 0 && i == 4) //万为为零39.{40.if(len == 9 && num[5] == 0 && num[6] == 0 && num[7] == 0) { }//整个万级为零则省略“万”字41.else ans[j++] = unit[4]; //万为为零但需要显示“万”字42.}43.else if(num[i] == 0 && i != 0 && i != 4) //其他位为零的情况44.{45.if(num[i - 1] != 0) //如果前一位(低位)不为零,则转换“零”,否则不转换(无操作)46.{47.ans[j++] = cap[0];48.}49.}50.}51.for(i = j - 1; i >= 0; i--) //显示转换结果52.{53.textBox2.Text += ans[i];54.}55.}1.3设计总结1.3.1性能评价优点:界面简洁,操作简单。
北邮,信息工程,大二上,小学期,C语言,大作业,实验报告

北邮,信息工程,大二上,小学期,C语言,大作业,实验报告北京邮电大学信息与通信工程学院10级小学期C程序设计实践实验报告题目:实验室物料管理系统班级:班姓名:学号:手机号:邮箱:一.功能描述:1.基本功能:(1)添加记录能够添加一条或多条记录,记录包括物料类别、名称、型号、价格、库存等数据。
(2)显示记录显示当前所有记录。
(3)更新记录能够修改已存在记录的信息,可按型号选择要更新的纪录并且选择更新的方式。
(4)删除记录实现删除指定型号记录的功能。
(5)查询记录实现按型号查找的基本功能。
(6)保存文件存储所有记录到文本文档wrecord.txt。
(7)读取文件从rrecord.txt读入所有记录,同时能实现在读入后继续添加记录并执行操作。
(8)统计总量能实现将各类别记录的库存总量存入文本文件total.txt的功能。
(9)排序实现基本功能的按库存量顺序排序,并且存储到文件。
(10)退出系统结束软件操作,释放内存后退出。
2.扩展功能:(1)统计时加入借出量的统计,使物料管理更健全。
(2)进入时需要输入用户名和密码,通过区分采购员和教师给与用户不同的功能使用权限,使程序的针对性更强。
(3)可以选择按照单价或型号进行查找,并给与用户随时退出到主菜单的选项。
(4)可以选择按照库存量或单价进行排序,并将结果打印。
二.数据结构描述:struct info{int type_a;//类型,因为是1到5,所以采用int型变量char name_b[10000];//名称char model_c[10000];//型号,因为二者都可能是字符数字混合,所以采用char型变量float price;//价格,有可能精确到分,所以选择float型变量,并且保留两位显示int inside;//库存int outside;//借出struct info *next;};三.程序模块描述:1.void buy(void);和void use(void);分别对应两种权限的使用者:采购员和实验室老师。
北邮微机原理软件实验报告

实验一1.实验要求:编一程序,将地址偏移量为100H单元开始的256个单元分别写入00H,01H,……,FFH数据;统计写入的数据块的0元素、正元素、负元素的个数,并分别将统计结果送入上述数据块后的三个单元中;用DOS功能调用显示上面数据快各单元(包括统计结果)内容,要求每行显示16个数据,两个数据之间用空格隔开。
程序设计思路:分配256个单元存放数据00H,01H,……,FFH,3个单元存放统计结果。
约定:DH存放0的个数,BH存放负数的个数,BL存放正数的个数,然后进行将256个数据一一与0进行比较,得到 DH、BH、BL。
将DH、BH、BL 存入SI的最后三个单元。
最后在以高、低4位,依次将每个单元的数据输出。
2. 程序流程:4.子程序:DISP PROC NEAR ;Show number MOV DL,AL MOV AH,2 INT 21H RET DISP ENDP开始初始化;SI 前256个单元存放00 H……FFH;CX=256;DH=0;BX=0;CMP AL ,0;MOV AL ,[SI] CX=0?将DH ,BX 存入SI ;INC SI ;CX=259;YESINC DH ;INC BHINC BL显示高4位显示低4位; 添加空格; INC SI ;BH=0??BH=16;CX=0?SF=ELSZF=1N ONO YE SN O终止YE实验二1.实验要求:编一程序,把键入的十六进制数转换成十进制,要求:(1)在屏幕上显示转换的十进制数,键入的最大值为FFFFH;(2)若键入非16进制的数,则提示错误;(3)程序中至少用一个子程序和宏命令。
2.程序设计思路:首先判断键入的字符是否为合法的十六进制字符,若是十六进制,将其转化成二进制数值,放入BX中,然后接收下一个字符,并将上一个字符左移4位,再讲此时的BX与接收到的BX相加,直到键入回车,停止接收。
然后通过除以10000,依次将余数除以1000、100、10、1,将二进制转化为十进制,再显示出来。
北邮编程实验报告

实验名称:编程基础实验实验日期:2023年X月X日实验地点:北邮计算机实验室实验指导教师:XXX老师实验目的:1. 熟悉编程环境,掌握基本的编程技能。
2. 理解编程的基本概念和语法规则。
3. 培养逻辑思维和问题解决能力。
实验内容:本次实验主要涉及以下几个方面:1. 编程环境搭建2. 基本语法学习3. 编程实践实验步骤:一、编程环境搭建1. 安装编程软件:首先,在北邮计算机实验室的计算机上安装了Visual Studio Code,这是一个功能强大的代码编辑器,可以支持多种编程语言。
2. 配置环境变量:为了方便调用编程软件,我们将环境变量设置好,使得在命令行中输入软件名称即可启动。
二、基本语法学习1. 数据类型:学习了整型、浮点型、字符型等基本数据类型,并掌握了它们的特点和适用场景。
2. 运算符:了解了算术运算符、关系运算符、逻辑运算符等,并学会了如何使用它们进行简单的计算和判断。
3. 控制语句:学习了if-else语句、for循环、while循环等,掌握了如何控制程序的执行流程。
4. 函数:了解了函数的定义、调用和参数传递,学会了如何封装代码,提高代码的可读性和可重用性。
三、编程实践1. 编写计算器程序:根据所学知识,编写了一个简单的计算器程序,实现了加减乘除等基本运算。
2. 编写排序算法:学习了冒泡排序、选择排序、插入排序等基本排序算法,并实现了它们的代码。
3. 编写学生信息管理系统:根据实际需求,设计并实现了一个学生信息管理系统,包括添加、删除、修改和查询学生信息等功能。
实验结果:通过本次实验,我成功完成了以下任务:1. 熟悉了编程环境,掌握了基本的编程技能。
2. 理解了编程的基本概念和语法规则。
3. 培养了逻辑思维和问题解决能力。
实验总结:1. 编程环境搭建:在北邮计算机实验室,我成功安装了Visual Studio Code编程软件,并配置了环境变量。
2. 基本语法学习:通过学习,我掌握了数据类型、运算符、控制语句和函数等基本语法,为后续编程实践打下了基础。
北邮windows程序设计实验报告

Windows程序设计实验报告实验一:绘图和绘钟实验二:简易扫雷程序班级:姓名:学号:班内序号:时间:2014. 5. 4实验一:绘图和绘钟一、实验要求:利用MFC类编写windows程序,实现基本绘图功能,并在课堂所讲绘图功能上新加入自己其他的绘图功能。
二、实验概述:①由于前期一直坚持听课,所以实现基本绘图功能的代码是按照老师的架构来做的,后来新加的功能是参阅孙鑫所著的《VC++深入详解》一书,在理解的基础上添加到之前的程序框架中的。
做实验时先从课堂上讲的建立单文档开始,在熟悉了MFC单文档的程序框架后,按照老师给的画简单图形的代码,并对应自己借的书籍,了解了画图代码的编写。
之后又逐步进行了改进,增加了更多其他的功能。
②利用MFC编写绘图和绘钟的程序是在Visual Studio 2013的环境下编写的;③绘钟程序采取的是简洁风格,先绘制了表盘,之后用数学方法绘制钟表盘小格。
利用Invalidate函数刷新钟表区域,利用SetTimer函数来对指针进行刷新。
点击显示后再次点击即可关闭时钟。
④线型线宽的设置中,增加了单选框和示例框,线型的选择中由于线型定义中对应0~8,所以就按照顺序排列线型,从而减去了switch/case语句。
点击单选框后利用Invalidate函数让窗口无效,在下一次WM_PAINT时重绘窗口,示例框线条在OnPaint函数中绘制。
⑤绘图所能实现的功能有:1.能够实现图片文件和位图文件的打开;2.可以将所绘制图形以位图形式保存;3.以对话框形式实现对线型线宽的设置;4.设置八种线型,增加示例框,能在选择时预览;5.增加画图面板滚动条,能上下左右拉动绘图区域;6.实现图形重绘功能,在拉动或最小化图形窗口以及滚动区域后图形不消失,实现了对所绘矩形,椭圆,线条和扇形的重绘;7.以系统自带对话框形式实现对颜色及字体的修改;8.画图功能:直线,曲线,椭圆,扇形,带边界的扇形,位图填充的矩形,可遮挡的空心矩形;⑥绘钟所能实现的功能有:1.实现闹钟功能,以对话框形式设置响铃时间;2.能够绘制出模拟时钟,并获取正确的系统时间;3.能够实现秒针每一秒移动一下的动画效果;4.时钟下边以数字时钟的方式显示当前系统时间;三、代码分析1.整体代码分为三部分:①窗口绘图:用于绘制各种图形(包括直线,曲线,扇形等);②绘图设置:用于颜色,字体和线型线宽的设置等;③绘制时钟:绘制与系统时间同步的模拟时钟。
北邮计算机组成原理课程设计 代码与实验报告

北京邮电大学课程设计报告注:评语要体现每个学生的工作情况,可以加页。
计算机组成原理课程设计实验报告采用硬布线控制器的顺序模型处理器设计与调试一、实验目的(1)融会贯通计算机组成原理各章节教学内容,通过知识的综合应用,加深对CPU各模块工作原理及相互联系的认识,建立清晰的整机概念。
(2)掌握硬布线控制器的设计方法。
(3)学习运用可编程逻辑技术进行逻辑设计和调试的基本步骤和方法(4)学习运用VHDL语言,用编写编译下载程序到altera芯片运行。
(5)培养科学研究的独立工作能力,获得工程设计与组装调试的实践经验二、实验设备TEC-8实验系统一台PC计算机一台逻辑笔一只USB下载器一根三、设计与调试任务(1)设计一个硬连线控制器,和TEC-8模型计算机的数据通路结合在一起,构成一个完整的CPU,该CPU要求:能够完成控制台操作:启动程序运行、读存储器、写存储器、读寄存器、写寄存器;能够执行表中的指令,完成规定的操作。
(2)在Quarts下对硬布线控制器设计方案进行编辑和编译。
(3)将编译后的硬布线控制器下载到TEC-8实验台上的EPM7128中,使其成为一个硬布线控制器。
(4)根据指令系统,编写检测硬布线控制器正确性的测试程序,并用测试程序对硬布线控制器在单拍方式下进行调试,直到成功。
四、实验原理(1)硬布线控制器基本原理硬布线控制器是一种把控制部件看作产生专门固定时序控制信号的逻辑电路,这种逻辑电路是一种由门电路和触发器构成的复杂树形逻辑网络。
当执行不同机器指令时,通过激活一系列彼此很不相同的控制信号来实现对指令的解释。
每个微操作控制信号C是一系列输入量的逻辑函数,即用组合逻辑来实现C=f(Im,Mi,Tk,Bj)Im是机器指令操作码译码器的输出信号,Mi是节拍电位信号,Tk是节拍脉冲信号,Bj表示来自执行部件的反馈信息,是状态条件信号。
在TEC-8实验系统中,节拍脉冲信号Tk,(T1~T3)已经直接输送给数据通路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计实践设计报告课题名称:邮件客户端学生姓名:班级:2班内序号:16学号:2日期:2014.6.41.课题概述1.1课题目标和主要内容本课题主要通过MFC的方式,利用SOCKET以及SMTP相关知识,来实现邮件(可携带附件)的定向发送,借此来复习和巩固C++编程的基本思想;学习SOCKET以及SMTP的相关知识,了解复杂网络应用程序的设计方法,并独立完成一个网络应用。
1.2系统的主要功能1.邮件的发送(不携带附件)2.邮件的发送(携带附件)3.邮件接收2. 系统设计2.1 系统总体框架程序的功能由MyEmailClientDlg.cpp,SMTP.cpp,MailMessage.cpp,Base64.cpp, MIMECode.cpp,MIMEContentAgent.cpp,MIMEMessage.cpp,AppOctetStream.cpp, MyEmailClient.cpp,StdAfx.cpp,TextPlain.cpp来实现。
其中MIMECode.cpp, MIMEContentAgent.cpp,MIMEMessage.cpp, AppOctetStream.cpp, TextPlain.cpp来对MIME 协议进行封装,Base64.cpp来对Base64编码进行封装,SMTP.cpp是对SMTP协议进行封装,MailMessage.cpp是利用MIME协议对邮件内容的一个处理,最终通过MyEmailClientDlg.cpp 来实现邮件的发送的功能。
2.2 系统详细设计[1] 模块划分图及描述协议模块:包括网络应用程序中的各种协议,包括STMP协议,MIME协议等。
处理模块:主要实现对数据的进行编码以及解码。
实现模块:主要内容为邮件发送的具体步骤,相关按钮操作。
[2] 类关系图及描述协议类:CSMTP, CTEXTPlai, CMIMECode,C MIMEContentAgent,C MIMEMessage, CAppOctetStream, CTextPlain.主要为协议中信息处理的中作用编码类:Base64, MailMessage.主要为对邮件信息的处理实现类:CAboutDlg,CMyEmailClientApp,CMyEmailClientDlg.主要为MFC的框架构建以及邮件发送的实现。
[3] 程序流程图及描述[4] 存储结构、内存分配主要使用字符串数组来进行存储,同时还是用套接字来进行消息传输。
2.3 关键算法分析算法1:BOOL CSMTP::Connect()[1] 通过SMTP协议内容的判断对服务器之间的连接状况的判断[2] 将SMTP的协议工作原理进行细化,分为1.TCP连接。
2.客户端发送HELO命令。
3.客户端发送AUTH LOGIN命令。
4.用户名与密码的验证。
分别在每一个步骤后对服务器返回的消息进行分析,判断是否连接正常。
[3] 由于没有其他参量,时间复杂度为O(1)。
空间复杂度为O(1)。
[4]1判断套接字是否创建成功。
2判断是否连接到服务器。
3判断服务器是否响应。
4发送HELO命令,同时判断服务器响应是否正确。
5发送AUTH LOGIN命令,同时判断服务器响应是否正确。
6发送经过Base64编码过后的用户名,同时判断服务器响应是否正确。
7发送经过Base64编码过后的密码,同时判断服务器响应是否正确。
8一切正常,将变量m_bConnected=TRUE。
算法2:BOOL CSMTP::transmit_message(CMailMessage * msg)[1] 向服务器发送邮件[2] 根据SMTP发送邮件的工作原理,将其分为1.发送MAIL命令,告知服务器发件人的邮件地址。
2.发送RCPT命令,告知服务器的接收人的邮件地址。
3.发送DATA命令。
4.发送邮件内容。
5.发送结束符,结束此次发送。
[3] 由于FOR循环中包含msg->GetNumRecipients(),所以时间复杂度为O(n)。
空间复杂度为O(1)。
[4] 1.判断是否连接服务器正常。
2.发送MAIL指令及发件人信息,并判断服务器响应。
3.发送RCPT指令及收件人信息,多个收件人必须多次发送,最后判断服务器响应。
4. 发送DATA指令,并判断服务器响应。
5.发送邮件内容。
6.发送结束符,结束此次发送,并判断服务器响应。
算法3:BOOL CSMTP::get_response( UINT response_expected )[1] 根据服务器的响应来判断是否正常[2] 首先判断套接字是否接收成功,然后将得到的响应进行分析,判断结果[3] 时间复杂度为O(1),空间复杂度为O(1)[4] 1.判断是否接收套接字正常,不正常直接返回FALSE。
2.判断接收的套接字是否为预期的,正常直接返回TRUE。
3.对接收的服务器响应,进行判断。
如果错误,将错误原因赋值给m_sError。
算法4:void CMyEmailClientDlg::OnButtonAddFile()[1] 附件按钮响应,实现添加附件的功能[2] 从目录中选择的文件,一个一个显示到附件的列表框中。
[3] 由于和选择的附件数目有关,所以时间复杂度为O(n)。
空间复杂度为O(1)。
[4] 1.显示打开文件对话框。
2.将选择的文件写入pos变量中。
3.将pos中文件路径用字符串的方式显示到列表框中。
算法5:void CMyEmailClientDlg::OnSend()[1] 发送按钮响应,实现发送邮件的功能[2] 将填入界面中的信息分别赋予其对应变量,然后按照顺序调用对应的功能函数,实现邮件的发送。
[3] 由于收件人以及附件的数目不确定性,其时间复杂度为O(nm)。
空间复杂度为O(1)。
[4] 1.将填入的相应信息分别赋值给CMIMEMessage msg对象。
2.根据列表框中的附件字符串数目,然后根据MIME协议进行添加附件。
3.建立CSMTP对象,同时设置m_SMTP 的对应属性。
4.连接SMTP服务器,并判断是否成功。
5.发送邮件,并判断是否成功。
6.清空附件框,并断开SMTP服务器的连接。
2.4 其他直接使用了封装好的MIME协议,大大增强了代码的简洁性。
3.程序运行结果分析包括输入数据来源和格式、输出显示方式、主要界面、操作流程、响应时间,运行效果等。
输入数据来源和格式:1.键盘输入。
直接从键盘输入相应的信息,如用户名,发件人等信息。
格式一般为字符串2.鼠标输入。
利用鼠标从电脑选择附件,进行输入。
在列表框中显示的格式为字符串。
输出显示方式:主要为对话框直接显示消息。
主要界面:只包含一个主界面,点击附件按钮后,会弹出打开文件对话框。
操作流程:按照要求输入用户名(选择163或126邮箱,QQ邮箱使用前需要在邮箱中设置),密码。
然后输入发送邮件的发件人,收件人,标题,内容,可以选择附件。
最后点击发信即可。
退出时,可以点击退出。
运行效果:4.总结4.1课题的难点和关键点本次课题相对上次的课题难度加大不少,特别是要运用MFC进行编程,在之前我只是在控制台上学习编程。
此外,本次课题的难点在于网络应用程序的设计是老师上课时并未仔细说明,主要靠同学自己自学。
其中包括SMTP协议,MIME协议,以及Base64编码都是新的知识,虽然这几个文件的代码网上有,但是要自己学会使用。
在网络传输中,通过课本明白了套接字的作用及使用,让我对SMTP的协议有了更加深刻的理解。
关键点在于使用套接字与服务器进行交互,与服务器之间发送消息,并借此发送消息。
根据SMTP协议的工作原理,将每一步都使用套接字进行发送,并进行判断,成功的实现了与服务器之间的交互。
4.2本课题的评价对于本次课题,算是这个学期以来碰到的最难得实验。
特别是mfc的知识事先没有接触过,不得不通过查阅课外书籍,以及加上百度的力量。
本次课题十分经典,但因为涉及与网络编程,使编程的难度大大增加。
不仅考验我们对旧知识的重新运用,也考察了我们对新知识的学习与理解。
能够充分培养学生的合作意识,培养学生发现问题,解决问题的能力,充分发挥学生的想象力、创造力,激发学生主动学习的潜能。
在程序运行的时,存在很多警告,自己不能够充分解决。
主要是由于VS程序的升级,使得以前使用的函数存在危险。
但是由于知识水平的有限,在知道了改进的函数之后,仍然没有办法解决这个警告。
同时自己对于MIME协议理解的仍然不够深刻,无法彻底剖析以及独立完成。
以后,我会更加努力的学习网络知识,争取解决这么问题。
4.3心得体会本次试验可谓是折磨人,特别是在一大波期末考试来临之前要求完成。
可喜的是在查阅资料和借助他人一些代码的情况下,程序总算可以运行出来。
通过这次MFC的编程,让我又学会了一种新的编译办法。
相比之下,觉得MFC界面比控制台界面更加人性化。
在学习编程过程中,慢慢意识到编程的奥妙,特别是层与层之间的相互关系。
如果学会正确处理这些关系,那编程就会简单很多,这个心得也会影响到以后各科的学习,甚至是终生有益。
5. 参考文献[1]徐惠民等,C++高级语言程序设计案例与实践辅导,北京:人民邮电出版社,2012[2]徐雅静等,数据结构与stl,北京:北京邮电大学,2011[3]徐惠名等,C++高级语言程序设计,北京,人民邮电出版社,2012。