程序方法学设计论文.docx
- 文档编号:11983112
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:16
- 大小:173KB
程序方法学设计论文.docx
《程序方法学设计论文.docx》由会员分享,可在线阅读,更多相关《程序方法学设计论文.docx(16页珍藏版)》请在冰豆网上搜索。
程序方法学设计论文
通讯录的设计
前言
在《程序设计方法学》这门课即将结束时,我仅代表个人对任纪生老师表示衷心的感谢。
谢谢任老师在这个学期之中对我的栽培和教育,是任老师让我明白了很多知识和道理。
从任老师的课上,我觉得收获颇丰的是以下几点:
1、作为一个程序员要有一定的严谨性,任老师在四次试验中将“严谨”二字诠释的淋漓尽致。
2、对自己以后负责,对自己未来负责。
从大学以来,我很少听到老师对同学们进行思想的教育。
而任老师则不一样,他的苦口婆心,他的用心良苦给对我的影响很大。
3、知识的创新。
这个我在上过所有的选修课后,未曾思考过的问题。
本次课结束后任老师给大家布置的题目,就是根据自己的想法来完成一个软件。
用这个软件将自己的想法阐述给大家。
在我所做的这篇作业中主要也是根据任老师的讲课要求,把自己收益最深的来表达出来。
主要是一下两个模块来写的:
1、根据自己的想法写一个与《程序设计方法》学有关的程序,主要是熟练自己的C语言。
然后根据这个小小的C语言实验来对自己想法的扩充和完善,最后实现一个完整的,功能齐全的,比较人性化的通讯录。
并对这个想法给予一定的评价和解析。
2、课外知识的扩充。
次想法主要是体现了任老师交给我的创新思想。
用自己在课下自学的知识,做一个小的FLASH动画,这个动画不仅仅是一个FLASH座屏,而且具有一定的利用价值。
虽然软件很小,但是是自己亲手完成的。
模块一(扩展型)
(第一部分——基本)
1、想法的产生
现在的纸质通讯录不能满足人们的需求,需要建立一个方便快捷的电子版的通讯录,本程序运用C语言程序设计了一个通讯录。
通讯录的功能主要有添加信息、删除信息、修改信息以及查找功能,在相应的硬盘上面进行存盘以防止部分数据的丢失。
为了更加人性化使用通讯录,还在查找函数里面设计了分类查找—按姓名、工作、邮箱、地址、生日、手机号查找等功能,使用者可以输入自己想要操作的代码即可实现该功能的使用。
2、使用方法
使用方法简单,操作易行,运用选择界面对,学习过C语言的同学都会运行的一款软件,所以,使用方法在此说的较少。
3、实现过程的难处和出现的问题
这个程序的难点主要是在于对C语言的掌握程度。
主要运用的是结构体。
4、现将运行结果展示出来,让大家有更好的了解和认识
主菜单运行结果:
创建函数运行结果:
删除函数运行结果:
增加函数运行结果:
修改函数运行结果:
查找函数运行结果:
文件写入函数运行结果:
文件读出函数运行结果:
5、备注:
这个程序的代码见(张书伦_200848140219_附件)
(第二部分——扩展型)
1、新问题的提出:
针对第一部分所给的程序提出的问题和新的要求是:
第一部分的程序没有图形界面,不能很好的进行人机交互,而且对于一些非专业人士根本不可能使用,现在要求运行一个新的软件实现通讯录功能。
并且在第一部分的基础上进行完善、加工。
2、增加的功能
受到中国移动公司做出的飞信的启发,对该通讯录进行以下的修改;
添加:
主要是插入新的记录
删除:
删除记录
编辑:
主要是对数据库中已经有的内容进行修改等
保存:
对已经修改的数据进行修改
显示:
显示通讯录中的方式,是只显示姓名还是全部
增加短信群发功能
增强替换功能
增加查找后定位分组功能
增加联系时间有冲突提示功能
增加显示当月联系人生日列表
增加保存窗口位置功能
增加保存导出字段名功能
更新了手机归属地查询数据库
它具有漂亮时尚的外观,操作灵活方便,上手快。
异常丰富的联系人信息与海量的联系人记录,全方位快速查找,支持拼音首字母速查,丰富的窗口以便灵活查看记录的信息,以及独有的名片查看方式。
还有嵌入式的手机号码归属地查询,可以快捷地查询到此联系人手机的所在地。
强大的导入导出功能可以快速的导入Excel文件及CSV文件,轻松完成信息的录入。
本软件还有一项实用的功能就是图片链接及查看功能,使得记录可以图文并茂。
真正做到联系人资料的全面性。
新增日记本功能。
通讯录是各界人士必备的信息管理与交流工具。
新增短信群发功能满足商务需求。
3、设想的产品特点
多种信息:
提供了很详细的通讯资料,可以管理记录的各种信息。
安全性:
您可以创建一个帐号。
当创建后则必须输入用户名和密码才能使用本软件。
可靠性:
通讯录的稳定工作为您的数据提供可靠保障。
同时,它也提供了备份/恢复以及各种导入/导出方案使得您的信息可以被以各种方式存储。
个性化:
通讯录为您提供各种亮丽的皮肤,您可以任意选择一款自己喜欢的
简单易用:
通讯录非常易于使用,操作非常人性化。
附加的工具:
通讯录提供了捕捉屏幕,和查询手机归属地等功能。
快速简便的查找:
通讯录能快速简便的找到您想要的。
只要输入一个查找内容,您将立刻得到结果的列表。
支持全部字段的查找。
全新的界面:
多种漂亮的界面。
4、适用对象
产品适合学生、教师、大多数中小型工业企业的信息管理。
5、在实现过程中难点:
实现过程是这个设计的难点和重点,改进后的通讯录多了很多的功能,比如说:
数据库的增加和调用,图片的使用及其设计一个时间界面,
模块二(创新型)
这个模块主要是根据任老师最后一节课的创新要求所写增加的额外软件,它主要是一个小型的闹钟和日期程序。
能和第一部分联系起来。
完成这个模块需要掌握最基本得FLASH和ActionScript脚本语言,具体的设计结果见同一压缩包中的.SWF文件。
下面就这个程序进行进一步讲解:
1、准备素材。
首先先做好需要的素材:
时针、分针、秒针、按钮若干,闹钟图案一个。
2、定义时间状态:
定义两个动态文本框,用来标识星期。
在下面的是六行六列的动态文本框,用来显示日期。
七定义的变量名字为
Date_1_0
date_1_1
date_1_2
date_1_3
date_1_4
date_1_5
date_1_6
Date_2_0
date_2_1
date_2_2
date_2_3
date_2_4
date_2_5
date_2_6
Date_3_0
date_3_1
date_3_2
date_3_3
date_3_4
date_3_5
date_3_6
Date_4_0
date_4_1
date_4_2
date_4_3
date_4_4
date_4_5
date_4_6
Date_5_0
date_5_1
date_5_2
date_5_3
date_5_4
date_5_5
date_5_6
Date_6_0
date_6_1
date_6_2
date_6_3
date_6_4
date_6_50
date_6_6
对动态文本框定义实例名分别是:
date_hour_txtdate_minute_txtdate_second_txt
为指针定义的实例名:
hour_hand_mcminute_hand_mcsecond_hand_mc
3、编写程序实现时间和日期
在第一帧设置:
importflash.events.Event;
//初始化几个变量,分别表示是否已经定了闹钟,以及闹钟的小时和分钟
varalertEnable:
Boolean;
varalertHourSET:
Number;
varalertMinuteSET:
Number;
this.gotoAndStop
(2);
在第二帧设置:
stop();
varonClick:
Function=function(evt:
Event){
if(evt.target.name=="date_btn"){
//如果单击的是date_btn,那么跳转到date状态,第2帧
gotoAndStop
(2);
}elseif(evt.target.name=="time_btn"){
//如果单击的是time_btn,那么跳转到time状态,第3帧
gotoAndStop(3);
}
};
this.date_btn.addEventListener(MouseEvent.CLICK,onClick);
this.time_btn.addEventListener(MouseEvent.CLICK,onClick);
第三帧设置:
stop();
(1)、设置日期程序:
第一帧:
//计算一个月内的天数
varnewDate:
Date=newDate();
vartext_year:
String="年";
vartext_month:
String="月";
//顶部的年和月
date_year_full_txt.text=newDate.getFullYear()+text_year;
date_month_full_txt.text=newDate.getMonth()+1+text_month;
//获取本地的日期
vardate_year:
Number=newDate.getFullYear();
vardate_month:
Number=newDate.getMonth()+1;
vardate_today:
Number=newDate.getDate();
vardate_day:
Number=newDate.getDay();
//计算一个月内的天数,这里要注意是否闰月
vardayNum_in_month:
Array=[31,28,31,30,31,30,31,31,30,31,30,31];
varisleapyear:
Number=date_year%4;
if(isleapyear==0){
dayNum_in_month[1]="29";
}
//当前月的天数
varmonth_alldays:
Number=dayNum_in_month[date_month-1];
//计算行数
varline_top:
Number;
varline_bot:
Number;
if((date_today-date_day+1)%7!
=0){
//line_top表示当前日期上面的行数,包括当前行
line_top=Math.floor((date_today-date_day+1)/7)+1;
}else{
line_top=Math.floor((date_today-date_day+1)/7);
}
if((30-date_today+date_day+1)%7!
=0){
//line_bot表示当前日期下面的行数,不包括当前行
line_bot=Math.floor((30-date_today+date_day+1)%7)+1;
}else{
line_bot=Math.floor((30-date_today+date_day+1)%7);
}
for(vari:
int=1;i<7;i++){
//i就是行数
for(varj:
int=0;j<7;j++){
//j就是列数
this["date_"+i+"_"+j].text=date_today-7*(line_top-i+1)+j-date_day;
this["date_"+i+"_"+j].opaqueBackground=null;
//当前日期的设置,包括改变文本的颜色以突出显示
if(i==line_top+1&&j==date_day){
this["date_"+i+"_"+j].opaqueBackground=0x014E82;
}
//如果值大于当月总天数,那么文本框不显示值
if((date_today-7*(line_top-i+1)+j-date_day)>month_alldays){
this["date_"+i+"_"+j].text="";
}
//如果值小于0,那么文本框不显示值
if((date_today-7*(line_top-i+1)+j-date_day)<=0){
this["date_"+i+"_"+j].text="";
}
}
}
第二帧设置:
this.gotoAndPlay
(1);
(2)、设置时间程序:
第一帧设置:
varnewsecond:
Date=newDate();
varnewminute:
Date=newDate();
varnewhour:
Date=newDate();
vardate_second:
Number=newsecond.getSeconds();
vardate_minute:
Number=newhour.getMinutes();
vardate_hour:
Number=newhour.getHours();
second_hand_mc.rotation=Number(date_second)*6;
minute_hand_mc.rotation=(Number(date_minute)+Number((date_second/60)))*6;
hour_hand_mc.rotation=(Number(date_hour)+Number((date_minute/60)))*(360/12);
第二帧设置:
this.gotoAndPlay
(1);
另外一个很重要的地方就是定时设置:
第一帧设置:
importflash.events.MouseEvent;
stop();
//为闹钟时间显示文本框赋初始值
//注意这里as运算符的使用
//因为显示列表中parent.parent是DisplayObjectContainer对象
//所以,要转换为MovieClip才行,下面的计算都要用到as运算符
hourSeted_txt.text=(parent.parentasMovieClip).alertHourSET.toString();
minuteSeted_txt.text=(parent.parentasMovieClip).alertMinuteSET.toString();
if((parent.parentasMovieClip).alertEnable){
//如果已经定了闹钟,那么就跳到第2帧,显示已经定了闹钟
//否则就是第1帧,表示没有定闹钟
alert_sign.gotoAndStop
(2);
}
//下面定义一个间隔执行函数,目的是检测当前时间是否到了闹钟设置的地方
//如果到了,就跳转到第4帧开始播放动画,并且发出声音
varalerting:
Function=function(){
vardate_hour:
Number=(parentasMovieClip).clock_plate_mc.date_hour;
vardate_minute:
Number=(parentasMovieClip).clock_plate_mc.date_minute;
varalertHourSET:
Number=(parent.parentasMovieClip).alertHourSET;
varalertMinuteSET:
Number=(parent.parentasMovieClip).alertMinuteSET;
if(alertHourSET==date_hour&&alertMinuteSET==date_minute){
gotoAndPlay(4);
}
}
setInterval(alerting,1000);
//响应事件
varonClick:
Function=function(evt:
MouseEvent):
void{
varalertHour:
Number;
varalertMinute:
Number;
if(evt.target.name=="setAlert_btn"){
//要定闹钟
(parent.parentasMovieClip).alertEnable=false;
gotoAndPlay
(2);
}elseif(evt.target.name=="ok_btn"){
//设置闹钟定的值
(parent.parentasMovieClip).alertEnable=true;
(parent.parentasMovieClip).alertHourSET=Number(alertHour_txt.text);
(parent.parentasMovieClip).alertMinuteSET=Number(alertMinute_txt.text);
hourSeted_txt.text=alertHour_txt.text;
minuteSeted_txt.text=alertMinute_txt.text;
}elseif(evt.target.name=="alertHourUp_btn"){
//增加小时时间,小时数不能超过24
alertHour=Number(alertHour_txt.text);
if(alertHour<24){
alertHour+=1;
}
alertHour_txt.text=alertHour.toString();
}elseif(evt.target.name=="alertHourDown_btn"){
//减少小时时间,小时数不能小于0
alertHour=Number(alertHour_txt.text);
if(alertHour>0){
alertHour-=1;
}
alertHour_txt.text=alertHour.toString();
}elseif(evt.target.name=="alertMinuteUp_btn"){
//增加分钟,分钟数不能大于59
alertMinute=Number(alertMinute_txt.text);
if(alertMinute<59){
alertMinute+=1;
}
alertMinute_txt.text=alertMinute.toString();
}elseif(evt.target.name=="alertMinuteDown_btn"){
//减少分钟,分钟数不能小于0
alertMinute=Number(alertMinute_txt.text);
if(alertMinute>0){
alertMinute-=1;
}
alertMinute_txt.text=alertMinute.toString();
}
};
this.setAlert_btn.addEventListener("click",onClick);
第二帧设置:
this.ok_btn.addEventListener("click",onClick);
this.alertHourUp_btn.addEventListener("click",onClick);
this.alertHourDown_btn.addEventListener("click",onClick);
this.alertMinuteUp_btn.addEventListener("click",onClick);
this.alertMinuteDown_btn.addEventListener("click",onClick);
第三帧和第四帧都是:
this.gotoAndPlay
(2);
4、使用方法:
日期界面。
单击
按钮后后进入以下界面
未定时界面
定时界面
(这个软件在同一压缩包中)
课程总结
在上任老师的《程序方法设计》课之后,我学到了很多东西。
学会了不仅仅是如何去程序,更重要的是如何去对待一个程序。
拿第三次实验和第四次实验来说,虽然两次实验的内容是一样的,但是却可以通过不同的,在平时的学习中,知道有些同学竟然花费二十个小时去调试一个程序,这个是我所没有办到过的,那位同学执着的精神很值得我去学习。
通过这门课我最重要的是体会到了创新的含义。
在以后的生活和学习中要经常问自己几个为什么,用不同的途径去解决一个问题,用不同的角度去看待同一个问题。
这样才能使自己的创新意识和能力在潜移默化中得到提高。
如果个人给自己打分满分是十分的话,我觉得自己应该得:
8分。
请任老师给明鉴。
谢谢您任老师。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 方法 设计 论文