#include <stdioh>
#include <stdlibh>
#include <stringh>
#include <conioh>
struct record
{
char id[10];
char name[20];
char phone[20];
char adress[40];
char postcode[10];
char e_mail[30];
}student[500];
int num=0;//外部变量num为文件中的纪录数
FILE fp;
void mainmenu();//主菜单
void newrecord();//新添纪录
void searchmenu();//查询菜单
void searchbyid();//按学号查询
void searchbyname();//按姓名查询
void searchbyphone();//按电话查询
void deletemenu();//删除菜单
void deleteall();//删除所有
void deleteone();//删除单个
void showall();//显示所有
void readfromfile();//读取文件
void writetofile();//写入文件
void deletebyid();//按学号删除
void deletebyname();//按姓名删除
void main()
{
readfromfile();
while (1)
{
mainmenu();
}
}
void readfromfile()//从文件导入
{
if((fp=fopen("studentbin","rb"))==NULL)
{
printf("\n\t\t通讯录文件不存在");
if ((fp=fopen("studentbin","wb"))==NULL)
{
printf("\n\t\t建立失败");
exit(0);
}
else
{
printf("\n\t\t通讯录文件已建立");
printf("\n\t\t按任意键进入主菜单");
getch();
return;
}
exit(0);
}
fseek(fp,0,2); /文件位置指针移动到文件末尾/
if (ftell(fp)>0) /文件不为空/
{
rewind(fp); /文件位置指针移动到文件开始位置/
for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);
printf("\n\t\t文件导入成功");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
printf("\n\t\t文件导入成功");
printf("\n\t\t通讯录文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
void mainmenu()//主菜单
{
char choic;
system("cls");
printf("\n\t\t 主菜单 ");
printf("\n\t\t 1-新添纪录 2-查询菜单 ");
printf("\n\t\t 3-删除菜单 ");
printf("\n\t\t 4-保存退出 5-不保存退出");
printf("\n\t\t");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':newrecord();break;
case '2':searchmenu();break;
case '3':deletemenu();break;
case '4':writetofile();break;
case '5':exit(0);
default:mainmenu();
}
}
void searchmenu()//查询菜单
{
char choic;
system("cls");
printf("\n\t\t 查询菜单 ");
printf("\n\t\t 1-显示所有 2-按学号查询 ");
printf("\n\t\t 3-按姓名查询4-按电话查询 ");
printf("\n\t\t 5-返回主菜单 ");
printf("\n\t\t");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':showall();break;
case '2':searchbyid();break;
case '3':searchbyname();break;
case '4':searchbyphone();break;
case '5':mainmenu();break;
}
}
void deletemenu()//删除菜单
{
char choic;
if(num==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
system("cls");
printf("\n\t\t 删除菜单 ");
printf("\n\t\t 1-删除所有 2-删除单个 ");
printf("\n\t\t 3-返回主菜单 ");
printf("\n\t\t");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':deleteall();break;
case '2':deleteone();break;
case '3':mainmenu();break;
default:mainmenu();break;
}
}
void deleteall()//删除所有
{
printf("\n\t\t确认删除(y/n)");
if (getch()=='y')
{
fclose(fp);
if ((fp=fopen("studentbin","wb"))==NULL)
{
printf("\n\t\t不能打开文件,删除失败");
readfromfile();
}
num=0;
printf("\n\t\t纪录已删除,按任意键返回主菜单");
getch();
return;
}
else
return;
}
void deletebyname()//按姓名删除
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\n\t\t请输入要删除学生姓名:");
scanf("%s",name);
for (i=a;i<num;i++)
{
if (strcmp(student[i]name,name)==NULL)
{
printf("\n\t\t以下是您要删除的学生纪录:");
findmark++;
printf("\n\t\t________________________________");
printf("\n\t\t学号: %s",student[i]id);
printf("\n\t\t姓名: %s",student[i]name);
printf("\n\t\t电话: %s",student[i]phone);
printf("\n\t\t地址: %s",student[i]adress);
printf("\n\t\te-mail:%s",student[i]e_mail);
printf("\n\t\t________________________________");
printf("\n\t\t是否删除(y/n)");
if (getch()=='y')
{
for (j=i;j<num-1;j++) /纪录移动,从stud数组中删除之/
student[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\t删除成功");
if((i+1)<num)
{
printf("\n\t\t是否继续删除相同姓名的同学信息(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
printf("\n\t\t是否继续删除(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf("\n\t\t是否继续删除相同姓名的同学信息(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\n\t\t没有该同学的纪录");
printf("\n\t\t是否继续删除(y/n)");
if (getch()=='y')
deletebyid();
return;
}
else if (findmark!=0)
{
printf("\n\t\t没有重名信息");
printf("\n\t\t没有该同学的纪录");
printf("\n\t\t是否继续删除(y/n)");
if (getch()=='y')
deletebyid();
return;
}
}
void deletebyid()//按学号删除
{
int i,j;
int deletemark=0;
char id[20];
printf("\n\t\t请输入要删除学生学号:");
scanf("%s",id);
if(num==0)
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
for (i=0;i<num;i++)
{
if (strcmp(student[i]id,id)==NULL)
{
printf("\n\t\t以下是您要删除的学生纪录:");
printf("\n\t\t学号: %s",student[i]id);
printf("\n\t\t姓名: %s",student[i]name);
printf("\n\t\t电话: %s",student[i]phone);
printf("\n\t\t地址: %s",student[i]adress);
printf("\n\t\te-mail:%s",student[i]e_mail);
printf("\n\t\t是否删除(y/n)");
if (getch()=='y')
{
for (j=i;j<num-1;j++) /纪录移动,从stud数组中删除之/
student[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\t删除成功");
printf("\n\t\t是否继续删除(y/n)");
if (getch()=='y')
deletebyid();
return;
}
else
return;
}
continue;
}
if (deletemark==0)
{
printf("\n\t\t没有该同学的纪录");
printf("\n\t\t是否继续删除(y/n)");
if (getch()=='y')
deletebyid();
return;
}
}
void newrecord()//添加纪录
{
printf("\n\t\t 请输入学生信息 \n");
printf("\n\t\t输入学号:");
scanf("%s",&student[num]id);
printf("\n\t\t输入姓名:");
scanf("%s",&student[num]name);
printf("\n\t\t输入电话号码:");
scanf("%s",&student[num]phone);
printf("\n\t\t输入地址:");
scanf("%s",&student[num]adress);
printf("\n\t\t输入邮编:");
scanf("%s",&student[num]postcode);
printf("\n\t\t输入e-mail:");
scanf("%s",&student[num]e_mail);
num++;
printf("\n\t\t是否继续添加(Y/N):");
if (getch()=='y')
newrecord();
return;
}
void showall()//显示所有
{
int i;
system("cls");
if(num!=0)
{
printf("\n\t\t 以下为通讯录所有信息");
for (i=0;i<num;i++)
{
printf("\n\t\t学号: %s",student[i]id);
printf("\n\t\t姓名: %s",student[i]name);
printf("\n\t\t电话: %s",student[i]phone);
printf("\n\t\t地址: %s",student[i]adress);
printf("\n\t\t邮编: %s",student[i]postcode);
printf("\n\t\te-mail:%s",student[i]e_mail);
printf("\t\t");
if (i+1<num)
{
printf("\n\t\t__________________________");
system("pause");
}
}
printf("\n\t\t");
}
else
printf("\n\t\t通讯录中无任何纪录");
printf("\n\t\t按任意键返回主菜单:");
getch();
return;
}
//按电话查询
void searchbyphone()
{
int mark=0;
int i;
char phone[10];
printf("\n\t\t 按电话查找 ");
printf("\n\t\t请输入学号:");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if (strcmp(student[i]phone,phone)==0)
{
printf("\n\t\t 以下是您查找的学生信息 ");
printf("\n\t\t学号: %s",student[i]id);
printf("\n\t\t姓名: %s",student[i]name);
printf("\n\t\t电话: %s",student[i]phone);
printf("\n\t\t地址: %s",student[i]adress);
printf("\n\t\te-mail:%s",student[i]e_mail);
printf("\n\t\t");
printf("\n\t\t按任意键返回主菜单:");
mark++;
getch();
return;
}
}
if (mark==0)
{
printf("\n\t\t没有改学生的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
void searchbyname()//按姓名查询
{
int mark=0;
int i;
int a=0;
char name[20];
printf("\n\t\t 按姓名查找 ");
printf("\n\t\t请输入姓名:");
scanf("%s",name);
for(i=a;i<num;i++)
{
if (strcmp(student[i]name,name)==0)
{
printf("\n\t\t 以下是您查找的学生信息 ");
printf("\n\t\t学号: %s",student[i]id);
printf("\n\t\t姓名: %s",student[i]name);
printf("\n\t\t电话: %s",student[i]phone);
printf("\n\t\t地址: %s",student[i]adress);
printf("\n\t\te-mail:%s",student[i]e_mail);
printf("\n\t\t");
mark++;
if ((i+1)<num)
{
printf("\n\t\t是否继续查找相同名字的学生信息:(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
else
return;
}
else
{
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
}
if(mark!=0)
{
printf("\n\t\t没有相同姓名的学生纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
else
{
printf("\n\t\t没有相同姓名的学生纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
void searchbyid()//按学号查询
{
int mark=0;
int i;
char id[10];
printf("\n\t\t 按学号查找 \n");
printf("\n\t\t请输入学号:");
scanf("%s",id);
for(i=0;i<num;i++)
{
if (strcmp(student[i]id,id)==0)
{
printf("\n\t\t 以下是您查找的学生信息 ");
printf("\n\t\t学号: %s",student[i]id);
printf("\n\t\t姓名: %s",student[i]name);
printf("\n\t\t电话: %s",student[i]phone);
printf("\n\t\t地址: %s",student[i]adress);
printf("\n\t\te-mail:%s",student[i]e_mail);
printf("\n\t\t");
printf("\n\t\t按任意键返回主菜单:");
mark++;
getch();
return;
}
}
if (mark==0)
{
printf("\n\t\t没有改学生的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
void writetofile()//写入文件
{
int i;
if ((fp=fopen("studentbin","wb"))==NULL)
{
printf("\n\t\t文件打开失败");
}
for (i=0;i<num;i++)
{
if (fwrite(&student[i],sizeof(struct record),1,fp)!=1)
{
printf("\n\t\t写入文件错误!\n");
}
}
fclose(fp);
printf("\n\t\t通讯录文件已保存");
printf("\n\t\t按任意键退出程序\n\t\t");
exit(0);
}
void deleteone()//删除单个
{
char choic;
printf("\n\t\t1-按学号删除 2-按姓名删除");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':deletebyid();break;
case '2':deletebyname();break;
}
}
程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。专业的程序设计人员常被称为程序员。
某种意义上,程序设计的出现甚至早于电子计算机的出现。英国著名诗人拜伦的女儿Ada Lovelace曾设计了巴贝奇分析机上解伯努利方程的一个程序。她甚至还建立了循环和子程序的概念。由于她在程序设计上的开创性工作,Ada Lovelace被称为世界上第一位程序员。
任何设计活动都是在各种约束条件和相互矛盾的需求之间寻求一种平衡,程序设计也不例外。在计算机技术发展的早期,由于机器资源比较昂贵,程序的时间和空间代价往往是设计关心的主要因素;随着硬件技术的飞速发展和软件规模的日益庞大,程序的结构、可维护性、复用性、可扩展性等因素日益重要。
另一方面,在计算机技术发展的早期,软件构造活动主要就是程序设计活动。但随着软件技术的发展,软件系统越来越复杂,逐渐分化出许多专用的软件系统,如 *** 作系统、数据库系统、应用服务器,而且这些专用的软件系统愈来愈成为普遍的计算环境的一部分。这种情况下软件构造活动的内容越来越丰富,不再只是程序设计活动了,还包括数据库设计、用户界面设计、接口设计、通信协议设计和复杂的系统配置过程。
程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。由于程序是软件的本体,软件的质量主要通过程序的质量来体现的,在软件研究中,程序设计的工作非常重要,内容涉及到有关的基本概念、工具、方法以及方法学等。
按照结构性质,有结构化程序设计与非结构化程序设计之分。前者是指具有结构性的程序设计方法与过程。它具有由基本结构构成复杂结构的层次性,后者反之。按照用户的要求,有过程式程序设计与非过程式程序设计之分。前者是指使用过程式程序设计语言的程序设计,后者指非过程式程序设计语言的程序设计。按照程序设计的成分性质,有顺序程序设计、并发程序设计、并行程序设计、分布式程序设计之分。按照程序设计风格,有逻辑式程序设计、函数式程序设计、对象式程序设计之分。
程序设计的基本概念有程序、数据、子程序、子例程、协同例程、模块以及顺序性、并发性、并行性、和分布性等。程序是程序设计中最为基本的概念,子程序和协同例程都是为了便于进行程序设计而建立的程序设计基本单位,顺序性、并发性、并行性和分布性反映程序的内在特性。
程序设计规范是进行程序设计的具体规定。程序设计是软件开发工作的重要部分,而软件开发是工程性的工作,所以要有规范。语言影响程序设计的功效以及软件的可靠性、易读性和易维护性。专用程序为软件人员提供合适的环境,便于进行程序设计工作。
计算机程序或者软件程序(通常简称程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语的人(体系结构)来做这个菜。 通常,计算机程序要经过编译和链接而成为一种人们不易理解而计算机理解的格式,然后运行。未经编译就可运行的程序通常称之为脚本程序。
学习编程,首先应该认认真真的学习一门语言。学习微软的,就先从VB开始,VB是比较好的入门语言,可视化的,比较简单,是非常好的入门语言。书籍最少应该准备两本,不可能一本书籍会包含VB的所有内容,在看书的时候,可以交叉的看,一本书籍中没有讲到的内容可以在另一本中看到,这样对学习是很有好处的,也能保证所学知识的完整性。学编程是一个很漫长的过程,不要着急,要理论与实践想结合,例程书籍也是很重要的,看源代码对学习也是很有帮助的,等你学完这门VB语言之后,学习别的语言是非常简单,可以尝试C语言,按照C——C++——VC的顺序学习,有助于知识的连贯性。或者学习Delphi,入门较为简单类似于VB,但比VB强大,即可作为入门又能做强、做大。 1. 明确学习目的学习编程对大多数IT业人员来说都是非常有用的。学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重要得砝码,有利于在求职道路上谋得一个好的职位;从国家的角度,可以为中国的软件产业做出应有的贡献,一名优秀的程序员永远是被争夺的对象。学习编程还能锻炼思维,使我们的逻辑思维更加严密;能够不断享受到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本身是一种创造性的工作。知识经济时代给我们带来了无限的机会,要想真正掌握计算机技术,并在IT行业里干出一番事业来,有所作为,具有一定的编程能力是一个基本条件和要求。 2. 打好基础学编程要具备一定的基础,总结之有以下几方面:(1)数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了。(2)逻辑思维能力的培养学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。(3)选择一种合适的入门语言 面对各种各样的语言,应按什么样的顺序学呢?程序设计工具不外乎如下几类: 1)本地开发应用软件开发的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;数据库开发工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 2)跨平台开发开发工具如 Java 等。 3)网络开发对客户端开发工具如:Java Script 等;对服务器开发工具如:PHP 、ASP 、JSP 、ISAPI 、NSAPI 、CGI 等。以上不同的环境下几种开发工具中 VB 法简单并容易理解,界面设计是可设化的,易学、易用。选 VB 作为入门的方向对出学者是较为适合的。 3. 注意理解一些重要概念一本程序设计的书看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针对这些语法、结构的应用例子,做到举一反三,触类旁通。 4. 掌握编程思想学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。例如学习 VC 就要学习 Windows 的内在机理、什么是线程......;学习 COM 就要知道 VTALBE 、类厂、接口、idl......,关键是学一种思想,有了思想,那么我们就可以触类旁通。 5. 多实践、多交流掌握编程思想必须在编程实际工作中去实践和体会。编程起步阶段要经常自己动手设计程序,具体设计时不要拘泥于固定的思维方式,遇到问题要多想几种解决的方案。这就要多交流,各人的思维方式不同、角度各异,各有高招,通过交流可不断吸收别人的长处,丰富编程实践,帮助自己提高水平。亲自动手进行程序设计是创造性思维应用的体现,也是培养逻辑思维的好方法。 6. 养成良好的编程习惯编程入门不难,但入门后不断学习是十分重要的,相对来说较为漫长。在此期间要注意养成一些良好的编程习惯。编程风格的好坏很大程度影响程序质量。良好的编程风格可以使程序结构清晰合理,且使程序代码便于维护。如代码的缩进编排、变量命令规则的一致性、代码的注释等。 7. 上网学编程在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载。例如网站“编程课堂”( >
基本要求 1 掌握算法的基本概念。 2 掌握基本数据结构及其 *** 作。 3 掌握基本排序和查找算法。 4 掌握逐步求精的结构化程序设计方法。 5 掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。 6 掌握数据的基本知识,了解关系数据库的设计。 考试内容 一、 基本数据结构与算法 1 算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。 2 数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。 3 线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4 栈和队列的定义;栈和队列的顺序存储结构及其基本运算。 5 线性单链表、双向链表与循环链表的结构及其基本运算。 6 树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。 7 顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。 二、 程序设计基础 1 程序设计方法与风格。 2 结构化程序设计。 3 面向对象的程序设计方法,对象,方法,属性及继承与多态性。 三、 软件工程基础 1 软件工程基本概念,软件生命周戎概念,软件工具与软件开发环境。 2 结构化分析方法,数据流图,数据字典,软件需求规格说明书。 3 结构化设计方法,总体设计与详细设计。 4 软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。 5 程序的调试,静态调试与动态调试。 四、 数据库设计基础 1 数据库的基本概念:数据库,数据库管理系统,数据库系统。 2 数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。 3 关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。 4 数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。 考试方式 1、 公共基础的考试方式为笔试,与C语言(VisualBASIC、Visual FoxPro、Java、Access、Visual C++)的笔试部分合为一张试卷。公共基础部分占全卷的30分。 2、 公共基础知识有10道选择题和5道填空题。 >
以上就是关于[程序设计功能及要求]全部的内容,包括:[程序设计功能及要求]、什么是程序设计、学习程序设计应注意哪些事项等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)