![C语言论文正文1_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/808a6e09-0bcf-4eaa-b4a8-141d215aeedc/808a6e09-0bcf-4eaa-b4a8-141d215aeedc1.gif)
![C语言论文正文1_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/808a6e09-0bcf-4eaa-b4a8-141d215aeedc/808a6e09-0bcf-4eaa-b4a8-141d215aeedc2.gif)
![C语言论文正文1_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/808a6e09-0bcf-4eaa-b4a8-141d215aeedc/808a6e09-0bcf-4eaa-b4a8-141d215aeedc3.gif)
![C语言论文正文1_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/808a6e09-0bcf-4eaa-b4a8-141d215aeedc/808a6e09-0bcf-4eaa-b4a8-141d215aeedc4.gif)
![C语言论文正文1_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-4/18/808a6e09-0bcf-4eaa-b4a8-141d215aeedc/808a6e09-0bcf-4eaa-b4a8-141d215aeedc5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章绪论1.1 当前应用领域的现状我们现在如何管理与我们联系的人的信息呢?有多种方式, 比如说,有储存到手机上的,有记录等信息到本子上的,还有用 名片夹存放名片的,也有记录在word文档中或打印出来的,等等 很多种形式。对于存储到手机上的方式,比较方便,随时随地可以联系,不过只能通过联系,没有记录其他的联系方式,如果手机丢了可 能就谁也联系不上了;对于记录等信息到本子上的方式,第一也 可能丢失本子,第二是查找起来比较困难,需要人工查找,而且 更新时不容易,需要涂改以前记录的信息,第三格式比较死板, 不利于跟随用户的需求扩展;对于用名片夹存放名片的形式也是 查找起来不方便,有丢失的危险;对于记
2、录到word文档或打印出 来的,也是扩展性不强,查找起来不方便。如此多的方式我们都感觉有一定的缺陷,那我们如何管理我 们的联系人通讯资料呢?提出一个大胆的假设,如果我们在网络 上建立一个系统提供通讯录管理功能,这样我们就可以随时随地 通过网络对通讯录进行管理,而现在我们的手机都逐渐更新换代 成可以连接计算机网络了,这样我们可以随时随地查找任意信息, 查找快速,维护方便,丢失手机也不会丢失联系方式,而且可以 根据用户的需要定制,比较灵活,这个可能是最完美的方案了。1.2 C语言的发展C语言的前身是ALGOL语言(AL-GOL6Q是一种面向问题的高 级语言)。1963年英国剑桥大学推出 CPL语言
3、,此语言在 ALGOL 语言的基础上增加了硬件处理能力,同年剑桥大学的马丁 ?理查德 对其进行简化,提出BCPL语言;1970年美国贝尔实验室的肯?汤 姆逊进一步简化,提出了 B语言(取BCPL的第一个字母);1972 年美国贝尔实验室的布朗? W.卡尼汉和丹尼斯? M.利奇对其完善和 扩充,提出了 C语言(取BCPL的第二个字母);1987年美国标准 化协会指定了 C语言标准ANSIC,即现在流行的C语言。自1972 年投入使用之后,C语言成为UNIX和 XENIX操作系统的主要语言, 是当今使用最为广泛的程序设计语言之一。1.3 C语言的特点(1) C 语言是具有低级语言功能的高级语言。C
4、语言既具有高级语言的功能,又具有低级语言的许多功能。它把高级语言的基本 机构和语言与低级语言的实用性集合起来,是处于汇编语言和高 级语言之间的一种程序设计语言,也可称其为“中级语言”。(2) C语言简洁、紧凑、使用方便、灵活。程序书写形式自由, 主要用小写字母表示,相对其他高级语言源程序代码量少。(3) 运算符丰富,表达式能力强。C语言共有34种运算符,围 广泛,除一般高级语言使用的算术、关系和逻辑运算符外,还可 以实现以二进制位为单位的运算,并且具有如 a+、b+等单项运 算符和+=、-二、*=、/二等复合运算符。(4) 数据结构丰富,便于数据的描述与存储。C语言具有丰富的 数据结构,其数据
5、类型有整型、实型、字符型、数组类型、指针 类型、结构体类型、共用体类型等,因此能实现复杂的数据结构的运算。(5) C语言是结构化、模块化的编程语言。程序的逻辑结构可以 使用顺寻、分支和循环3种基本结构。C语言程序采用函数结构, 便于把整体程序分割成若干相对独立的功能模块,为程序模块间 的相互调用以及数据传递提供了便利。(6) C 语言程序中,可使用宏定义编译预处理语句、条件编译预 处理语句。(7) 可移植性好。与汇编语言相比,C程序基本上不作修改就可 以运行于各种型号的计算机和各种操作系统。C语言也存在一些不足之处,例如运算符及其优先级过多、语法定义不严格等,对于初学者有一定的困难。由于C语言
6、具有上述特点,因此 C语言得到了迅速推广,成 为人们编写大型软件的首选语言之一。用C语言编写简单的接口程序在当今,流行的编程软件种类繁 多,它们编程方便、易于维护,但是在与硬件直接打交道和编制 系统软件时却束手无策,于是 C语言就有了用武之地。C语言作 为汇编语言与高级语言之间的一种过渡语言,兼有汇编语言的高 效和高级语言的方便。在通讯中,为了保证行运安全可靠,标准的串行口必须具有许多握手信号和状态信息。这是因为通讯的各个计算机CPU速度不一样(这会导致“错帧”)以及发送机发送数据速度比接收机接 收速度快(这会导致“过冲”)。为解决这个问题,我们采用一个 简单的握手信号,即发送机每次仅发送半个
7、字节(低4位)的数据,而另外半个字节(高4位)则用来传送信息。我们可以对信 息位(高4位)进行如下简单的编码:0H:发送的是新的半个字节数据1H:重新发送上次传送错误的数据2H:文件名结束3H:文件结束这样,每当发送机发送一个字节以后,就等待接受机发回送信号, 这回送信号就是发送机发送过来的那个字节。发送机接收到回送信号后,把它与刚发送的字节相比较,如果相同,就发送新的半个字节,否则就重新发送。新 数据与旧数据通 过信息位来区分。第二章问题定义2.1设计题目的容、任务及具体要求本程序是非数值计算型算法设计,我设计出了通讯录管理系 统的基本功能,并设计了简单的界面。本程序主要考察对自定义 函数的
8、熟悉程度,本程序主要使用的是数组的相关操作,包括结 构体数组的输入、输出、查找、删除等。我设计的这个通讯录系 统也初步实现了人员信息的显示、删除、查找、修改、添加等必 要的功能。 记录通讯录的人员的学号、家庭住址。 显示所有人员的信息。 通过输入查找人员信息。 通过输入查找到要删除的人员信息,然后可以进行删除。 通过输入查找到要修改的人员信息,然后可以进行修改。 添加人员信息。第三章基本思路与详细设计3.1基本思路本系统首先设计出了主函数,然后根据去要实现的功能分别 设计,显示、删除、查找、修改、添加功能的子函数。在显示的 函数设计过程中首先运用拉文件的读取等必要的知识通过把文件 的容读取到存
9、然后打印出来。删除函数的设计是首先从文件找到 要删除的人,然后通过写一个实现删除目的的 FOR循环将该人从 存里删除,然后再用写的方式打开文件,将存的信息写入文件, 实现删除。查找也是先打开文件,用一个字符串对比的方法找出 用户要查找的人,然后打印出来。修改也大体和删除相同,添加 函数在设计时通过申请一片空间,然后通过指针将需要添加的信 息添加进去,从而实现添加功能。下面就是总的程序流程图:开始执行printf()函数理r1! 11F11f调 用outp ut() 函 数调 用 del()函数调 用 found()函 数调 用 mod ify()函 数调 用in sert()函数执 行prin
10、t f() 退 出 系图3-1通讯录管理总的程序流程图3.2各功能实现程序流程图3.2.1主函数模块的流程图图3-2-1主函数流程图3.2.2 void output()函数流程图图3-2-2 void output() 函数流程图3.3.3 void del()函数流程图图3-2-3 void del()函数流程图3.2.4 void found()函数流程图开始执行 printf()执行scanf()结束执行 while()结束J图3-2-4 void found() 函数流程图3.2.5 void modify函数流程图开始执行 printf ()执行 while ()结束k.执行 pr
11、intf () 执行 scanf ()执行for () 执行if ()执行for ()循环执行 printf ()结束结束图3-2-5 void modify 函数流程图3.2.6 void in sert ()函数流程图开始结束执行 printf () 执行 scanf ()写入文件结束图 3-2-6 void insert()函数流程图第四章代码实现4.1结构体变量和一些函数的定义以下为所调用的头文件:#i nclude /*1/0函数 */#includevstring.h /* 字符串函数 */#in clude软件中使用了结构体和结构体数组,如:typedef struct /*声明
12、结构体类型*/char nu m6;char n ame10;char pho ne13;char addr30;datatype;/*声明数据类型*/对用户的信息进行保存,它们都以二进制的形式读写 其中:char nu m6;char n ame10;char pho ne13;char addr30;分别对学号、与住址进行存储。其中还使用了大量的子函数,例如:int menu _select( );/*菜单函数*/lin klist createlist(void) /*建立函数*/void insertnode(linklist head,listnode *p); /*添加函数 */v
13、oid delno de(li nklist head); /*删除函数*/void prin tlist(l in klist head); /*输出函数*/void save()/*存储函数*/4.2完成各功能的子函数编码分析4.2.1菜单函数 int menu _select()int sn;printf( n);pri ntf( n); printf( n);prin tf(ntt通讯录管理系统);printf( n);printf(ntt*.主菜单 *);prin tf(ntt*1.建立通讯录 2.添加菜单*prin tf(ntt*3.查询菜单4.删除菜单*);prin tf(ntt
14、*5.输出6.数据存盘*);prin tf(ntt*0.退出本通讯录*);prin tf(ntt*“);请选择操作0-6:);prin tf(n);prin tf(nttfor(;;)scan f(%d,&sn);if(s n6)printf(ntt输入错误!n);elsebreak; return sn;图4-2-1菜单函数界面图422 建立函数linklist createlist(void) lin klist head=(list node*)malloc(sizeof(list no de);list node *p,*rear;int flag=1;rear=head;while(
15、flag=1)p=(list node *)malloc(sizeof(list no de);printf(”请输入学号:);sca nf(%s,p-data. num) ;printf(”请输入:);scanf(%s,);printf(”请输入:);scanf(%s,p-data.phone): printf(请输入);scanf(%s,p-data.addr);rear-next=p;rear=p;printf(ntt继续建表吗? (1.是/0.不):);sca nf(%d, &flag);if(flag=1)printf(ntt创建成功!n);rear- n ex
16、t=NULL;retur n head;建立函数界面图423添加函数void in sert no de(l in klist head,list node *p)list node *p1,*p2;p仁head; p2=p1- n ext;while(p2!=NULL & strcmp(p2-data.num,p-data.num)n ext;p1- n ext=p;p-n ext=p2;printf(ntt插入成功! n);I洁人联与I趟日录佶包爲加一亍穷 F;vr 2 2:H-H HnKXKX菁?it at弭趕H.Wlf *盖弭 齋 = 甲 超f n . 算養* *笛*T卩石u厂., 迟
17、 出本.皇H录“国尿 斥曲輕托*耳M 斗祁H.K 丹 * bkm 耳.曲料料丹赳斗丹 M !& * jL ji.ji ji.jLja 斗旨 jj ir ariM * . ,氏科涌鬥左首叩丞药 n|x|U3 Z ivl- mlTdLL山=:ir 片 ?t:Ullkn图4-2-3添加函数界面图424查找函数list node * listfi nd(li nklist head) list node * p; char pho ne15; char n ame10; int xz;prin tf(ntt-n);prin tf(ntt 1.查询 n);prin tf(ntt 2.查询 n);prin
18、 tf(ntt-n);printf(ntt请选择:);p=head-n ext;sca nf(%d, &xz);if (xz=1)prin tf(ntt请输入要查找的:);sca nf(%s,pho ne);while(p & strcmp(p-data.pho ne,ph on e)n ext;if (p=NULL | strcmp(p-data.pho ne,ph on e)0)p=NULL;else if(xz=2) printf(ntt请输入要查询者的:);scanf(%s,name);while(p & strcmp(p-data .n ame ,n ame)!=0) p=p-n e
19、xt;return p;图4-2-4查找函数界面图4.2.5删除函数void delno de(li nklist head) int jx; list node *p,*q; p=listfi nd(head);if(p=NULL) printf(ntt没有要删除的通讯者!:n);return; printf (ntt真的要删除该结点吗?(1.是/0.不):);sca nf(%d,&jx);if (jx=1) q=head; while(q!=NULL & q-next!=p)q=q-n ext; q-n ext=p-n ext; free(p);printf(ntt通讯者已被删除!n);.
20、”需比*啊 注.*!砂.=丰: 率牟 曲rmrpr輩ttsc.列皆呻t 览丁 ffi I fl -jl 厂语HI 费 *3 =爭单4v 片|華弋.年f忖F】退出邸* 1 于.工*WWW*wW*W津# 耳 18|日 K鼻鼻鼻最 4 科屛 甘HMM KX MrKM MMdH浊 iH 佶且的 *:!-号询雪関淸七择=want in舞册霹昭心林通刑lis寸|图4-2-5删除函数界面图4.2.6输出函数void prin tlist(l in klist head) list node * p; p=head-n ext;prin tf(ntt编号地址 n);printf(nttn);while(p!=
21、NULL)prin tf(ntt %s %s %s %sn,p-data. nu m,p-data.n ame,p-data.pho ne,p-data.addr);n);prin tf(ntt p=p-n ext;图4-2-6输出函数界面图4.2.7存储函数 void save() typedef struct node ;FILE *fp;if(fp=fope n( message,wb)=NULL) prin tf(No In formation n);exit(1);printf(n Contain Files n);fwrite(p,sizeof( struct node ),1,f
22、p);fclose(fp);禹匸臣EfTvisjrd 乂血54耐吐叭4囲1|.!3禮胡3|卷事哉卜壬 w讨JlB|Caatslii Filet图4-2-7存储函数界面图第五章调试与测试5.1执行软件、当软件中总有输入人员信息时:1. 查看全部信息时:根据提示输入12. 删除人员信息:根据提示输入2 按回按回车显示人员信息车输入需要删除人员:例如(欧鸿)按回车显示需要删除人员信息并删除。3. 查找人员信息:根据提示输入3按回车输入要查找的人员名字:例如(欧鸿)按回车 显示查找到的人员信息。4修改人员信息:根据提示输入4按回车输入需要修改的人员:例如(欧鸿)按回车显示修改前的信息。根据提示输入修改
23、的信息。5.添加人员信息:根据提示输入5按回车输入添加的信息学号:家庭住址:输入完毕后按回车可以再根据提示使用查找功能。该操作可以看见刚才添加的人员信息、当软件中总没有输入人员信息时:1. 查看全部信息时:根据提示输入1按回车显示:无法从已有通讯录输入!n可能是因为原通讯录不存在或为空!n建议你检查你的通讯录文挡!2. 删除人员信息:根据提示输入2 按回车输入需要删除人员:例如(欧鸿)按回车没有信息。3. 查找人员信息:根据提示输入3 按回车输入要查找的人员名字:例如(欧鸿)按回车显示:对不起,通讯簿中没有此人的记录。4修改人员信息:根据提示输入4按回车输入需要修改的人员:例如(欧鸿)按回车
24、没有显示5.添加人员信息:根据提示输入5按回车输入添加的信息学号:家庭住址:输入完毕后按回车可以再根据提示使用查找功能。该操作可以看见刚才添加的人员信息第六章总结与心得通过这次课程设计,我对很多的函数有了新的认识,也学会 了运用多种函数,我也明白了写软件的基本过程和基本方法。写 软件的过程中我又学到了曾经自己不知道的函数或是自己不会的 函数的用法。特别是文件的开启和关闭,读与写。这次课程设计 课总的来说让我受益匪浅。在软件的设计过程中遇到了很多的困难。在软件一次一次的 调试失败下曾经想过要放弃。我最后还是让自己坚持了下来,毫 不畏惧困难,在同学的帮助与讲解下我总算是顺利的完成了软件 的设计。虽
25、然在调试程序遇到了很多的困难,当软件调试成功时那种 喜悦的感觉没有什么东西可以代替。在程序的编写过程中我发现 我自己有很多的知识漏洞和缺陷,需要进一步努力学习来完善自 己。在这几天的编写过程中我对 C语言有啦更进一步的认识和了 解。此次编程过程的经验和知识肯定能促进我以后的学习。此次 课程设计不仅给了我很多很好的经验,也然我体会到了失败时的 焦急和难受,也体会到了成功时的兴奋与喜悦。附录:源代码#i nclude /*l/0函数*/#include /*字符串函数 */#in cludetypedef struct /*声明结构体类型*/char nu m6;char n ame10;char
26、 pho ne13;char addr30;datatype;/*typedef struct node /* datatype data; /* struct node * n ext;/*对象的指针*/list no de;typedef list node * lin klist; /* 类型*/lin klist head;/*list node *p;/*int menu _select( );/*lin klist createlist(void); /*声明数据类型*/通讯录结构中结点的定义 */嵌套*/定义结构体指针一一指向另一个结构体定义了指向list node结构体的指针定
27、义一个linklist 定义p为指向list node 菜单函数*/ 创建链表*/类型的head变量*/结构体的指针*/void insertnode(linklist head,listnode *p); /*添加函数 */list node *listfi nd(li nklist head); void delno de(l in klist head); /* void prin tlist(li nklist head); /*删除函数*/输出函数*/void save();/*以下是主函数*/void mai n()for(;)switch(me nu _select()case
28、1:prin tf(ntt *通讯录的建立 * n);prin tf(nn);head=createlist();break;case 2:prin tf(ntt *通讯录信息添加 * n);p=(list node *)malloc(sizeof(list no de);prin tf(nn); printf(”请输入学号:);sca nf(%s,p-data .nu m);prin tf(请输入:”);sca nf(%s,p-data .n ame); prin tf(请输入:);sca nf(%s,p-data.ph on e); printf( 请输入地址:);scan f(%s,p-
29、data.addr);insertno de(head,p); break;case 3:prin tf(ntt*n);prin tf(ntt*通讯录信息查询*n);prin tf(ntt*n);p=listfi nd(head);if(p!=NULL)printf(ntt *编号地址 *n);%sprin tf(nttn);prin tf(ntt* %s%s%s* n,p-data .nu m,p-data .n ame,p-data.ph on e,p-data.addr);prin tf(nttn ”); elseprin tf(ntt没有你要找的人! n);break;case 4:p
30、rintf(ntt*n);printf(ntt*通讯信息的删除 *n);printf(ntt*n);delno de(head);break;case 5:printf(ntt*n);printf(ntt*通讯录输出 *n);printf(ntt*n);prin tlist(head);break;case 6:printf(ntt*n);printf(ntt*据存盘 *门)printf(ntt*n);save();break;谢谢您的使用!n);case 0:prin tf(nttreturn;/*菜单函*/int menu _select()int sn;printf(” n);print
31、f(” n);printf( n);prin tf(nttprintf( n);prin tf(ntt* *prin tf(ntt*1.prin tf(ntt*3.通讯录管理系统一一”);菜单 *); 建立通讯录 2.添加菜单*); 查询菜单4. 删除菜单*);prin tf(ntt*5.prin tf(ntt*0.输出 6.数据存盘*);退出本通讯录*);prin tf(ntt*);prin tf(n); prin tf(ntt for(;)请选择操作0-6:);sea nf(%d, &sn);if(s n6)prin tf(nttelse break;return sn;/*lin kli
32、st createlist(void)li nklist head=(list node *)malloc(sizeof(list no de); list node *p,*rear;int flag=1;rear=head;while(flag=1)输入错误!n);建立函数 *p=(list node *)malloc(sizeof(list no de); printf( 请输入学号:);sca nf(%s,p-data .nu m);prin tf(请输入:);sca nf(%s,p-data .n ame);prin tf(请输入:);sca nf(%s,p-data.ph on e
33、);printf( 请输入地址:);sca nf(%s,p-data.addr);rear- n ext=p;rear=p;printf(ntt继续建表吗?(1.是/0.不):);sca nf(%d, &flag);if(flag=1)printf(ntt创建成功!n);rear-n ext=NULL; retur n head;*添加函数 *void insertno de(l in klist head,list node *p) list node *p1,*p2;p仁head;p2=p1- n ext;while(p2!=NULL & strcmp(p2-data. nu m,p-data. nu m)n ext;插入成功! n);查找函数 *p1- n ext=p; p_n ext=p2; prin tf(ntt 未*list node * listfi nd(li nklist head)list node * p;char phon e15;char n ame10;int xz;printf(nttn ”);prin tf(ntt 1.查询 n ”);prin tf(ntt 2.查询 n ”);printf(nttn ”);printf(ntt请选择:);p=head-n ext;scan f(%d,& xz);请输入要查找的:);if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度智能交通系统规划与设计工程师聘用合同
- 2025年高压隔离开关项目可行性研究报告
- 2025年中国果蔬清洗酶市场运营态势分析及投资前景预测报告
- 2025年度环保技术公司股权收购及合作协议
- 2025年度网络安全实习生实习协议及信息安全防护合同
- 2025年度金融科技人才培养合作合同范本
- 2025年度文化创意产业基地划拨土地购置合同
- 2025年多路智能巡检仪项目投资可行性研究分析报告
- 2025年度新型城镇化建设项目合作协议书模板
- 2025年度建筑铝模劳务分包合同施工进度监控范本
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- 2024年认证行业法律法规及认证基础知识 CCAA年度确认 试题与答案
- 2022届“一本、二本临界生”动员大会(2023.5)
- 国家行政机关公文格式课件
- 耐压绝缘硅橡胶涂料喷涂作业指导书
- 小学《体育与健康》 人教版 三年级 乒乓球运动 -乒乓球介绍与球性教学 第一节课PPT 课件
- 急性心梗的护理业务学习课件
- 导向标识系统设计(二)课件
- 聚焦:如何推进教育治理体系和治理能力现代化
- 化工仪表自动化【第四章】自动控制仪表
- 安全生产十大法则及安全管理十大定律
评论
0/150
提交评论