VC__课程设计

合集下载

34按百家姓将姓名排序

34按百家姓将姓名排序

河北工业大学计算机软件技术基础(VC)课程设计报告学院工科部班级电信C1118 姓名张雪琳学号 115532 成绩____ 一、题目:按百家姓将姓名排序(34)二、设计思路1、总体设计1)分析程序的功能:本程序是为了实现按百家姓对姓名排序,姓相同再按名的正常汉字顺序排序。

2)系统总体结构:主要思路是:(1)程序采用模块组成,用函数调用的声明对其程序姓名输入、输出,及其它函数进行调用。

(2)按姓“赵、钱、孙、李”对姓名进行排序。

(3)按名对姓名排序。

2、各功能模块的设计主要有三功能模块组成。

具体是:(1)头文件中声明函数。

(2)通过循环控制变量,对学生成绩进行输入和输出,以及选择结构的使用,实现不同函数功能的调用。

(3)按姓进行排序。

(4)按名字进行排序。

3、设计中的主要困难及解决方案1)困难1:从字符串中取出第一个字按姓排序。

解决方案:汉字在数组中存储占两个字节,把字符串的前两个元素赋给一个数组,并把这个数组的最后一个元素赋为’\0’,即可得到姓,然后即可按顺序排列。

2)困难2:对多文件的使用,即主函数和各个函数分别存放在不同的.cpp 文件中。

解决方案:在头文件中进行声明,不能进行赋值运算,直接在主函数中进行赋值。

4、所设计的程序最终完成的结果1)输入20个姓名,并对输入的的姓名按百家姓进行排序。

2)准备的数据:李丽赵括孙福赵冬梅赵国良赵雪赵迎专赵倩赵璐佳钱潮钱朋钊钱现冲钱心孙君啸孙巍孙亚星李彧李福德李景洋李彦航运行结果:三、程序清单(1)main函数//主函数void main(){const int N=20;char m[N][10];cout<<"input"<<N<<"string:"<<endl;输入、输出都是循环的函数,调用函数sort实现姓名排序(2)copare函数int是函数返回值的类型,Compare函数是根据传过来的姓判断他在char *p[4]= {"赵","钱","孙","李"};里的位置,如果是赵返回0,钱返回1等排序,然后依据int类型的整数比较哪个在前哪个在后(3)sort函数的对输入的的20个名字冒泡排序,调用compare函数,比较姓的位置,把姓在按百家姓排序(4)文件清单void sort(char xm[][10])对姓名输入时,由于教多,将输入的姓名存入某个word文档中,运行时将文档中的存储的姓名粘贴到输入处即可,运行时的“粘贴”命令如下图,单击打开菜单。

C语言课程设计之评分系统

C语言课程设计之评分系统

华中师范大学传媒学院课程设计课程名称C语言课程设计题目__________________专业__________________ 班级__________________ 学号__________________ 姓名__________________ 成绩__________________ 指导教师_________________________年_______ 月_______日课程设计任务书设计题目:设计比赛评分系统(给分原则:满分为10分;裁判给出分数后,去掉一个最高分和一个最低分后的平均分为选手的最后得分(精确到小数点后两位)。

)设计目的:1. 巩固和加深课堂所学知识;2. 将课本上的理论知识和实际应用有机的结合起来,培养同学们分析和解决实际问题的能力;3. 学会编制结构清晰、风格良好、数据结构选择恰当的C语言程序;设计任务:(在规定的时间内完成下列任务)功能:1、设参赛人数为为裁判人数为(不少于11的奇数)位,2、录入参赛人员的资料和得分情况好,统计最后得分,3、按最后得分结果从高分到低分排序,4、公布一、二、三等奖的得奖选手名单。

5、此系统能够查询选手的得分情况。

具体要求:设计报告按统一撰写格式要求,应包含以下内容:1、题目:2、设计目的:2、设计内容:写出简要的程序功能描述、程序运行条件所需工具软件、输入/输出描述等。

3、程序结构:①函数定义说明;②用到的库函数(宏)的功能说明、调用关系说明、参数传送方式说明等;③主要算法描述等(各模块功能实现)。

13、设计要求:①绘制设计系统的结构层次图,各功能实现的算法、绘制结构化流程图。

②程序流程图、源程序(程序必须有简单注释,源程序若太长,可作为附录)③设计输入、输出界面。

