程序方法学设计论文Word下载.docx
《程序方法学设计论文Word下载.docx》由会员分享,可在线阅读,更多相关《程序方法学设计论文Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
![程序方法学设计论文Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/6ab69945-0128-4883-a1cc-13934a68f07e/6ab69945-0128-4883-a1cc-13934a68f07e1.gif)
删除函数运行结果:
增加函数运行结果:
修改函数运行结果:
查找函数运行结果:
文件写入函数运行结果:
文件读出函数运行结果:
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:
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);
第三帧设置:
(1)、设置日期程序:
第一帧:
//计算一个月内的天数
varnewDate:
Date=newDate();
vartext_year:
String="
年"
;
vartext_month:
月"
//顶部的年和月
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:
varline_bot:
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!
//line_bot表示当前日期下面的行数,不包括当前行
line_bot=Math.floor((30-date_today+date_day+1)%7)+1;
line_bot=Math.floor((30-date_today+date_day+1)%7);
for(vari:
int=1;
i<
7;
i++){
//i就是行数
for(varj:
int=0;
j<
j++){
//j就是列数
this["
date_"
+i+"
_"
+j].text=date_today-7*(line_top-i+1)+j-date_day;
+j].opaqueBackground=null;
//当前日期的设置,包括改变文本的颜色以突出显示
if(i==line_top+1&
&
j==date_day){
this["
+j].opaqueBackground=0x014E82;
}
//如果值大于当月总天数,那么文本框不显示值
if((date_today-7*(line_top-i+1)+j-date_day)>
month_alldays){
+j].text="
"
//如果值小于0,那么文本框不显示值
if((date_today-7*(line_top-i+1)+j-date_day)<
=0){
第二帧设置:
this.gotoAndPlay
(1);
(2)、设置时间程序:
第一帧设置:
varnewsecond:
varnewminute:
varnewhour:
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);
另外一个很重要的地方就是定时设置:
importflash.events.MouseEvent;
//为闹钟时间显示文本框赋初始值
//注意这里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);
//响应事件
MouseEvent):
void{
varalertHour:
varalertMinute:
setAlert_btn"
){
//要定闹钟
(parent.parentasMovieClip).alertEnable=false;
gotoAndPlay
(2);
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;
alertHourUp_btn"
//增加小时时间,小时数不能超过24
alertHour=Number(alertHour_txt.text);
if(alertHour<
24){
alertHour+=1;
alertHour_txt.text=alertHour.toString();
alertHourDown_btn"
//减少小时时间,小时数不能小于0
if(alertHour>
0){
alertHour-=1;
alertMinuteUp_btn"
//增加分钟,分钟数不能大于59
alertMinute=Number(alertMinute_txt.text);
if(alertMinute<
59){
alertMinute+=1;
alertMinute_txt.text=alertMinute.toString();
alertMinuteDown_btn"
//减少分钟,分钟数不能小于0
if(alertMinute>
alertMinute-=1;
this.setAlert_btn.addEventListener("
click"
onClick);
this.ok_btn.addEventListener("
this.alertHourUp_btn.addEventListener("
this.alertHourDown_btn.addEventListener("
this.alertMinuteUp_btn.addEventListener("
this.alertMinuteDown_btn.addEventListener("
第三帧和第四帧都是:
this.gotoAndPlay
(2);
4、使用方法:
日期界面。
单击
按钮后后进入以下界面
未定时界面
定时界面
(这个软件在同一压缩包中)
课程总结
在上任老师的《程序方法设计》课之后,我学到了很多东西。
学会了不仅仅是如何去程序,更重要的是如何去对待一个程序。
拿第三次实验和第四次实验来说,虽然两次实验的内容是一样的,但是却可以通过不同的,在平时的学习中,知道有些同学竟然花费二十个小时去调试一个程序,这个是我所没有办到过的,那位同学执着的精神很值得我去学习。
通过这门课我最重要的是体会到了创新的含义。
在以后的生活和学习中要经常问自己几个为什么,用不同的途径去解决一个问题,用不同的角度去看待同一个问题。
这样才能使自己的创新意识和能力在潜移默化中得到提高。
如果个人给自己打分满分是十分的话,我觉得自己应该得:
8分。
请任老师给明鉴。
谢谢您任老师。