程序设计说明书
程序概要设计说明书

程序概要设计说明书
《程序概要设计说明书》
嘿,大家好呀!今天我来给大家讲讲程序概要设计这档子事儿。
就拿我上次做一个小游戏程序的设计来说吧。
一开始呀,我就跟自己说,咱得好好规划规划,可不能瞎整。
我坐在那电脑前,盯着屏幕,就好像面前有一座大山等着我去征服。
我先想着这个游戏得有个主角吧,于是我就开始设计主角的各种属性,它长啥样啊,能跑多快呀,跳多高呀。
然后我又想,得有个场景吧,是森林呢,还是沙漠呢,纠结了好久,最后决定搞个神秘的魔法森林。
接着呢,我开始设计游戏的关卡,这可费了我不少脑细胞。
我得想着怎么让每个关卡都有不同的挑战和乐趣,一会儿想着这儿放个陷阱,一会儿想着那儿藏个宝藏。
哎呀,那过程,就跟我自己在那个魔法森林里冒险似的。
设计游戏里的怪物也挺有意思,我想着得有个长得凶神恶煞的,还有个会偷偷摸摸的,反正各种奇奇怪怪的形象都在我脑子里冒出来。
然后就是各种规则啦,怎么得分呀,怎么过关呀,我一点点地完善,就像在给自己搭一个超级有趣的积木城堡。
到最后,看着自己设计出来的这个小游戏框架,我心里那叫一个美呀!就好像我真的创造了一个小小的世界。
总之呢,程序概要设计就像是给一个梦想搭起一个框架,然后慢慢把它变成现实。
嘿嘿,是不是挺有意思的呀!
好了,就说到这儿啦,下次再给你们分享更多好玩的事儿哟!。
程序设计说明书由( )编写

程序设计说明书由( )编写
程序设计说明书由程序员编写。
程序设计说明书是一份详细的文档,用于描述软件系统的设计和实现细节,以便其他开发人员能够理解和维护软件。
程序设计说明书通常包括软件系统的架构、功能模块、接口设计、数据结构、算法等内容。
在编写程序设计说明书时,程序员需要遵循一定的规范和标准,以确保文档的准确性和完整性。
首先,程序员应该清晰地描述软件系统的整体架构,包括系统的模块划分、模块之间的关联关系等。
其次,程序员需要详细说明每个功能模块的设计思路和实现方法,包括输入输出接口、处理逻辑、异常处理等。
此外,程序员还需要描述数据结构和算法的设计原理和实现细节,以便其他开发人员能够理解和修改代码。
在编写程序设计说明书时,程序员应该使用清晰简洁的语言,避免使用过于专业的术语和缩略语,以确保文档的易读性和易理解性。
此外,程序员还应该注意文档的格式和排版,使文档结构清晰、内容突出,便于读者查阅和理解。
总之,程序设计说明书是软件开发过程中至关重要的文档,它不仅可以帮助其他开发人员理解和修改代码,还可以提高软件系统的可维护性和可扩展性。
因此,程序员在编写程序设计说明书时应该认真对待,确保文档的准确性和完整性,以促进软件系统的开发和维护工作顺利进行。
C语言综合程序设计说明书