(输出)5、(1)程序结构设计特点;(2)设计、调试程序心得、体会或不足。

附录:①参考文献百度文库C语言设计(第三版)谭浩强清华大学出版社C语言设计试题汇编(第二版)搜搜文献C语言上机指导指导教师签名:2011 年9 月5日教研室主任(或责任教师)签名:2011 年月日。

vc课程设计

vc课程设计

vc课程设计一、教学目标本课程的教学目标是使学生掌握VC编程的基本概念、语法和编程技巧,培养学生独立编写简单程序的能力。

具体目标如下:1.知识目标:–掌握C++的基本语法和数据类型。

–理解函数的定义和调用。

–学习面向对象编程的基本概念,如类和对象、继承和多态。

–熟悉VC编程环境,了解常用的编译器和调试工具。

2.技能目标:–能够使用VC编写简单的输入输出程序。

–掌握函数的定义和调用,能编写含有多个函数的程序。

–能够使用面向对象编程的方法,编写简单的类和对象程序。

–熟练使用VC编译器和调试工具,能独立调试程序。

3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情,提高学生独立思考和解决问题的能力。

–培养学生团队合作的精神,学会与他人分享和交流学习经验。

二、教学内容本课程的教学内容主要包括VC编程的基本概念、语法和编程技巧。

具体安排如下:1.VC编程环境:介绍VC的安装和配置,熟悉VC集成开发环境的界面和功能。

2.C++基本语法:数据类型、变量、运算符、表达式、语句等。

3.函数:函数的定义、声明和调用,递归函数,内联函数等。

4.面向对象编程:类和对象、继承和多态、封装和抽象等。

5.输入输出操作:文件操作、屏幕输出和输入等。

6.调试技巧:编译和调试程序的方法,常见错误分析和解决。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:通过讲解和示范,使学生掌握VC编程的基本概念和语法。

2.案例分析法:通过分析典型案例,使学生理解和掌握面向对象编程的方法。

3.实验法:让学生动手编写程序,培养学生的实际编程能力和调试技巧。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选用《VC编程入门》作为主要教材,辅助以相关参考书籍。

2.参考书:提供《C++ Primer》等参考书籍,供学生深入学习。

3.多媒体资料:制作PPT课件,演示程序实例和调试过程。

4.实验设备:配置计算机实验室,提供VC编译器和调试工具。

C语言课程设计报告:职工信息管理系统程序设计

C语言课程设计报告:职工信息管理系统程序设计

1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。

(2)职工信息录入功能(职工信息用文件保存)。

(3)职工浏览功能。

(4)职工信息查询功能,查询方式可按学历查询或者工号查询。

(5)职工信息的删除、修改功能(可选项)。

2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。

3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。

2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。

流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。

显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。

流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。

vc课程设计教学

vc课程设计教学

vc课程设计教学一、教学目标本课程的教学目标是使学生掌握VC(Visual C++)编程的基本知识和技能,能够运用VC进行简单的程序设计。

具体目标如下:1.知识目标:(1)了解VC的基本概念和编程环境。

(2)掌握VC的基本语法和数据类型。

(3)熟悉VC的运算符和表达式。

(4)理解VC的控制结构,如条件语句、循环语句等。

(5)掌握VC的函数和数组的使用。

2.技能目标:(1)能够熟练地使用VC编写简单的程序。

(2)能够调试和运行VC程序,并解决程序中的错误。

(3)能够运用VC进行简单的数据处理和算法实现。

3.情感态度价值观目标:(1)培养学生对编程的兴趣和热情,提高学生的自主学习能力。

(2)培养学生解决问题的能力和团队合作精神。

二、教学内容本课程的教学内容主要包括VC的基本概念、编程环境、语法、数据类型、运算符、表达式、控制结构、函数和数组等。

具体安排如下:1.VC的基本概念和编程环境:介绍VC的发展历程、特点和应用领域,熟悉VC的集成开发环境(IDE)。

2.VC的基本语法和数据类型:学习VC的基本语法规则,掌握基本数据类型、常量和变量的使用。

3.VC的运算符和表达式:掌握算数运算符、关系运算符、逻辑运算符等,学习表达式的组成和计算。

4.VC的控制结构:学习条件语句(if-else)、循环语句(for、while)等。

