通讯录系统通讯录系统 绪 论1.1课题简介通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对通讯录进行管理...
绪 论
1.1课
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
简介
通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。
随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。
1.2开发的意义
计算机已经成为我们学习和工作的得力助手,使用其可方便的管理通讯录
今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域。
现在我国的通讯录管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
我作为一个计算机应用专业的毕业生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我所学的知识编制出一个实用的程序来帮助用户进行财务管理。
开发这一系统的好处大约有以下几点:
第一、可以存储大量的通讯录信息,安全、高效;
第二、只需一档案录入员即可操作系统,节省人力;
第三、可以迅速查到所需通讯录信息。
为将来用户上网做好准备
开发环境及实现技术
2.1开发环境
硬件系统:奔腾100以上CPU、64M以上内存、1G以上硬盘、光驱。
软件系统:Windows 9x或更高版本、Visual Basic 6.0中文版、Access数据库。
2.2开发工具简介
微软公司的Visual Basic 6.0是Windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统VB是一个相对较好的选择。
Access2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。
微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及Visual Basic 来访问数据库并对其进行各种操作。Visual Basic、Access以及其他微软的软件产品都是通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。
DATA 控件在数据库中的信息与将信息显示给用户看的Visual Basic程序之间架起了一座桥梁。我们可以设置DATA控件的各个属性,告诉它要调用那个数据库的哪个部分。缺省情况下,DATA控件根据数据库中的一个或多个数据表建立一个dynaset-type(动态集合)类型的记录集合。一个记录集合是动态的也就意味着,当原来的数据表中的容改变了以后,该记录集合中的记录也会随之改变。DATA控件还提供了用来浏览不同记录的各种跳转按钮。将DATA控件放置在窗体中之后,我们还必须在该控件与要处理的数据库之间建立联系。
第三章 系统设计
3.1概要设计
3.1.1概要设计阶段的主要任务
①系统分析员审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供指导教师审定,审定后进入设计。
②确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。
③ 编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。
3.1.2概要设计的过程
概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。
3.1.3概要设计的原则
①将软件划分成若干独立成分的依据。
②如何表示不同的成分内的功能细节和数据结构。
③如何统一衡量软件设计的技术质量。
摘要:本文针对困扰“数据结构”课程教与学的几个问题,作者根据自己的认识和多年的实际教学经验,进行深入浅出的分析和论述,以其对提高课程的认识和兴趣、牢固掌握课程知识及其灵活运用、提高利用计算机解决问题的能力具有很好的指导作用。
数据结构的内容一般包括三部分内容:三种基本数据结构、最常用和最重要的操作(查找、分类)、典型应用。
4.1基本数据结构
有些教科书把数据结构分为四种[3],即把集合也列为一种基本数据结构,笔者认为是不合适的。因为数据结构是数据元素及元素之间关系的合称,集合中数据元素之间没有关系,因此它不应该算是一种数据结构。
三种基本数据结构按照“抽象—实现”的线路进行课程内容的组织和讲授。包括三大部分。(1)抽象数据类型的定义。包括数据结构(即数据及其逻辑特性)、定义的操作。(2)抽象数据类型的实现。包括数据结构的实现(即存储结构)、操作的实现(算法设计)。(3)典型应用举例,利用实现的抽象数据类型解决现实应用中的问题。
4.1.1线性数据结构
线性数据结构是简单但是重要的数据结构,在数据结构中都占有很大的内容篇幅。在教授和学习中必须抓住共同点、侧重点。线性数据结构的共同点是元素之间都是具有线性关系,因一些特殊性产生了一些特殊的线性数据结构。
(1) 一般线性表:数据元素、操作都没有任何特殊限制。
(2) 栈和队列:数据元素无特殊限制,但是插入、删除操作限制在两端进行。这样,这两种线性数据结构就具有了“先进先出”、“先进后出”的操作特征,具有非常重要的应用价值。
(3) 字符串:数据元素限制为字符集,操作没有限制。但是由于元素的限制,使得操作时的操作对象不再是简单的单个元素,而通常是连续的一组元素(子串),这样使得一些操作的算法不同于其他类似操作,如模式匹配。
(4) 广义表:数据元素特殊,不再仅仅是单元素,还可以是线性表,即可以嵌套。这样存储、操作都要复杂了。
(5) 数组:特殊在元素可以参与多个线性关系。如果元素只参与一个线性关系就是一维数组,它和一般的线性表相同。参与的线性关系的个数就是数组的维数。由于数组数据结构中元素参与多个线性关系,数组上定义的操作很少,实现时一般都是采用顺序存储结构。有些书上说数组不是线性数据结构,笔者认为是不正确的。
4.1.2二叉树结构
树结构的重点是二叉树数据结构。它有一些重要的性质,同时,由于逻辑结构复杂了,用顺序存储结构存储就变困难,即用物理上的相邻来存储层次
摘要:本文讨论了C语言教学方法及若干程序设计技巧。
关键词
本文来自:计算机毕业网 :C语言;教学方法;程序设计
C语言是目前国内理工科专业的首选教学语言,它功能强大,表达灵活方便,面向硬件,但学生接受起来有一定的难度。如何提高教学质量,让学生尽快掌握这门语言,值得探讨。下面根据笔者多年来的教学体会,谈谈自己的想法。
1 研究教学方法,提高教学水平
首先要培养学生的学习兴趣。教师要在教学方法与手段上多下功夫,加强对学生的引导,在讲清语法规则的基础上,可通过许多具体有趣的实例,如“兔子问题”、“水仙花数”、“竞赛记分”等来激发学生的学习主动性与积极性,综合利用板书、
课件
超市陈列培训课件免费下载搭石ppt课件免费下载公安保密教育课件下载病媒生物防治课件 可下载高中数学必修四课件打包下载
、程序演示等手段,做好师生互动,使学生加强理解和记忆。
教学过程上要讲究循序渐进。教师要在充分备课的基础上,吃透教学内容,对课程的重难点胸中有数,重视层次性和条理性,既注意教学内容本身的系统性和科学性,又要注意通俗性、可接受性和启发性,由浅到深,由表及里,环环相扣,真正做到精选精讲,授课时突出解题思路、方法和步骤,使学生掌握如何分析和解决问题,逐渐培养学生进行程序设计的正确思维模式。
要特别重视培养学生的实践动手能力。学好一门语言除了理解语法规则和掌握算法思想外,最重要的就是多编程、多上机、多调试。任务驱动下的协作学习是学习C语言课程的好方法,教师要在教学实践中为学生创造协作学习的环境,及时发现问题并予以指导。除正常的上机实验课外,可通过布置大作业及安排实习周的模式,来强化对学生的训练。
最后,要作好课外辅导。建立C语言学习网站,包括课程内容、习题解答、实验指导、在线测试、网上答疑等,充分发挥学生的主观能动性,充分利用计算机网络为教学服务,进一步提高教学质量。
2 关于C语言程序设计中值得注意的若干问题
2.1 几个易出错的问题
(1)++ i和i++的区别:++ i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1。如:i=3,printf(″%d″, + + i)输出值为4;若用printf(″%d″,i + +),则输出值为3。“- -”与此类似。
(2)对逻辑与&&,如果第一个操作数的值为0,则第二个操作数就不再被计值;而对逻辑或||,如果第一个操作数为1,则第二个操作数不再被计值。
例如下述的程序段写法有问题:
if(a>3 &&b = = (c=5*3))
a=c;
else a=c+1;
其目的是当a大于3而且b与c的值(5×3)相等时,把c值赋给a。但实际上当a不大于3时,第二个表达式(c=5*3)不再被计值,所以c的值并不等于15(因为没有运算5*3并赋值给c),从而a=c+1的结果就不正确。在编程中遇到这类问题,应把必须参加运算的表达式写在前面。因而上例应改写成:
if(b = = (c = 5 * 3)&& a>3)……
再如:int x=5, y=0, z=6, i;
i=x-3 | | + + y | | z*5;
printf("i=%d, y=%d, z=%d",i, y, z);
其结果是i=1, y=0, z=6,而不是i=1, y=1, z=30。理由很简单,由于x-3非零值,即可得出i结果1(真),不再继续判断y和z*5的值。
(3)比较两数是否相等用“= =”,而不是“=”,因为后者是赋值运算符。但比较两字符串是否相等,则用库函数“strcmp(char *, char * )”,而不能用“= =”。
(4)库函数getchar使用中应注意的问题。请看下面的一个例子:
# include
main( )
{
int ch;
int year;
do {
printf("please input year: \ n");
scanf("%d", &year);
if(year%4 = = 0 && year% 100! =0 || year% 400 = = 0)
printf("YES %d \ n",year);
else
printf("NO%d\n", year);
printf("Y-continue, any key - -
exit \ n");
error:ch=getchar ( ) ;
} while (ch = = `Y`|| ch = =`Y`);
}
上面程序其本意是,当输入完年份后,按“Y”或“y”继续,其实做不到,因为每输入一个数还须按一下回车,为了去掉这个回车,须再加一个getchar()语句。将标号为error的语句改为getchar(),ch=getchar();就可以了。
(5)关于文件读写语句,fread函数和fwrite函数一般只适宜于读写数据块,尤其是读写结构体变量最为合适,而对文本文件的读写用fscanf函数和fprintf函数最方便。另外,对文件的读写应注意文件指针的位置。如下例,要求从键盘中输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中,再从该文件中读入这些数据,将其小写转换成大写字母在显示屏上输出。
# include"stdio.h"
main( )
{
char c;
FILE* fp;
it((fp=fopen("c:czmt", "w+")) = = NULL)
{ printf("\ ncan`t open file");
exit(0);}
while((c=getchar())! =EOF)
fputc(c,fp);
linel: while((c = fgetc(fp))! =EOF)
{ if(c>=`a`&&c< =`z`) c=c -32;
putchar(c);}
fclose(fp);
}
上面程序达不到要求的效果。原因在于执行完"fputc(c,fp);"后,文件指针已不在开始位置,应用rewind函数使文件指针重新回到文件开头,在标号为linel语句前加上一句"rewind(fp);"就可以了。
2.2 递归和指针
C语言中,递归的应用比较灵活,如下面的例子,将一个整数n转换成字符串,例如,输入483,应输出字符串“483”,n位数不确定,可以是任意位数的整数。用递归法编制的程序如下:
include"stdio.h"
void change(m)
int m;
{int k= m%10;
if(m/10) m = m/10, change(m);
printf("%d",k);
}
main()
{ int i;
printf("\ nplease input a number \ n");
scanf("%d", &i);
if(i<0)i=-i, printf("-");
change(i);
}
指针是C语言中最灵活、最复杂且最重要的类型,将指针、函数、数组与运算符结合时,经常使一些说明语句变得很复杂,使人难以理解。例如:int(* p)[],由于加括号后*号的优先级最高,故应读做:指向整型数组的指针;而int* p[ ]由于[]比*的优先级高,则应读做指向整数型的指针数组。同理,对int* p()[],函数圆括号()与[]的优先级相同,但由于它出现在方括号前面,因此,它的优先级高些,故读做返回整型指针数组(首地址)的函数。
3 灵活应用C语言编制程序
对同一个问题可以多种方法实现,如下面的例子,在A盘上有一个数据文件js.dat,文件中有10个整数为:3 8 17 28 39 44 56 73 80 95,编程从js.dat中取出这10个数,将其中的素数输出到文件A:js.out中,要求求素数过程必须用子函数prime( )。我们可用3种方法实现,一是函数不设返回值,main函数和prime函数都对同一个数组操作;二是每次只返回一个值,多次调用prime函数;还有一种方法就是,函数的返回值设为指针(数组的首地址),调用一次prime函数即可。程序分别如下:
/* filel.c* /
#include"stdio.h"
# include"math.h"
void prime( );
int a[10];
main( )
{
FILE* fp, * fpl;
int i;
if((fp=fopen("a:js.dat","r")) = = NULL)
{printf(" \ n can`t open file");
exit(0);}
for (i=0;i< = 9; i + +)
fscanf(fp, "%d", &a[i]);
if ((fpl=fopen("a:js.out", "w")) = = NULL)
{
printf(" \ n can`t write file");
exit(0); }
prime(a);
for(i=0;a[i]! =0&&i< = 9; i + +)
fprintf(fpl, "%d", a[i]);
fclose(fp), fclose(fpl);
}
void prime(a)
int a[ ];
{
int i,j,k,m=0;
for(i=0;i<=9;i+ +)
{
k=sqrt(a[i]);
for(j=2;j<=k;j + + )
{if(a[i]%j = =0)break;}
if(j>k) a[m + + ] = a[i];
}
for(;m< =9;m + + )
a[m] = 0 ;
return;
}/* end* /
/ * file2. c* /
# include < stdio.h >
# include < math.h >
main()
{
int a[10], b, i;
FILE* fp, * fpl;
if((fp=fopen("A:js.dat", "r"))= = NULL)
{ printf("can`t open a:js. dat \ n");
exit(1);}
if ((fpl=fopen("A:js. out", "w"))= = NULL)
{ printf("can`t open a:js. out \ n");
exit(1);}
for(i=0;i<= 9;i+ +)
fscanf(fp, "%d", &a[i]);
for(i=0;i< =9; i + +)
{b=prime(a[i]);
if(b! =0)
fprintf(fpl, "%d\ n",b); }
fclose(fp), fclose(fpl);
}
int prime(a)
int a;
{
int k, t, b;
k=sqrt(a);
for(t=2;t< =k; t+ +)
if ((a%t)= = 0)break;
if(t>k)return(a);
else retun (0);
}/* end* /
/* file3.c* /
# include
# include
int* prime();
main()
{
int i;
static int a[10];
int* b;
FILE* fp, * fpl;
if((fp=fopen("A:js.dat","r")) = = NULL)
{ printf("can`t open a:js. dat \ n");
exit(1);}
if ((fpl=fopen("A:js.out","w")) = =NULL)
{printf(
党的“十六大”明确指出:我国职业教育的根本任务,就是培养适应现代化建设需要的高技能专门人才和高素质劳动者。同时,《国务院关于大力发展职业教育的决定》中明确指出:落实科学发展观,把发展职业教育作为经济发展的重要基础和教育工作的战略重点。这标志着我国对职业教育的重视达到了前所未有的高度。
纵观当今世界,美国、英国、德国等现代化工业国家和所有经济发达国家,都是依靠大力发展职业教育发展起来的。这些国家的成功经验告诉我们:未来经济无论怎样发达,社会所需的人才,多数是高素质的中等和高等职业技术人才。在以信息化带动工业化、以工业化促进信息化、加快IT产业发展的过程中,职业教育特别是IT职业教育将起到关键性的支撑保障作用。相关统计数据表明,我国对IT人才的需求以每年百分之三、四十的速度增加,每年新增需求近百万人。
但IT职业教育仍然是我国教育事业的薄弱环节,发展不平衡,投入不足,办学条件比较差,办学机制以及人才培养的规模、结构、质量还不能适应经济社会发展的需要,需要在理论和实践的基础上探索建立适合中国国情的现代职业教育之路。本文从IT职业教育与标准应用的结合上,谈谈对在工T职业教育引入标准知识的一些思考。
1 IT职业教育具有标准化特征
我们认为,IT职业教育本身的标准化特征使其与标准产生了密不可分的关系。IT职业教育是面向社会上一个通用的岗位任职要求来进行的,即按照职业培养人才。而职业要求、从业人员的岗位技能要求、经验要求、知识要求和职业态度要求,等等,都是以明确的国家职业标准来规定的,比如:某个岗位需要用什么样的工具,进行什么样的操作,要达到一个什么样的结果。客观上具有一定的标准特征,从某种意义上说,IT职业教育本身就是一个带有较高程度的标准化要求的教育过程。
其次,IT职业教育的培养目标明确了其标准化的趋势。对于教育者来说,IT职业教育不同于传统教育中的个性化人才培养,IT职业教育所要培养的是大量具有相同技能的工程化人才,比如:软件蓝领的编程人员就类似传统行业中的钳工、电工等技术人才,带有标准化的特征。只有标准化的教育课程才可以保证这些人才基本上处于一个相同的水平。
另外,对IT职业教育机构来说,也需要有一套完整的“工业化”人才教育体系,即标准化职业,应包括标准化的教材、标准化的授课方法、标准化的教师认证和标准化的管理体系、就业推荐体系、考试认证体系。通过这种相对不依赖于人的、流水线式的标准化的教育体系,将能让更多的老师胜任于这种教学工作,逐步摆脱受制于现有教师队伍在技能更新、实践经验、教育理念、教学方法等方面的限制。
2 IT职业教育与标准化技术的结合
IT职业教育和标准化技术在我国社会发展和经济建设中都发挥着各自特殊的重要作用。这种教育层面的结合,对标准的发展也将产生积极影响。我们知道,标准已经成为各个国家科技发展战略的重要组成部分,代表着技术发展的潮流,同时也是企业强有力的竞争武器。对标准而言,标准的价值在于推广应用。在IT职业教育中引入标准,逐步建立起优势互补、布局合理、功能完善的多层次技术标准人才培养体系,形成技术标准师资队伍、研究队伍、检测队伍、应用队伍和咨询服务队伍等标准专业人才队伍。开展普及技术标准基础知识教育,借助院校资源优势培育一批标准化的技术人才,培养大批熟悉国际技术贸易规则,了解我国技术标准体系,专业精通的复合型技术标准人才,将极大促进标准知识的传播,提高专业技术人员的技术标准知识水平和技术标准化意识,推动企业标准化应用水平和标准人才队伍建立。这种合作模式,将为双方实现双赢、共同繁荣探索一条新路。
3 IT职业教育与标准化技术结合的实践
天津职业大学和中国电子技术标准化研究所正是这一合作模式的首批实践者。鉴于天津职业大学是一所从事高等职业教育的全日制普通高等学校,是国家示范性高等职业院校建设计划首批院校之一,而中国电子技术标准化研究所是信息产业部直属的电子信息技术综合性技术基础研究所,是一个能够开展完整标准化活动的科研机构。因此,双方利用各自的资源优势成立了“高等职业教育电子技术标准化人才培养研究中心”,就高等职业教育电子技术标准化专门人才培养开展研究,目前正在探索如何将标准技术融入专业教学计划中,使学生在校期间就学习到标准技术知识,以及开发融入标准的职业资格认证项目,在教学中试点等一系列工作。我们相信双方的合作将实现高等职业教育与标准技术的双赢、互动,所带来的聚合效应将为我国IT职业教育带来一个新的亮点。
第1章 概 述