C语言综合程序设计说明书一、设计目的用C语言设计一个具有输入成绩、打印成绩表功能的综合程序,以巩固和加深对C语言的学习。
二、设计要求1、输入1时完成输入姓名及各科成绩;2、输入2时完成打印输出总表;3、输入3时完成打印学号,成绩表,总分和名次;4、输入4时,完成退出功能。
注:每执行完一个功能,屏幕必须清屏。
三、设计思路将设计要求中的1、2、3分别定义为具有相应功能的子函数,再在主函数中进行调用。
1、根据设计要求,设计需要用到结构体数组。
因此,首先需要定义一个结构体数组,并将其中的学号赋值为从10101~10105。
2、定义一个具有输入成绩功能的子函数,用循环语句和scanf 语句相结合,完成每个学生的信息输入。
3、另外定义一个子函数对结构体中的总分进行比较,排出学生名次。
4、定义一个输出总表函数,用printf语句和循环语句结合使用,使该函数可以输出结构体中的各项数据。
根据设计要求,可将定义的输出总表的函数中的输出姓名项删除,即可得到打印学号、成绩表、总分和名次的函数。
四、程序设计环境Windows操作系统 Win-tc五、程序功能模块图六、程序功能流程图输入子函数--完成信息的录入 输出子函数—完成打印表排名子函数--完成名次的排列 退出子函数--完成退出功能七、程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>struct student{ int num;char name[20];float score[5];float sum;int mingci;}st[6]={{0},{10101},{10102},{10103},{10104},{10105}};int shuru(){ int i;system("cls");printf("成绩录入\n\n\n\n");printf("\t\t本程序只能输入5个学生的信息\n\t\t为使系统正常工作请按提示操作\n\n\t\t注意:每输入成一项信息后按Enter键确认!\n\n\n\n");printf("\n\n");sqrt(0); /*打开win tc浮点数支持*/for(i=1;i<=5;i++) /*这个循环是输入数据*/{printf("请输入学号为%d学生的姓名:",st[i].num);scanf("%s",st[i].name);printf("请输入该生的数学成绩:");scanf("%f",&st[i].score[1]);printf("请输入该生的英语成绩:");scanf("%f",&st[i].score[2]);printf("请输入该生的计算机成绩:");scanf("%f",&st[i].score[3]);printf("请输入该生的哲学成绩:");scanf("%f",&st[i].score[4]);st[i].sum=st[i].score[1]+st[i].score[2]+st[i].score[3]+st[i].score[4]; }printf("\n您已经完成了5位学生信息的录入\n\n\t\t请按任意键返回主菜单\t"); getch();}int mingci(){ int i,j;for(i=1;i<=5;i++){ st[i].mingci=1;for(j=1;j<=5;j++)if(st[i].sum<st[j].sum) st[i].mingci++;}}int shuchu(){ int i;printf("打印输出总表");printf("\n\n\n");printf("\t\b\b\b_______________________________________________________________ _________\n");printf("\t学号\t姓名\t\t数学\t英语\t计算机\t哲学\t总分\t名次\n");printf("\t\b\b\b_______________________________________________________________ _________\n");for(i=1;i<6;i++) /*这个循环是输出数据*/{printf("\t%d\t%8s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t %d\n",st[i].num,st[i].name, st[i].score[1],st[i].score[2],st[i].score[3],st[i].score[4],st[i].sum,st[i].min gci);printf("\t\b\b\b_______________________________________________________________ _________\n");}printf("\n\n\n\n");printf("您还想完成哪项操作,请选择功能键 1,2,3,4后按 Enter\n");printf("\n");printf("\t1.录入成绩 2.打印输出总表 3.打印学号、成绩表、总分和名次 4.退出\n"); }int shuchu1(){ int i;printf("打印学号、成绩表、总分和名次");printf("\n\n\n");printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");printf("\t\t学号\t数学\t英语\t计算机\t哲学\t总分\t名次\n");printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");for(i=1;i<6;i++) /*这个循环是输出数据*/{printf("\t\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t %d\n",st[i].num,st[i].score[1] ,st[i].score[2],st[i].score[3],st[i].score[4],st[i].sum,st[i].mingci);printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");}printf("\n\n\n\n");printf("您还想完成哪项操作,请选择功能键 1,2,3,4后按 Enter\n");printf("\n");printf("\t1.录入成绩 2.打印输出总表 3.打印学号、成绩表、总分和名次 4.退出\n"); }int tuichu(){ char m;while(1){system("cls");printf("\n\n\n\n\n");printf("\t\t\t您确认要退出吗?(y/n)\n");printf("\n\n");printf("\t\t\ty 确认退出\n");printf("\t\t\tn 返回主菜单\n\n\n\n");printf("\t\t请选择功能键 y 或 n 后按 Enter\t");scanf("%c",&m);if(m=='y') exit(0);else if(m=='n') main();}}main(){ int i,j;char n;system( "graftabl 936 ");system("cls");printf(" 08-09学年第2学期c语言综合程序设计*****应用电子技术08-1班:肖红福丁传飞*****\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~\n");printf("\n\n\n\n");printf("\t\t\t1.录入成绩\n\t\t\t2.打印输出总表\n\t\t\t3.打印学号、成绩表、总分和名次\n\t\t\t4.退出\n\n\n\n\n");printf("\t\t请选择功能键 1,2,3,4后按 Enter\t");while(1){scanf("%c",&n);switch(n){case '1':system("cls");shuru();mingci();main();break;case '2':system("cls");shuchu();break;case '3':system("cls");shuchu1();break;case '4':tuichu();default : printf("对不起!您输入的数字不是功能键,请从新选择\n");}}}八、程序运行结果注:本程序因调用函数system( "graftabl 936 "),因此直接用Win-tc的英文环境即可运行。
java详细设计说明书文档示例

java详细设计说明书文档示例Java详细设计说明书文档示例一、引言Java详细设计说明书是软件开发中的重要文档之一,它在软件设计和开发过程中起到了指导和记录的作用。
本文档旨在详细描述Java 程序的设计思路、模块结构、类设计和方法实现等内容,为开发人员提供清晰明了的设计指导。
二、背景Java是一种跨平台的面向对象编程语言,具有简单易学、安全可靠和高效性的特点。
在软件开发领域,Java被广泛应用于Web应用、移动应用和企业级应用等多个领域。
为了确保Java程序的设计合理、结构清晰和代码可维护性,编写Java详细设计说明书是非常必要的。
三、设计目标本文档的设计目标如下:1. 描述Java程序的整体架构和模块划分,使开发人员能清晰理解程序结构。
2. 详细描述各个模块的功能和相互关系,确保程序的模块化和低耦合性。
3. 说明每个类的设计思路和功能,确保类的职责单一和高内聚性。
4. 提供方法级的设计说明,确保方法的输入输出和实现逻辑清晰明了。
5. 给出必要的代码示例和注释,方便开发人员理解和使用。
四、设计概述本Java程序是一个学生信息管理系统,主要包括学生信息的录入、查询、修改和删除等功能。
系统的整体架构采用三层架构(表现层、业务逻辑层和数据访问层),以实现功能模块的分离和重用。
1. 表现层表现层是用户与系统交互的界面,负责接收用户输入和显示系统输出。
在本程序中,我们使用Swing框架开发了一个简单的图形用户界面(GUI),包括菜单、输入框和按钮等组件。
2. 业务逻辑层业务逻辑层是程序的核心部分,负责处理用户请求和业务逻辑。
在本程序中,我们设计了以下几个业务模块:- 学生信息录入模块:负责接收用户输入的学生信息,对其进行验证和保存。
- 学生信息查询模块:负责根据用户提供的条件查询学生信息,并将结果返回给用户。
- 学生信息修改模块:负责根据用户提供的条件修改学生信息。
- 学生信息删除模块:负责根据用户提供的条件删除学生信息。
C++程序设计课程设计银行账户管理系统说明书

C++程序设计课程设计说明书银行账户管理系统指导教师:设计者:专业班级:设计时间:《C++程序设计》课程设计计划书专业班级:设计题目:银行账户管理系统一、已知技术参数或设计前提1、每个用户都有自己的用户名,密码,身份证号,存款等属性。
2、银行应对所有用户实行管理,用户的增减,历史记录的保存,提供存取款,汇款,出入账查询等服务。
二、设计内容(一)管理员模式1、开户,管理员输入用户姓名、身份证号码;用户输入密码、确认密码。
2、挂失,管理员输入用户卡号进行操作。
3、取消挂失,同上。
4、消户,管理员输入用户帐号,密码,显示用户信息,确认后进行操作。
(二)用户模式1、存款,用户输入帐号,密码,存款金额进行操作。
2、取款,同上。
3、查询,输入密码。
4、转账,输入本人密码,对方账号,转账金额进行此操作。
5、更改密码,输入原密码,再输入新密码,然后确认新密码。
三、课程设计工作计划1、确定题目,成立设计小组,做用户需求分析2、查阅资料,进行问题分析,制定方案,确定成员分工3、根据方案编写程序并进行调试4、撰写设计说明书,完成设计5、提交设计内容,答辩四、相关教材及参考书目1、谭浩强.C++语言基础课程.清华大学出版社,20092、郑莉.C++语言程序设计案例教程.清华大学出版社,20053、王瑞等.Visual C++数据库系统开发完全手册.人民邮电出版社,20064、郑莉. C++语言程序设计习题与实验指导.清华大学出版社,20075、张基温. C++程序设计基础例题与习题.高等教育出版社,20086、于永彦. C++程序设计基础案例教程.北京大学出版社,20097、/book/c.html指导教师签字:系主任签字:2010年月日银行账户管理系统一、需求分析银行为广大用户提供快捷的金融服务,需要安全、稳定、高效的信息系统。
银行的业务信息系统种类很多,包括渠道层的各种终端系统、产品层的综合业务系统、信贷管理系统、资金清算系统等等,统称为前台业务系统。
小程序设计说明书

小程序设计说明书第一部分:概述本小程序设计说明书旨在介绍小程序的设计思路、功能模块以及技术实现方法,为开发团队提供参考和指导。
以下将详细介绍小程序的设计原则、界面结构、功能需求和技术实现等方面的内容。
第二部分:设计原则1. 便捷性:小程序需要提供用户友好的操作界面,方便用户快速完成所需操作。
2. 一致性:界面风格、交互方式、信息展示等方面需要保持一致,提供一致的用户体验。
3. 轻量化:小程序需要精简功能,避免过多冗余的功能,使用户界面简洁明了。
4. 异步加载:通过异步加载方式,提高小程序的访问速度和性能。
5. 安全性:小程序需要采取必要的安全措施,确保用户信息的保密性和数据的完整性。
第三部分:界面结构小程序的界面结构主要包括首页、功能页面以及设置页面。
1. 首页:- 导航栏:位于页面顶部,提供切换页面的入口和搜索功能。
- Banner广告:展示小程序的特色功能或推广信息。
- 功能入口:以图标或文字形式展示各个功能页面的入口,方便用户快速进入相应功能页面。
- 信息展示区:展示与用户相关的信息,如推荐商品、热销商品等。
2. 功能页面:- 根据小程序的具体功能设置相应的页面,如商品列表页面、购物车页面、订单页面等。
- 页面布局应简洁明了,将相关功能模块进行分类,方便用户使用。
3. 设置页面:- 提供用户个性化设置功能,如修改个人信息、更改密码、消息推送设置等。
- 根据需要设定相应的设置项。
第四部分:功能需求本小程序的功能主要分为基本功能和高级功能两个部分。
1. 基本功能:- 用户注册与登录:用户可以注册小程序账号,通过账号登录使用小程序功能。
- 商品浏览与搜索:用户可以浏览商品列表,进行商品搜索,并查看商品详情。
- 购物车:用户可以将感兴趣的商品加入购物车,并对购物车中的商品进行管理。
- 订单管理:用户可以查看已下单的订单状况,进行订单的取消、支付和评价等操作。
- 个人中心:用户可以查看和修改个人信息,管理收货地址等。
C语言程序设计大作业设计说明书

C语言程序设计大作业设计说明书概述:处在Microsoft Visual C++软件下的Developer Studio集成开发平台中进行开发。
已实现了基本功能中的:1、随机生成没有重复的4个数。
(每个数字在0-9范围内)。
2、用户从键盘输入4个不重复的数,程序能对用户输入的数与随机生成的数进行匹配,并给出提示信息:“有x个数数值和位置都相同!有y个数数值相同,但位置不同。
”3、控制用户的尝试次数为10次。
4、计算、输出并保存用户的得分,计分规则:总分是100分,每失败一次扣10分。
5、有操作菜单,能根据不同选择运行不同功能:1:开始游戏!2:查看上次成绩!3:输出帮助信息!4:游戏设置!0:退出程序!还实现了扩展功能里的:1.对用户输入的数字进行检查,如果用户输入重复的数,给出提示,要求重新输入。
2.能对游戏进行设置:在操作菜单中增加相应的选项:“4:系统设置”。
(1)修改要猜的数字的个数n,根据修改后的n值,计算机可随机生成n个数,用户进行n个数的猜测游戏。
(2)修改可以尝试的次数。
未实现的功能是扩展功能里的:1、若游戏胜出且成绩在前五名,可输入并记录对应的用户姓名,并添加到积分榜中。
操作菜单中相应选项改为“2:积分榜!”,用于把积分榜中保存的前五名成绩及用户姓名显示出来。
2、能对积分榜的成绩进行排序和输出。
经多次运行尝试,虽然编辑、编译、连接都没有错误,可以运行,但是在运行的时候有时会卡住,要等一会才会显示出来。
程序概要设计:程序流程是:开始运行到主界面,在主界面中可选择:1:开始游戏!2:查看上次成绩!3:输出帮助信息!0:退出程序!,然后选择开始游戏后,程序会生成4个不重复且在0-9之间的随机数,然后玩家需输入4个不同的数0-9之间的数,接着程序会判断玩家输入的4个数与程序生成的随机数的数值和位置是否相同,并提示4个数的数值跟位置相同和不同有几个,就这样一直循环到4个数的数值和位置都正确,或玩家尝试次数已超过10次。
课程设计说明万年历程序设计

《高级语言程序设计》课程设计说明书设计题目:万年历程序设计班级:学号:姓名:完成日期:一:课程设计目的《高级语言程序设计》课程设计是电子信息、光信息专业和物理学专业集中实践性环节之一,是学习完《高级语言程序设计》课程后进行的一次全面的综合练习,其目的在于加深对程序设计大体知识的明白得,把握利用C语言进行模块化软件设计的大体方式,提高通过编写程序解决实际问题的能力,为尔后从事设计工作和后续各类编程课程的学习打好基础。
二:需求分析题目:要求:输入年份和月份,自动输出该月的日历,清楚的显示每一天是礼拜几,输入年份,月份和具体日期能确信某天是礼拜几。
万年历是采纳数字电路实现对.时,分,秒.数字显示的计时装置,普遍用于个人家庭,车站, 码头办公室等公开场合,成为人们常生活中不可少的必需品,由于数字集成电路的进展和石英晶体振荡器的普遍应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如按时自动报警、按时自动打铃、时刻程序自动操纵、按时广播、自动起闭路灯、按时开关烘箱、通断动力设备、乃至各类按时电气的自动启用等,可是所有这些,都是以钟表数字化为基础的。
因此,研究万年历及扩大其应用,有着超级现实的意义。
它能够对年、月、日、周日、时、分、秒进行计时,关于数字电子万年历采纳直观的数字显示,能够同时显示年、月、日、周日、时、分、秒等信息,还具有时刻校准等功能。
综上所述此万年历具有读取方便、显示直观、功能多样、电路简练、本钱低廉等诸多优势,符合电子仪器仪表的进展趋势,具有广漠的市场前景。
三:概要设计1-判定是不是为闰年计算所输入的年份是不是可被4整除,假设不能被整除,为平年。
假设可被4整除,计算此年份可否被100整除,不能被100整除那么为闰年。
既能被4整除,也能被100整除的年份,假设也能被400整除,那么为闰年,不然为平年。
闰年366天,平年365天2-要紧设计思路四:详细设计源程序:#include <stdio.h> #include <stdlib.h>void DayOfWeek(){int rtnDay;int y,m,d;char ch;while (1){printf("请输入年月日(xxxx,xx,xx): ");scanf("%d,%d,%d", &y, &m, &d);fflush(stdin);rtnDay =(3*y-(7*(y+(m+9)/12))/4+(23*m)/9+d+17-((y+(m<3?-1:0))/100+1)*3/4) % 7; printf("%04d年%02d月%02d日是礼拜%d\n", y, m, d, rtnDay?rtnDay:7); printf("继续查询(y/n)");ch = getchar();if(ch != 'y' && ch != 'Y')break;}}void GetMonth(int D, int md, int n){int N ,m,d,y,c,Wd;int i,maxday,i1;if(md>=13||md<=0)printf("HAVE WRONG!");else{for(i1=0;;md++,i1++){if(md==0){md=12;D-=1;}elseif(md==13){md=1;D+=1;}m=md;printf("\n============%d,%2d============\n",D,md);if(0<m&&m<=12){switch(m){case 1:maxday=31;break;case 2:if(D%4==0&&D%100!=0||D%400==0) maxday=29;elsemaxday=28;break;case 3:maxday=31;break;case 4:maxday=30;break;case 5:maxday=31;break;case 6:maxday=30;break;case 7:maxday=31;break;case 8:maxday=31;break;case 9:maxday=30;break;case 10:maxday=31;break;case 11:maxday=30;break;case 12:maxday=31;break;default:printf("HAVE WRONG");}if(0<m&&m<=2){N=D-1;m=m+10;}else{N=D;m=m-2;}c=N/100;y=N%100;Wd=((1+(13*m-1)/5+y+y/4+c/4-2*c)%7+7)%7; printf(" SUN MOU TUE WED TUR FRI SAT\n"); for(i=0;i<Wd;i++)printf("%4c",' ');for(d=1;d<=maxday;d++){printf("%4d",d);Wd=(Wd+1)%7;if(Wd==0)printf("\n");}}elseprintf("HAVE WRONG!");if(i1==n)break;}}}void MonthOfYear(){char ch;int y, m;while (1){printf("请输入年月(xxxx,xx): "); scanf("%d,%d", &y, &m);fflush(stdin);GetMonth(y, m, 0);printf("\n继续查询(y/n)");ch = getchar();if(ch != 'y' && ch != 'Y')break;}}void GetYear(){char ch;int y;while (1){printf("请输入年: ");scanf("%d", &y);fflush(stdin);GetMonth(y, 1, 11);printf("\n继续查询(y/n)");ch = getchar();if(ch != 'y' && ch != 'Y')break;}}int main(){char ch;while(1){system("cls");printf("1.查询礼拜\n");printf("2.查询月份\n");printf("3.显示一年\n");printf("4.退出程序\n");ch = getchar();fflush(stdin);switch(ch){case '1':DayOfWeek();break;case '2':MonthOfYear();break;case '3':GetYear();break;case '4':printf("是不是退出(y/n)");ch = getchar();fflush(stdin);if(ch == 'y' || ch == 'Y')exit(0);break;}}}五:运行成效及分析1 登录界面输入3,通过输入年份可显示一年每一个月份的日历;输入2,通过输入年份和月份(中间以空格分开)可显示该月的日历;假设输入1,通过输入年份月份和日期(中间以逗号分开)可显示该日的礼拜;输入4,那么退出查询系统2查询礼拜输入1后回车,然后输入具体的年月日可查出该天为礼拜几3查询月历输入2回车,然后输入年月可显示该月月历4显示一年输入3后回车,输入一个有效年份可显示该年的十二个月的月历。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:201201011367程序名称:便捷记事本程序设计说明书学院:计算机电子信息工程学院班级: 12级信息管理与信息系统姓名:佐佐一.前言Windows操作系统是由微软公司开发的视窗操作系统,是目前世界上用户最多且兼容性最好的操作系统,windows软件自然也是大势所趋,因此我们大家学习windows编程设计能够深化对它的认识,有助于大家更好的学习windows编程。
本次程序设计试验是在我校专业微机三室采用windowsXP操作系统的微机进行试验,编程工具是Microsoft Visual C++ 6.0(完整绿色版)在windowsXP 操作系统上具有很好的兼容性,试验结果准确可靠。
本程序是我半年来学习windows编程在老师的指导下写的一款常用的小程序—记事本。
为了考察我们这学期的window程序编程能力和对课程的考察,老师通过考察课的形式检验我们.此次考察课老师让我们编写一款windows小程序并上交程序设计说明书.以下是我的这个程序的设计说明.二.设计目的使学生综合使用所学过的windows程序设计知识,掌握windows程序设计的基本结构思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的windows程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。
而且使同学们能够熟练地利用MSDN查找在程序中遇到的API函数和消息等。
熟悉在Visual C++ 6.0 中编辑、编译、调试和运行一个实际窗口式应用程序的步骤和方法。
理解并掌握VC++的API编程步骤与方法,能进行简单的Windows 程序设计提高实际动手能力。
三.总体设计描述1.建立一个编辑窗口,能进行文本的输入与删除操作。
2.完成基本的编辑功能(复制、剪切、粘贴、撤销、删除、全选)。
3.完成文件的读写操作(新建、打开、保存、另存为、退出)。
4.形成完整的windows应用小程序-------便捷记事本。
四.功能模块划分1主函数主函数模块里主要有三步一、注册窗口类;二、建立窗口,显示窗口,更新刷窗口;三、消息循环。
在注册窗口类里窗口属性窗口样式是水平、垂直可调;用wndclass.lpfnWndProc =WndProc指向窗口函数,将二者联系起来;将图标、鼠标、背景颜色画刷、菜单名载入窗口类并且填入窗口类名。
注册完窗口类后下面是根据窗口类创建窗口然后显示窗口和刷新窗口。
完成前面的操作后最后一步进行消息循环。
2窗口函数在窗口模块里主要是定义了窗口的样式:子窗口、窗口可见、有水平垂直滚动条、有边框、编辑样式是左对齐、多行、水平自然滚动、垂直自然滚动,及定义所见窗口的位置及尺寸。
还有所见窗口的代号和编辑窗口的ID和指向实例的指针。
虽然在窗口定义窗口的位置尺寸但是真实的尺寸在WM_SIZE分支中由Move Window来确定。
3按消息细化模块功能(1)首先进行初始化(2)用WM_CREATE创建编辑窗口,使窗口可以输入文本。
(3)用WM_SETFOCUS使编辑控制项获得输入焦点。
(4)用WM_SIZE使编辑窗口实现移动的功能。
(5)用WM_COMMAND向窗口函数发送消息。
(6)文件菜单中操作功能:<1>用IDM_FILE_NEW实现新建一个新文本文件功能<2>用IDM_FILE_OPEN实现从电脑中打开一个文本文件的操作。
<3>用IDM_FILE_SAVE实现对已经操作完成的文件进行保存。
<4>用IDM_FILE_SAVE_AS实现对默认路径打开的文件进行另存为。
<5>用IDM_FILE_PRINT实现对文件在打印机的打印功能。
<6>用IDM_EDIT_EXIT实现退出及时本的作用。
(7)编辑菜单中的中操作功能:<1>用IDM_EDIT_UNDO实现对文本操作的撤销。
<2>用IDM_EDIT_CUT实现对文本的剪贴操作。
<3>用IDM_EDIT_COPY实现对文本的复制操作。
<4>用IDM_EDIT_PASTE实现对文本的粘贴操作。
<5>用IDM_EDIT_CLEAR实现对文本清除操作。
<6>用IDM_EDIT_SELECT_ALL实现对文本全选操作。
(8)菜单栏上的帮助和关于功能:IDM_HELP_HELP实现帮助操作,用IDM_APP_ABOUT实现关于操作。
(9)用WM_CLOSE进行关闭窗口消息的处理。
(10)用WM_QUERYENDSESSION询问是否结束程序的窗口消息。
(11)用WM_DESTROY实现销毁窗口操作。
五.功能模块描述与实现1.主函数模块的实现(1)注册主窗口类,<1>定义一个WNDCLASS结构变量wndcls<2>按主窗口属性填写wndcls各成员<3>用RegisterClass注册窗口类(2)建立、显示、刷新主窗口<1>用CreateWindow函数建立编辑窗口<2>用ShowWindow显示窗口<3>用UpdateWindow更新窗口(3)建立应用程序的消息循环<1>用GetMessage函数表达式作为while循环的条件<2>在循环体内调用TranslateMessage产生字符消息<3>在循环体内调用DispatchMessage分发消息消息2.编辑窗口模块(1)初始化编辑窗口<1>编辑窗口获得输入焦点( WM_SETFOCUS)<2>编辑窗口的移动(WM_SIZE)<3>向编辑窗口发送消息(WM_COMMAND)(2)菜单操作<1>文件菜单①新建:当打开文件为空时用SetWindowText函数改变指定窗口的标题栏的文本内容,新建立一个文本文档。
②打开:用ZeroMemory宏用0来填充一块内存区域,然后用GetFileLen获取文件长度,用GetOpenFileName获得打开文件的名称并且指向打开的文件名,用Fopen打开文件,用Free释放空间。
③保存:先判断文件是否为空,若不为空直接保存文件④另存为:用ZeroMemory宏用0来填充一块内存区域,然后用GetFileLen获取文件长度,用GetSaveFileName获得保存文件的名称并且指向保存的文件名,用Fclose关闭文件,用Free释放空间。
⑤退出:用SendMessage函数将指定的消息发送到一个窗口,销毁编辑窗口。
<2>编辑菜单①撤消:用SendMessage函数将撤消消息发送到编辑窗口。
②剪贴:用SendMessage函数将剪贴消息发送到编辑窗口。
③复制:用SendMessage函数将复制消息发送到编辑窗口。
④粘贴:用SendMessage函数将粘贴消息发送到编辑窗口。
⑤删除:用SendMessage函数将删除消息发送到编辑窗口。
⑥全选:用SendMessage函数将全选消息发送到编辑窗口。
<3>帮助和关于菜单用MessageBox分别显示版主和关于信息的消息方块。
3.作用窗口函数模块<1>初始化,窗口初建时(WM_CRETAE)。
<2>关闭窗口的处理。
<3>询问是否结束程序窗口的处理。
<4>清理全局或静态对象,窗口销毁时(WM_DESTROY)。
六.心得体会从这次windows程序设计实验中,我深刻的认识到可视化编程与控制台编程之间的区别,win32编程并不是编写windows程序的唯一方法,但却是最基本最重要的方法。
Windows API写出的应用程序具有最佳的性能、最强大的功能和最大的灵活性,而且生成的执行文件相对较小,所以对于像我一样的编程初学者说,更应该深入认真地学习win32 编程,提高自己的编程技能和增加自己的编程经验,为以后学习其他的编程语言奠定基础。
附件A:程序主要函数原型和简要功能说明(1)WinMain函数原型是:int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow) 函数的功能是:被系统调用,作为一个32位应用程序的入口点。
WinMain函数应初始化应用程序,显示主窗口,进入一个消息接收一发送循环,这个循环是应用程序执行的其余部分的顶级控制结构。
(2)CreateWindow函数原型是;HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID lpParam);函数的功能是:创建一个交叠的、弹出的或者子窗口。
它指定窗口类、窗口标题、窗口风格以及窗口初始化时的位置和大小(可选的)。
它也指定了窗口的父窗口或者所有者,还可以指定窗口的菜单。
(3)ShowWindow函数原型是:BOOL ShowWindow( HWND hWnd, int nCmdShow );函数功能是:该函数设置指定窗口的显示状态。
(4)UpdateWindow函数原型是:BOOL UpdateWindow( HWND hWnd );函数功能是:它先判断客户区是否为空,不空UpdateWindow 不执行,为空才执行重画。
(5)GetMessage函数原型是:BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax );函数功能是:该函数从调用线程的消息队列里取得一个消息并将其放于指定的结构。
此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。
此函数接收一定范围的消息值。
GetMessage不接收属于其他线程或应用程序的消息。
(6)TranslateMessage函数原型是:BOOL TranslateMessage(CONST MSG *lpMsg );函数功能是:该函数将虚拟键消息转换为字符消息,(Windows 对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得到字符消息,需要键盘映射转换为字符的消息),字符消息被函数DispatchMessage() 函数寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage() 或PeekMessage() 时被读出。