5.VC的函数和数组:了解函数的定义和调用,掌握数组的声明和使用。

6.综合实例:通过实际案例,巩固所学知识,培养学生的实际编程能力。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:通过讲解VC的基本概念、语法和编程技巧,使学生掌握相关知识。

2.讨论法:学生进行小组讨论,分享学习心得和编程经验,提高学生的团队合作能力。

3.案例分析法:通过分析实际案例,让学生了解VC在实际编程中的应用,提高学生的动手能力。

4.实验法:安排实验课,让学生亲自动手编写程序,培养学生的实际编程能力。

VC课程设计论文(五子棋)

VC课程设计论文(五子棋)

附件1:课 程 设 计2010——2011学年 第2学期课程名称可视化编程(VC ) 学 院 计算机科学与技术学院专 业软件工程专业班 级 姓 名 指导教师目录1、摘要------------------------------------------------------------------------22、关键字---------------------------------------------------------------------23、正文------------------------------------------------------------------------2 (1)功能描述-----------------------------------------------------------2 必备功能------------------------------------------------------2绚丽功能------------------------------------------------------3 (2)操作实现----------------------------------------------------------4 (3)详细剖析----------------------------------------------------------6 (4)所遇问题-----------------------------------------------------------11 (5)未解决问题--------------------------------------------------------13 (6)设计总结----------------------------------------------------------14 4、参考资料----------------------------------------------------------------14五子棋系统实现【摘要】此五子棋系统用户可以选择棋子颜色和样式,有黑白两种颜色的选取,备有计时功能,如果超时系统则做出让步处理。

操作系统课程设计

操作系统课程设计

操作系统课程设计报告1、概述一、设计目的1.对死锁避免中的银行家算法作进一步理解。

2.加深理解死锁的概念。

3.加深理解安全序列和安全状态的概念。

4.通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁地发生。

二、开发环境操作系统Windows xp编译环境VC++6.0生成文件银行家算法.cpp2、需求分析一、死锁概念:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程.由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了死锁。

二、关于死锁的一些结论:1.参与死锁的进程最少是两个(两个以上进程才会出现死锁)2.参与死锁的进程至少有两个已经占有资源3.参与死锁的所有进程都在等待资源4.参与死锁的进程是当前系统中所有进程的子集如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。

三、资源分类:永久性资源:可以被多个进程多次使用(可再用资源)1)可抢占资源2)不可抢占资源临时性资源:只可使用一次的资源;如信号量,中断信号,同步信号等(可消耗性资源)“申请--分配--使用--释放”模式四、产生死锁的四个必要条件:1、互斥使用(资源独占)一个资源每次只能给一个进程使用2、不可强占(不可剥夺)资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放3、请求和保持(部分分配,占有申请)一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配)4、循环等待存在一个进程等待队列{P1 , P2 , … , Pn}, 其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路。

机械机电数控模具计算机专业毕业设计题目

