第一篇:VC++课程设计 班级信息输入与显示
VC++程序设计
1.设计方案及功能描述:
本设计为一个基于对话框的应用项目(项目名称为DW)。在主对话框中设置组合框、列表框和“添加”按钮。当按下“添加”按钮后,调用一个班级信息输入的对话框(包括班级号、班级名称、学生人数、女生人数)。班级信息输入的结果在主对话框中显示,其中班级号显示在组合框,选择组合框的班级号后,班级的其他信息显示在列表框。
2.实现步骤:
2.1创建并设计对话框
新建一个名为DW的工程,在这个创建一个基本对话框的应用项目。单击对话框编辑器工具栏上的切换网格按钮,显示对话框网格。
(1)选择“File”→“New”菜单命令,在弹出的“New”对话框中,“Project”标签页面中显示了一系列的应用程序项目类型;选择MFC AppWizard(exe)的项目类型,将项目工作文件夹定位在“C:USERSADMINISTRATORDESKTOPVC++DW”,并在“Project name”编辑框中输入项目名DW,如图1所示。
图1 新建工程
(2)单击 “确定”按钮,出现如图2所示的对话框。并在类型选择栏选择选择“基本对话框”
图2 选择所创建的应用程序的类型
(3)单击“下一步”按钮,出现如图3所示的对话框在“对话框的标题是”一栏输入“班级信息输入”。
图3 输入对话框的标题
(4)完成上述步骤后,可以单击完成按钮,或者一直点击下一步直至完成基本设置。并出现下图所示的提示界面。
图4 完成基本设置后的提示信息
(5)单击确定按钮,进入如下界面:
图5 主对话框
2.2控件选择及设置
(1)打开对话框网格,参见图6的控件布局,用编辑器为主对话框添加如下图所示的一些控件。
图6主对话框的控件布局
(2)将鼠标到左边框的IDD_DW_DIALOG处并单击右键,在下拉菜单中选择插入dialog选项系统弹出如下图所示的子对话框。
图7 子对话框
(3)打开对话框网格,参见图8的控件布局,用编辑器为对话框添加如下图所示的一些控件。
图8子对话框的控件布局
(4)更改各控件的ID和名称,并添加相关属性。如下列各图所示:
(5)打开ClassWizard的Member Variable页面,或者直接按Ctrl+W组合键,在Class name中选择XMDialog,选中所需的控件号,双击或者单击Add Variaable按钮。依次为下列控件添加成员变量,如图8所。
图8 为主对话框的控件添加成员变量
同样的,为子对话框的控件添加成员变量如图9所示。
图9 为子对话框的控件添加成员变量
(6)用MFC ClassWizard为DWDialog类添加WM_INITDIALOG消息映射,并添加下列初始化代码:
BOOL CDWDlg::OnInitDialog(){ CDialog::OnInitDialog();
// Add “About...” menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0)== IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);if(pSysMenu!= NULL){
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
} } } // Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE);
// Set big icon SetIcon(m_hIcon, FALSE);// Set small icon
// TODO: Add extra initialization here
return TRUE;// return TRUE unless you set the focus to a control
图10 为DWDialog类添加WM_INITDIALOG消息映射
(7)在文件DWDlg.cpp的前面添加DWDialog的包含语句: #include “DWDlg.h” #include “add.h”
(8)用MFC ClassWizard 为CDWDlg 增加IDC_ Combo1 控件的CBN_EDITCHANGE消息映射,并添加下列代码:
void CDWDlg::OnSelchangeCombo1(){ int index=m_classnb.GetCurSel();CString infor=*(CString*)m_classnb.GetItemDataPtr(index);m_classmessage.ResetContent();m_classmessage.AddString(infor);
}(9)用MFC ClassWizard 为CDWDlg 增加IDOK控件的BN_CLICKED消息映射,并添加下列代码:
void CDWDlg::OnOK(){ add a;if(a.DoModal()==IDOK){
CString id=“";
CString infor=”“;FILE* f=fopen(”recordinfor.txt“,”r“);FILE* fp=fopen(”recordid.txt“,”r“);while(!feof(f)){infor+=fgetc(f);} while(!feof(fp)){id+=fgetc(fp);} fclose(f);fclose(fp);int index;index=m_classnb.AddString(id);m_classnb.SetItemDataPtr(index,new CString(infor));}
UpdateData(true);
//CDialog::OnOK();}(10)用MFC ClassWizard 为add 增加IDOK 控件的BN_CLICKED消息映射,并添加下列代码:
void add::OnOK(){ UpdateData(true);CString infor=”“;CString id=”“;id=m_classnumber;infor+=”班级名称:“;infor+=m_classname;infor+=”rn“;infor+=”女生人数:“;infor+=m_gnumber;infor+=”rn“;infor+=”班级人数:“;infor+=m_snumber;
CDialog::OnOK();FILE* f=fopen(”recordinfor.txt“,”w+“);for(int i=0;i } fputc(infor[i],f);fclose(f);FILE* fp=fopen(”recordid.txt“,”w+“);for(i=0;i 调试成功后的结果如下图所示,单击添加按钮,就会弹出子对话框,在子对话框中输入班级信息。 图11编译运行结果 图12 输入班级信息 在输入完一组数据后单击确定,会弹出小窗口提示添加成功。 图13 提示框口 所有班级信息添加完之后,单击主对话框班级号栏的组合框会显示所有以输入信息班级的班级号,选择02号班级,主对话框的列表框就会显示该班级的全部信息。 图14 列表框显示选中班级的信息 4.心得体会 VC++课程设计的尘嚣渐渐远去,怀着对这次设计的些许不舍,怀着对当初课程设计开始时候的豪情万丈的决心的留恋,通过这次课程设计积累的信心与斗志,心里感慨万千。现在回顾两个星期以前,当一个星期前的现在,当看到老师布置给我们的这些题目时,我们都蒙了,这么难的题目我们怎么可能会编出来啊,可是埋怨是没有用的,我们只能尽我们自己最大的努力把程序给写出来,虽然知道这一路肯定是异常的艰苦,但豁出去了。上网查资料是我们迈开的第一步,看是否有类似的题目,可是泡了几个小时的网吧还是没有,我们失望而回.但是恍然一想,找学姐,学长们传授点经验啊,但是最终还是空手而归.我们真的有点绝望了,但是由于我们此刻有着年轻人的激情,冲动,火力,想了一想,求天求地求人不如求自己,所以我们决定大家在一起共同努力,分配任务去图书馆查找资料.肯定没有现成的,我们只能查相关的函数,经过两三天的努力,我们把框架弄出来了,可是还有计算和闪烁这两大难题摆在我们面前,真的是个难题,自从把框架弄好了以后就没有进展了,眼看几天都快过了,我们那个急啊,可是急也没有用。我们相信我们几个人总归可以搞定,这是我们可以坚持到现在的信念.后来我们不停地总结过去走过的弯路,回想上课时老师怎么教我们构建一个程序,要想构建一个程序,必须要有一个完整的想法,算法,大概的脑海路径,才能完整地创建一个程序.经过一个星期的学习,使我对VC语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对VC语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对VC语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。 与其临渊羡鱼,不如退而结网。这次课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个设计开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。我完成了这次课程设计,不过这只是我学习路上的驿站,我会继续学习它,语言本来就是相通的,just do it!语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊! 我很庆幸我圆满完成了这次设计,让我确实打开了眼界。 单片机数码管显示课程设计 目录引言...............设计任务和要求.............1 2.1 设计目的............1 2.2 设计意义............1总原理图及主要模块的流程图......1 3.1 总原理图及元器件清单..............1 3.2 主要流程图..........1性能测试与分析.............35 结论与心得..........4致谢...........4 参考文献.............4 单片机数码管显示课程设计引言 从上世纪70年代第一批单片机问世,短短二三十年时间,单片机技术已经成为计算机技术的一个重要分支,广泛运用到工业控制、仪器、仪表、消费产品,汽车、办公自动化和通信等领域。因此,单片机技术已经成为电子、测控、自动化、通信等许多工科专业学生的必备技能。 我用AT89C51芯片来设计一个简单的数码管显示。此设计给出了源代码,通过仿真测试,其性能指标达到了设计要求。 关键词:单片机,AT89C51,数码管设计任务和要求 2.1 设计目的1.学习基本理论在实践中综合运用的初步经验,掌握模拟电路设计的基本方法、设计步骤,培养综合设计与调试能力。 2.了解AT89C51这个芯片的使用和性能指标测试方法。 3.培养实践技能,提高分析和解决实际问题的能力。 2.2 设计意义 为了更好地熟悉和掌握单片机的基本功能和编程,掌握数码管动态扫描显示原理及实现方法。自我动态扫描显示电路驱动程序的编写方法。通过课程设计,达到理论与实际应用相结合,提高学生对微机硬件结构的软件设计方法的理解,使学生能够根据实际应用,初步实现硬件及软件的设计,对硬件开发有更深层的认识,为今后打软硬件开发,打下坚实的基础。总原理图及及主要模块的流程图 3.1 总原理图及元器件清单 (1)我用Proteus 7 professional来画出我设计的总原理图,如图3-1。 如图3-1 此电路图就用到AT89C51这个芯片,和一个数码管。 3.2 主要流程图(四号宋体加粗) 1.主程序的流程图 图3.2-1主流程图 2.子程序的流程图 图3.2-2子流程图性能测试与分析 主程序和子程序都存放在AT89C51单片机中。主程序的功能是:显示数字。子程序的功能有:延时。程序代码: ORG 0000H;初始化 LJMP START;转入主程序 ORG 0010H;初始化 START: CLR P2.7;P2.7←00H MOVR0,#00H;R0←00H MOV R2,#10;R2←10 MAIN: MOV DPTR,#TAB;DPTR←TAB MOV A,R0;A←(RO) MOVC A,@A+DPTR;A←((A)+(DPTR)) MOV P0,A;P0←(A) LCALL DELAY;调用延时程序 INC R0;RO←(R0)+1 DJNZR2,MAIN;判断 JMP START;循环 DELAY:;延时程序 MOV R3,#11 D1: MOV R4,#100 D2: MOV R5,#100 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 RET TAB: DB 00101000B;0 DB 11101011B;1 DB 00110010B;2 DB 10100010B;3 DB 11100001B;4 DB 10100100B;5 DB 00100100B;6 DB 11101010B;7 DB 00100000B;8 DB 10100000B;9 END 我用Proteus 7 professional 软件来测试我设计的电路图。当运行时,数码管显示0。如图4-1。 图4-1 当221ms后,数码管显示1。如图 4-2.图4-2 我的程序是一个循环的,一直到显示9,之后又重新开始显示0。在此不一一列出来。 为了能在实际在到应用,我用开发板来验证我所设计的电路图。其结果如下: 图4-3显示1 图4-4显示8 从仿真的结果可以看出,我的设计是满足我设计的要求的。结论与心得 通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。 这个设计过程中,我遇到过许多次失败的考验,就比如,我在软件上仿真软件上能实现其功能,但是把它写进开发板就无法运行,我不停地找原因。最后我找到了答案,这样我明白,做设计不但是软件可以运行,用在硬件上一样是那么重要的。我做的这个设计主要是用AT89C51这个芯片来实现,这个芯片具有很多优点,程序简单易读,结构清楚,最重要的是成本低。很适合我们学生用来学生。在做这个设计的过程中,我也了解到了自己的不足,在日后的学习中,我还需加倍努力学习。 参考文献) [1]梁炳东.单片机原理与应用。北京:人民邮电出版社,2009 [2] [3]http://wenku.baidu.com/album/view/702db2c7aa00b52acfc7cae7 致谢(小三号 宋体 加粗) 在此次课程设计中,我遇到不懂的问题,老师和同学都帮我,让我把问题顺利地得到解决,最后完成此次课程设计报告。从中我学到了很多东西,在此,谢谢我的老师和同学,感谢你们在我遇到难题的时候帮我解答。 23. 模拟计算器数字输入及显示 1. 实验任务 (1. 开机时,显示“0” (2. 第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。 2. 电路原理图 图4.23.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2. 把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;(3. 把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上; (4. 把“单片机系统:区域中的P2.0-P2.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; 4. 相关程序设计内容 (1. 行列式键盘输入及按键功能设定;(2. 动态数码显示;(6#include 3.. 数 C 码 显语 示 言 方 式源 处 程 理 ; 序 char char code char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; dispbuf[8]={0,16,16,16,16,16,16,16}; char dispbitcount; char char char char temp;i,j; key;keypos;alarmflag; *p,unsigned char count)while(count>0){ *(p+count)=*(p+count-1);count--;} } void { TMOD=0x01;TH0=(65536-4000)TL0=(65536-4000)TR0=1;ET0=1;EA=1; / % main(void) 256;256;while(1){ P3=0xff;P3_4=0;temp=P3;temp=temp if { for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp if { temp=P3;temp=temp switch(temp){ case key=7;break;case key=8;break;case key=9;break;case key=10;break;} if((key>=0){ keypos++;if(keypos<8){ change(dispbuf,keypos);dispbuf[0]=key;} else { keypos=8;alarmflag=1;} & & & && 0x0f; (temp!=0x0f) 0x0f; (temp!=0x0f) 0x0f; 0x0e: 0x0d: 0x0b: 0x07:(key<10))} temp=P3;P1_0=~P1_0;temp=temp while(temp!=0x0f){ temp=P3;temp=temp } alarmflag=0;} } P3=0xff;P3_5=0;temp=P3;temp=temp if { for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp if { temp=P3;temp=temp switch(temp){ case key=4;break;case key=5;break;case key=6;break;case key=11;break;} if {((key>=0) & & & & & && 0x0f; 0x0f; 0x0f; (temp!=0x0f) 0x0f; (temp!=0x0f) 0x0f; 0x0e: 0x0d: 0x0b: 0x07:(key<10))keypos++;if(keypos<8){ change(dispbuf,keypos);dispbuf[0]=key;} else { keypos=8;alarmflag=1;} } temp=P3;P1_0=~P1_0;temp=temp while(temp!=0x0f){ temp=P3;temp=temp } alarmflag=0;} } P3=0xff;P3_6=0;temp=P3;temp=temp if { for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp if { temp=P3;temp=temp switch(temp){ case key=1;break;case & & & & & 0x0f; 0x0f; 0x0f; (temp!=0x0f) 0x0f; (temp!=0x0f) 0x0f; 0x0e: 0x0d: key=2;break;case key=3;break;case key=12;break;} if((key>=0){ keypos++;if(keypos<8){ change(dispbuf,keypos);dispbuf[0]=key;} else { keypos=8;alarmflag=1;} } temp=P3;P1_0=~P1_0;temp=temp while(temp!=0x0f){ temp=P3;temp=temp } alarmflag=0;} } P3=0xff;P3_7=0;temp=P3;temp=temp if { for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3; && & & & 0x0b: 0x07: (key<10)) 0x0f; 0x0f; 0x0f; (temp!=0x0f)temp=temp if { temp=P3;temp=temp switch(temp){ case key=0;break;case key=13;break;case key=14;break;case key=15;break;} if((key>=0){ keypos++;if(keypos<8){ change(dispbuf,keypos);dispbuf[0]=key;} else { keypos=8;alarmflag=1;} } temp=P3;P1_0=~P1_0;temp=temp while(temp!=0x0f){ temp=P3;temp=temp } alarmflag=0;} & & && & & 0x0f; (temp!=0x0f) 0x0f; 0x0e: 0x0d: 0x0b: 0x07: (key<10)) 0x0f; 0x0f;} } } void t0(void) interrupt { TH0=(65536-4000)/ TL0=(65536-4000) % P0=dispcode[dispbuf[dispbitcount]];P2=dispbitcode[dispbitcount];dispbitcount++;if { dispbitcount=0;} if { P1_1=~P1_1;} } using 0 256;256; (dispbitcount==8) (alarmflag==1) 《程序设计语言VC++课程设计》课程教学大纲 一.课程基本信息 开课单位:经济管理学院信息管理系 课程编号: 英文名称: Programming Language VC++ Course Design 学时:总计32学时,其中理论授课0学时,实验(含上机)32学时 学分:2.0学分 面向对象:信息管理与信息系统、信息管理与信息系统(电子商务方向)本科专业 教材: 《Visual C++程序设计》,潘克勤,华为主编,中国铁道出版社,2008年 1月 第1 版 《Visual C++程序设计解析与实训》,张晓如,王芳主编,中国铁道出版社,2008年 3月 第1 版 主要教学参考书目或资料: 1.Visual C++开发技术大全——软件工程师典藏.明日科技 编著.北京:人民邮电出版社,2007年3月 2.C++大学教程.(美)戴特尔(Deitel,H.M.)等著,张引 等译.北京:电子工业出版社,2007年2月 3.全国计算机等级考试上机考试习题集.全国计算机等级考试命题研究组 编.天津:南开大学出版社,2007年11月 二.教学目的和任务 课程设计是课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,是一门专业基础课或专业课教学计划中综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践能力、为毕业设计及毕业后从事专业技术工作打下基础,提高学生全面素质具有重要的意义。因此,《程序设计语言VC++课程设计》的目的就是要通过一个学生成绩管理系统的实际开发,提高学生应用所学知识分析问题,解决问题和实际动手的能力,更加熟练地掌握C++程序开发的基本方法和工作步骤,对系统开发实践有进一步体会。从而综合复习课程中的所有理论知识点,进一步熟练面向对象程序的开发方法和流程,提高学生独立分析问题和解决问题的能力。真正理解书本知识,牢固掌握课堂教学内容。 三.教学目标与要求 学生按照课程设计任务书要求,通过两周的时间,设计出一个学生成绩管理系统,能实现对某班级学生成绩的管理及奖学金、三好生的评定工作。要求具备查询和检索等功能,并且能够对指定文件进行操作,也可以将多个文件组成一个文件。从而进一步掌握算法的描述、了解初步的数据结构,熟悉C++语言的语句格式、功能及其应用。 四.教学内容、学时分配及其基本要求 实验项目 学生课程成绩管理系统 设计内容: 设计一程序,实现对某班级学生成绩的管理及奖学金、三好生的评定工作。要求具备查询和检索等功能,并且能够对指定文件进行操作,也可以将多个文件组成一个文件。 设计要求: ⒈应严格按照开发小型项目的基本流程进行设计。⒉成绩管理程序至少应具有以下功能: ⑴输入:学生的基本信息,包括学号、姓名、性别、籍贯、VC++成绩、英语成绩、物理成绩等; ⑵计算:每个学生的总成绩、平均成绩,所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出; ⑶查询:可以按学号、姓名等进行成绩查询; ⑷排序:可以按学号、姓名、VC++成绩、英语成绩、物理成绩、总成绩、平均成绩等进行排序并输出; ⑸删除:删除某条记录; ⑹按学分积点计算办法计算出每个学生的学分积点,并按从高到低的顺序排列输出。 ⑺按奖学金评定办法,从特等奖开始,输出获得奖学金的学生名单及该生的学习成绩与学分积点。⑻按三好生评定办法,输出获得三好生的学生名单。⑼定义类,用类和对象的知识进行系统设计和实现。 本实验由单人一组完成,根据课程设计任务书的要求,在教师的指导下,进行资料的查阅,规范地进行系统分析与系统设计工作。本实验是以学生自主设计为主的开放模式组织教学。 六.考核方式及考核方法 ⒈考核方式为考查。 在课程设计的最后一次上机时间进行检查和成绩评定。⒉考核方法 通过设计答辩方式,并结合学生的动手能力、独立分析解决问题的能力和创新精神,课程设计报告和答辩水平以及学习态度综合考评。 成绩分为五个等级: 优:能独立完成设计要求所规定的全部内容,设计方案正确、基本概念清楚,有独到的见解或创造性。 良:能较好完成设计要求所规定的全部内容,设计方案正确,分析问题正确、基本概念清楚。 中:能完成设计要求规定的全部内容,设计方案基本正确,基本概念清楚。及格:基本完成设计要求规定的内容,设计方案基本合理,基本概念较清楚。 不及格:未完成设计要求规定的内容,设计方案不合理,或有较严重缺陷,基本概念不清楚。考核标准包括: 程序设计的可用性、实用性、通用性、可扩充性(30%); 学生的动手能力、创新精神(30%); 课程设计报告(20%); 答辩水平(20%)。 (制定人: 审定人:) #include using namespace std; class person{ friend ostream& operator<<(ostream& out,const person& p){ p.output(); return out;}; public: virtual void output()const{} }; class teacher : public person{ public: virtual void output()const{cout<<“salary”< class student : public person{ public: virtual void output()const{cout<<“stu_num”< int main(){ teacher t;student s;t.x=3500;s.y=20092293; person* pa=&t;pa =&s;cout<<*pa;cout<第二篇:单片机数码管显示课程设计
第三篇:23. 模拟计算器数字输入及显示
第四篇:《程序设计语言VC++课程设计》教学大纲2周(吕)
第五篇:学生和老师信息输入与输出