机械机电数控模具计算机专业毕业设计题目
计算机专业
(JAVA)中小企业办公自动化设计与实现论文(含数据库+开题报告) C++职工工资管理系统设计报告(含全套源码)--毕业设计 MFC--人机界面--酒店管理(有C++源代码) 方块游戏(C++) 基于DELPHI的人力资源管理系统的设计与开发(有源码+数据库) 基于JAVA实现的图书馆集成系统设计(含源代码)--毕业设计 基于VB+SQL的学生信息管理系统设计(有源码+数据库) 基于VC开发的加减乘除计算器系统设计(含全套源代码)--毕业设计 排课管理系统设计(有数据库+系统+开题报告+ppt)--毕业设计 商品销售管理系统论文(有数据库+源代码)--毕业设计 网络对战平台设计说明书(含源代码)--毕业设计
单级圆柱齿轮减速器设计(有cad源图) 普通钻床该为多轴钻床设计(有cad源图+中英文翻译) 二级直齿圆柱齿轮减速器课程设计说明书(有cad图) 减速器设计(有cad图)
CA6140车床拨叉机械加工工艺规程及工艺装备设计 CA6140车床拨叉零件的机械加工工艺及工艺设备(有cad源图861002) “CA6140车床”拨叉零件的机械加工工艺规程及工艺装备(有cad源图)831005 CA6140机床法兰盘(代号831004)设计(有cad源图) CA6140车床法兰盘工艺规程(说明书+CAD) CA6140车床后托架加工工艺及夹具设计(有cad源图) CA6140车床后托架加工工艺及夹具设计(有cad源图+开题报告+任务书+中英文翻译) CA6140车床的拨叉夹具设计(有完整cad图) 巷道堆垛类自动化立体车库 安全帽注塑模具设计及模腔三维造型CADCAM 拨叉机械加工工艺规程及夹具设计(有cad源图)831007 车床主轴箱设计(含cad图) 打包称控制系统 大空间旋转喷头零件的数控加工工艺设计、编程与加工(有全套cad图+程序+中英文翻译) 大型轴齿轮专用机床设计图 工业机械手毕业设计论文.rar 带式输送机的毕业设计论文 后钢板弹簧吊耳加工工艺及夹具设计(含cad源图) 机械手夹持器毕业设计论文及装配图 机械手完整图纸及毕业设计论文 机械手自动控制系统的PLC实现方法研究设计(有cad源图+开题报告+文献综述等)---软件 基于ProE的三维标准件库的研究与开发(有整套程序+开题报告+文献综述+ppt)--毕业设计 基于VC++金属切削机床主传动系统优化设计(有VC++工程) 加工摇臂轴后支架φ24孔组合机床液压系统设计 离合器的设计 皮带输送机电气控制系统的设计 汽车曲柄连杆机构毕业设计(说明书+图纸) 中单链型刮板输送机设计 1500储罐设计论文及储罐CAD详图 TGSS-50型水平刮板输送机---机头段设计(含cad图+任务书+中英文翻译) 半自动钻床设计及运动学分析 拨叉(12-07-05)加工工艺及夹具设计(含cad源图) 车床尾座体机械加工工艺及夹具设计(含cad源图).rar 齿轮轴加工工艺毕业设计 大功率三极管管脚级进模毕业设计(有完整cad源图) 工业除尘器的节能设计及经济分析 空气压缩机曲轴零件的机械加工工艺及夹具设计(含cad源图) 门式起重机电气系统设计 学供电系统设计(含cad源图+任务书+中英文翻译) 牵引变电所电气主接线设计(含cad源图) 继电保护毕业设计(有cad源图) 某住宅小区箱式变电站的设计(有cad源图) 某10KV降压变电所毕业设计(有相关cad图) 高压电网保护的设计及整定计算(有cad源图)--毕业设计 高压电网保护的设计及整定计算(有cad源图) 某化工厂35kV总降变电所设计(有cad源图) 110、35、10kV变电站及线路继电保护设计和整定计算(有相关cad图) 某机械厂降压变电所的电气设计(含cad源图) 某110kv区域变电所电气部分初步设计(含整套设计图) 110KV降压变电所电气部分设计(含cad源图) 110KV-35KV-10KV变电站设计(有cad源图) 220KV变电站电气部分设计(有cad源图+开题报告+任务书+文献综述) 220KV变电站主接线设计(有cad源图) 220KV枢纽变电站的设计(有全套cad图) 某220KV区域性变电所一次系统初步设计(含cad源图) 多机电力系统并联无功补偿研究(有matlab仿真) 辽宁某大型水利枢纽工程设计(有整套cad图) 某水电站设计(有cad源图) 某水电站电气一次及发电机继电保护设计(有cad源图) 小型电镀厂废水处理工程(有cad源图+ppt等) 35kV箱式变电站设计(有cad源图)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC++程序设计报告电子邮件发送和接收程序的开发指导老师:李军目录第一章需求分析 (2)1.1开发背景 (2)1.2功能要求 (2)第二章系统总体分析 (2)2.1电子邮件介绍 (2)2.2总体设计方案及思路 (3)2.2.1 电子邮件的发送程序 (3)2.2.2 电子邮件的接收程序 (4)2.3模块分析 (4)2.3.1 电子邮件发送程序的主要模块 (5)2.3.2 电子邮件接收程序的主要模块 (5)第三章程序的测试(运行截图) (5)3.1添加“关于”标签的测试 (5)3.2发送邮件的测试 (6)3.3收取邮件的测试 (8)第四章设计总结 (8)4.1 课程小结 (8)4.2 个人小结 (9)附录(源代码) (9)1“关于”标签的程序代码 (9)2 电子邮件发送程序的代码 (10)3 附件的代码 (13)3 电子邮件接受程序的代码 (14)第一章、需求分析1.1、开发背景随着互联网的不断发展,越来越多的企业单位通过电子邮件来协同工作,打破时间与地域的限制,大大提高了工作效率。

电子邮件已地经成为人们生活中不可缺少的一部分。

但是,当前流行的各大邮件客户端软件除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于华丽而不实用。

所以这次的VC++课程设计,我选择了制作一个操作简单,又可以实现最基本的电子邮件的收发功能的工具。

1.2、功能要求①基本发送和接受邮件的功能。

②实现通信功能。

③具有简单、实用、易操作的图形界面。

④在以上基础上尽量实现发送附件的功能。

⑤程序还应可以判断整个过程是否能正常运行,如果不正常运行,必须给出错误信息。

第二章、系统总体分析2.1、电子邮件介绍电子邮件又称E-mai1,是—种用电子手段提供信息交换的通信方式。

它是全球多种网络上使用最普遍的一项服务。

这种非交互式的通信,加速了信息的交流及数据传送,它是—个简易、快速的方法。

通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。

到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。

电子邮件的处理由两大部分组成:电子邮件发送程序和电子邮件接收程序。

电子邮件发送程序的发送方式有两种:第一种是本地计算机与用户所指定的发送邮件服务器连接,然后通过发送邮件服务器将邮件传递到接收邮件服务器,邮件中包含有信件的主题和内容等一系列信息;第二种是本地计算机直接与接收电子邮件的服务器相连,并将邮件送入收件者的邮箱中。

电子邮件接收程序则只需要处理本地计算机与存放电子邮件的服务器相连接,并通过帐号和口令从服务器中获取电子邮件,邮件中包含有信件的主题、内容和发送时间等。

2.2、总体设计方案及思路(1)电子邮件的发送程序发送邮件的程序必须能够做3件事情:①与接收电子邮件的服务器相连接;②将相关的信息送入收件人的信箱;③程序还应可以判断整个过程是否能正常运行,如果不正常运行,必须给出错误信息。

一般情况下,在VC++中,电子邮件程序的编写是利用Windows自带的MAPI以及相关的通信协议SMPT/POP3等来实现的。

但是要利用MAPI和通信协议实现一个功能强大的电子邮件管理程序,需要很强的相关专业知识。

随着现代软件业的发展,软件厂商提供了方便、简易,与服务器无关且稳定的电子邮件处理组件,使我们可以在程序开发语言中调用这些组件,利用很简单的语言实现功能强大的程序。

JMail组件就是一个很好用的电子邮件程序开发第三方组件。

所以这次的课程设计我选择了JMail组件。

JMail组件中包含许多实现电子邮件处理的属性和方法。

只需要在VC++代码中创建一个JMail组件的对象,调用其中的某些功能,就能很快完成程序的开发。

JMail常用的发送邮件的基本属性和方法如表1所示。

表1 JMail常用发送邮件的基本属性和方法由于JMail是第三方组件,因此VC++程序要想调用JMail对象,就必须先下载JMail 动态链接库,并在本机中进行注册。

具体操作方法如下:打开运行对话框,输入cmd,打开命令提示符编辑器,输入如下指令即可注册成功:(JMail组件的安装路径)regsvr32 jmail.dll(2)电子邮件的接收程序接收邮件的程序必须能够做三件事:①与存放电子邮件的服务器相连接;②读取相关的信件信息,并存放与本地计算机中;③程序还将判断整个过程是否能正常运行,如果不正常运行,必须给出错误信息。

与电子邮件发送程序的编写相同,我还是采取VC++语言和JMail组件相结合的方法来实现邮件的收取。

JMail常用的接收邮件的基本属性和方法如表2所示。

表2 JMail常用接收信件的基本属性和方法2.3、模块分析电子子邮件接受方式程序主要由以下两个大的模块构成:发送邮件模块和收取邮件模块。

其功能模块如图1所示:图1 电子邮件功能模块图(1)电子邮件发送程序的主要模块电子邮件发送程序主要由以下几个模块组成:①邮件服务器:用于填写收件人的邮箱服务器(可以不填);②收件人信箱:用于填写收件人的邮箱名;③发件人信箱:用于填写发件人的邮箱名;④主题:用于填写信件主题;⑤正文:用于写入信件正文;⑥退出:用于退出发件程序;⑦发送:用于发送邮件;⑧关于:用于显示软件开发的相关信息。

⑨附件:可以手动添加附件并完成发送(该功能正在进一步完善中)。

(⑧⑨为本小组另行添加的功能)(2)电子邮件接收程序的主要模块电子邮件接收程序主要由以下几个模块组成:①邮件服务器:用于填写需要收取信件信箱的服务器;②帐号:用于填写需要收取信件的邮箱帐号;③口令:用于填写需要收取信件的邮箱密码;④邮件列表:显示邮箱中所有邮件的列表;⑤正文:当选中邮件列表中任一邮件时,显示该封信件的具体内容;⑥退出:用于退出接收邮件程序;⑦收取:用于收取信件。

第三章、程序测试(运行截图)3.1、添加“关于”标签的测试在原设计的基础上我添加了一个“关于”的标签,点击该按钮会弹出一个小的对话框,其中的内容包括本小组的成员、程序开发时间以及一些关于邮件方面的相关帮助信息。

程序的运行结果如图1所示。

图2 “关于”程序主界面3.2、发送邮件的测试图3 邮件发送主界面(不带附件)图4 发送邮件程序主界面(加载附件)图5 发送邮件程序主界面(带附件)3.3、收取邮件的测试图6 收取电子邮件程序主界面第四章、设计总结4.1、课程小结在邮件发送程序中,用户可以利用SMPT服务器向朋友发送电子邮件,也可以直接尝试链接朋友的E-mail信箱所在的服务器。

这次课程设计我所利用的JMail组件封装了很强的电子邮件处理功能,如附件传递、用户的跟踪服务、发布产品信息,以及电子报刊处理等功能。

在邮件接受程序中,用户可以向POP3服务器收取电子邮件。

用户打开邮箱后,将利用JMail组件创建的对象指针遍历邮箱中的所有邮件,并将邮件信息下载存放于本地计算机中,利用List控件的扩展属性显示邮件的正文内容。

目前我所做的这个程序还不够完整,还存在着很多的不足和不完善的地方。

归纳起来体现在以下几个方面:①软件的功能趋于简单,真正的邮件收发工具软件包括很多方面的信息,而不仅仅局限于发送邮件和收取邮件。

真正的邮件服务软件还包括邮件导入、邮件导出、文本编辑(查找与撤消)、通讯簿、通讯规则等等功能。

②软件的图形操作功能缺乏,目前系统中对邮件附件的添加、删除功能都没有图形快捷操作,只能通过改变源程序中的代码达到添加附件的目的。

而且由于时间和知识的欠缺,整个系统的界面显得过于单调,缺乏动态显示效果。

如果能结合其它界面美化工具,使得界面更人性化,那就更好了。

4.2、个人小结经过不懈的努力,终于完成了这次的课程设计。

其实在做这次VC++程序设计实验之前,我基本上没有真正意义上的接触过VC++程序案例的设计和开发,只是通过课堂了解了一些关于VC++的最基本的知识,所以这次实验是在边学习边实践的基础上完成的。

由于知识的不足,做的结果自己不是很满意,与自己原来的设想也有些差距。

但是我也从这两个星期的设计和制作过程中学到了很多知识,对自己以后的专业学习甚至将来的工作都有很大的帮助。

附录(源代码):1、“关于”标签的程序代码(1)往头文件StdAfx.h中添加下列代码:#define CRLF "\x0d\x0a" //注意这两行必须添加#define CRLF2 CRLF CRLF(2)主要代码如下:BOOL CAboutDlg::OnInitDialog(){CDialog::OnInitDialog();// TODO: Add extra initialization herem_strEditHelp= "相关帮助信息:"CRLFCRLF" 一、发送邮件服务器和发信人信箱有密切关系,假如你的信箱为loop@,则发送邮件服务器一般为:,当然这也不是绝对的,你可以到你的邮件相关网站查询。

不知道服务器名的话也可以不填!"CRLFCRLF" 二、发信信箱格式比较灵活,如下两种格式均为合法的:1 在你的E-Mail首尾加小于大于符号:<loomman@> 2 直接填写你的E-Mail:loomman@ "CRLFCRLF" 三、接受信箱可以为多个,中间用分号;隔开,例如:Pookie<pookie@>;snuggles<snuggles@>;<loomman@> 某些信箱前面的部分字符串是收信人名称,例如上面的Pookie可以省略不写,例如下面一行和上面一行是等价的,它们都是可以接受的信箱输入格式。

<pookie@>;<snuggles@>;<loomman@>"CRLFCRLF" 四、邮件主题,当然就是邮件的标题了,你可以随意输入自己喜爱的标题。

"CRLFCRLF" 五、邮件正文就是你要发给对方的信息。

"CRLFCRLF" 六、最后不得不提一下,由于当今好多发送邮件服务器都要求身份验证,也就是需要提供的你的信箱密码,鉴于技术问题,这类信箱本程序暂时不支持。

"CRLFCRLF" 周清周庆蒯志刚于雯"CRLF" 2007年7月"CRLF;UpdateData(FALSE); // Update the Dialogreturn TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE}2、发送邮件程序代码:(1)往头文件StdAfx.h中添加JMail对象的声明,这样才能在整个程序中应用JMail对象.代码如下:#import "C:\jmail\jmail.dll" //显示指定JMail动态链接库using namespace jmail; //定义程序中JMail对象的名称(2)头文件MailServer.h,利用ClassWizard类项导添加退出应用程序的函数ExitInstnace().源代码如下:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMailServerApp)public:virtual BOOL InitInstance();virtual int ExitInstance();//}}AFX_VIRTUAL(3)源文件MailServer.cpp,类CMailServerApp的实现文件.1)由于程序中应用了JMail组件,因此必须在InitInstance()函数中添加如下代码,进行应用程序的初始化.BOOL CMailServerApp::InitInstance(){AfxEnableControlContainer();::CoInitialize(NULL);#ifdef _AFXDLLEnable3dControls(); // Call this when using MFC in a shared DLL ……}2)应用程序时,在ExitInstance()函数中添加释放各变量的代码.//应用程序退出时int CMailServerApp::ExitInstance(){// TODO: Add your specialized code here and/or call the base classreturn CWinApp::ExitInstance();::CoUninitialize();}(4)MailServerDlg.h中,CMailServerDlg类的接口.2)利用ClassWizard添加IDOK控件的ON_BN_CLICKED事件函数,代码如下: Protected://{{AFX_MSG(CMailServerDlg)……Afx_msg void OnSend();//}}AFX_MSG……3)源文件MailServerDlg.cpp,类CMailServerDlg的实现文件.打开MailServerDlg.cpp 文件,添加发送邮件函数OnSend()的代码如下://发送邮件程序void CMailServerDlg::OnSend(){// TODO: Add your control notification handler code hereUpdateData();//获取Edit控件中的字符串m_strmailserver.TrimLeft();m_strmailserver.TrimRight();m_strrecipients.TrimLeft();m_strrecipients.TrimRight();m_strsender.TrimLeft();m_strsender.TrimRight();//判断Edit控件中的字符串是否有效if(m_strrecipients.GetLength()<3){AfxMessageBox("请填写正确的收件人信箱");return;}if (m_strsender.GetLength()<=0){AfxMessageBox("请填写发件人邮箱");return;}//发送邮件过程try{//创建一个JMail对象,这样便可以利用其内容封装的基本属性和方法jmail::IMessagePtr pMessage("JMail.Message");//发件人邮箱pMessage->From=(LPCTSTR) m_strsender;//发件人姓名pMessage->FromName="我的名字";//添加收件人pMessage->AddRecipient((LPCTSTR)m_strrecipients,"","");//优先级设置,1~5逐次降低,3为中级pMessage->Priority=3;//编码方式设置,默认是iso-8859-1pMessage->Charset = "GB2312";//主题pMessage->Subject = (LPCTSTR) m_strsubject;//正文pMessage->Body = (LPCTSTR) m_strbody;//开始发送pMessage->Send((LPCTSTR) m_strmailserver,VARIANT_FALSE);pMessage.Release();AfxMessageBox("发送成功!");}//捕捉异常catch (_com_error e){CString strErr;strErr.Format("错误信息: %s\r\n 错误描述: %s ", (LPCTSTR)e.ErrorMessage() , (LPCTSTR)e.Description());AfxMessageBox(strErr);}}3、附件实现的代码:附件发送的实现;(1)首先在CMailServerDld类中定义几个对象。

相关文档
最新文档