C语言程序设计实习报告.docx

上传人:牧羊曲112 文档编号:3155342 上传时间:2023-03-11 格式:DOCX 页数:10 大小:41.06KB
返回 下载 相关 举报
C语言程序设计实习报告.docx_第1页
第1页 / 共10页
C语言程序设计实习报告.docx_第2页
第2页 / 共10页
C语言程序设计实习报告.docx_第3页
第3页 / 共10页
C语言程序设计实习报告.docx_第4页
第4页 / 共10页
C语言程序设计实习报告.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序设计实习报告.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实习报告.docx(10页珍藏版)》请在三一办公上搜索。

1、C语言程序设计实习报告手机通讯录管理系统 一、设计题目的任务和内容 任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。 具体要求: 建立通讯录信息,信息包含、姓名、分类、电话、电子邮箱等; 将通讯录保存在文件中; 查看功能:可按1、办公类2、个人类3、商务类分类查询,当选中其中一类时,显示出此类所有数据中的姓名和电话号码。 增加功能:能录入新数据。当录入重

2、复姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 修改功能:选中某个人的姓名是,可对此人的相应数据进行修改。 删除功能:选中某个人的姓名是,可对此人的相应数据进行删除并自动调整后续条目编号。 系统功能需求分析: 查询:查询通讯录记录 添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 修改:修改通讯录记录 二、总体设计思路 本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识

3、通过把文件的内容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。 系统功能模块图: 主菜单 输入查看 添加 修改 删除 退出 输入新信息:可输入新的数据。 添加:可以添加通讯录记录,依次输入姓名、电话号码、分类、电子邮箱后,会提示是否继续添加。 删除:输入姓名删除,输入欲删

4、除的那个人的名字后,会自动删除他的记录内容 查询:可按1、办公类2、个人类3、商务类分类查询 修改:输入欲修改的那个人的名字后,再依次输入姓名、电话号码、分类、电子邮箱即可完成修改。 下面就是总的程序流程图: 开始 执行printf函数 选择 调用 browse函数 调用input 函数 调用 add函数 调用 modify_data( )函数 调用 del函数 调用 printf_back a=1,2,3,6 结束 三、具体设计 代码如下: #includestdio.h #includestring.h #define N 15 typedef struct people char nam

5、e20; char num20; char sort20; char email30; PEO; PEO peoN; void enter; void menu; void browse; void add; void modify; void del; modify_data(int i,int n); void printf_face; void printf_one(int i); void input(int i); void save(int n); load; void printf_sort(int i); void no_input(int i,int n); void nam

6、e_input(int i,int n); void printf_back; void menu int n,w1; do puts(ttt *手机通讯录*n); puts(tt* 菜单 *nn); puts(tttt1.输入新信息); puts(tttt2.查看类型); puts(tttt3.添加信息 ); puts(tttt4.修改信息); puts(tttt5.删除信息); puts(tttt6.返回); puts(nntt*n); printf(选择所需功能(1-6): bb); scanf(%d,&n); if(n6) w1=1;getchar; else w1=0; while(

7、w1=1); switch(n) case 1:enter;break; case 2:browse;break; case 3:add;break; case 4:modify;break; case 5:del;break; case 6:exit(0); main menu; void enter int i,n; printf(输入联系人的个数(0-%d)?:,N-1); scanf(%d,&n); printf(n 现在请开始输入nn); for(i=0;in;i+) printf(n 输入 %d个联系人信息.n,i+1); input(i); if(i!=0)save(n); pr

8、intf_back; void browse int i,k,n; PEO p; n=load; printf(nn选择类型 sort(a:办公类 b:个人类 c:商业类): ); scanf(%s,p.sort); printf(ntName numn); for(i=0;in;i+) if(strcmp(p.sort,peoi.sort)=0) k=i; printf_sort(k); printf(n); printf(nn); menu; void add int i,k,m,n,j; FILE *fp; n=load; printf(您要添加多少个联系人信息(1-%d)?:,N-n)

9、; scanf(%d,&m); k=m+n-1; for(i=n;iN-1) printf(储存已满,不能添加新信息);break; printf(n 输入 %d个联系人记录.n,i-n+1); input(i); if(fp=fopen(shouji.txt,ab)=NULL) printf(无法打开文件n); for(j=n;ji;j+) if(fwrite(&peoj,sizeof(struct people),1,fp)!=1) printf(文件读写出错n); fclose(fp); printf_back; void modify int i,k,n,w0=1,w1,w2=0; F

10、ILE *fp; PEO p; n=load; do k=-1; printf_face; for(i=0;in;i+) if(i!=0)&(i%5=0) printf(nn请记住你要修改的联系人姓名,按任意键继续.); getchar; puts(nn); printf_one(i); do printf(nn请输入您所需修改的联系人姓名! name:); scanf(%s,p.name); for(i=0;in;i+) if(strcmp(p.name,peoi.name)=0) k=i; p=peoi; if(k=-1)printf(nn输入错误!请重新输入); while(k=-1);

11、 printf_face; printf_one(k); w1=modify_data(k,n); if(w1=1) printf(nSuccessful_.nn确认需要修改其他信息?nnt1).是2).返回tbb); scanf(%d,&w0); w2=1; else w0=0; if(w2=1) peok=p; if(w0!=1&w2=1) save(n); while(w0=1); menu; void del PEO p; FILE *fp; int k,w1,w0=0,w2=0,n,i; n=load; do k=-1; printf_face; for(i=0;in;i+) if(

12、i!=0)&(i%5=0) printf(nn请记住你要删除的联系人姓名,按任意键继续.); getchar; puts(nn); printf_one(i); do printf(nn请输入需要删除的联系人姓名 name:); scanf(%s,p.name); for(i=0;inn 1).姓名 2).电话 3).类型 4).邮箱地址 n 5).所有数据 6).取消并返回); printf(请选择你要修改的选项(1-6): bb); scanf(%d,&c); if(c6|c6|c1); do switch(c) case 1:name_input(i,n);break; case 2:n

13、o_input(i,n);break; case 3:printf(sort:);scanf(%s,peoi.sort);break; case 4:printf(email:);scanf(%s,peoi.email);break; case 5:input(i);break; puts(nNow:n); printf_face; printf_one(i); printf(n确认修改??nnt1).是 2).重新修改 3).立即返回 bb); scanf(%d,&w1); while(w1=2); return(w1); void printf_face printf(nt姓名 电话 类型

14、 邮箱地址n); void printf_one(int i) printf(%10s %14s %10s %10s,peoi.name,peoi.num,peoi.sort,peoi.email); printf(n); void input(int i) name_input(i,i); no_input(i,i); printf(sort(a:办公类 b:个人类 c:商业类):); scanf(%s,peoi.sort); printf(email:); scanf(%s,peoi.email); void save(int n) FILE *fp; int i; if(fp=fopen

15、(shouji.txt,wb)=NULL) printf(nCannot open filen); return NULL; for(i=0;in;i+) if(peoi.name0!=0) if(fwrite(&peoi,sizeof(struct people),1,fp)!=1) printf(file write errorn); fclose(fp); load FILE *fp; int i; if(fp=fopen(shouji.txt,rb)=NULL) printf(nCan not open filen); return NULL; for(i=0;!feof(fp);i+

16、) fread(&peoi,sizeof(struct people),1,fp); fclose(fp); return(i-1); void printf_sort(int i) printf(%10s %14s,peoi.name,peoi.num); void no_input(int i,int n) int j,w1,k; do w1=0; printf(NO.:); scanf(%s,peoi.num); for(j=0;peoi.numj!=0;j+) if(peoi.numj9) puts(输入错误!只能输入数字(0-9).请重新输入!n); w1=1;break; if(w

17、1!=1) for(k=0;kn;k+) if(k!=i&strcmp(peok.num,peoi.num)=0) puts(这个记录不存在,请重新输入!n); w1=1;break; while(w1=1); void name_input(int i,int n) int k,w1; do w1=0; printf(Name.:); scanf(%s,peoi.name); for(k=0;kn;k+) if(k!=i&strcmp(peoi.name,peok.name)=0) puts(这个记录不存在,请重新输入!n); w1=1;break; while(w1=1); void pr

18、intf_back printf(nntSuccessful. _nn); menu; 四、界面分析 1、开始界面 2、输入功能 3、查看功能 4、添加功能 5、修改功能 6、删除功能 7、返回 五、心得体会 本次的C程序实设计实验是我进入大学以来第一次独立设计的实验。通过自己动手,发现和解决问题,我发现了自己的许多缺陷与不足。平时没有掌握好的知识在这次实验中彻底暴露出来。在经过不断思考和总结,以及不断查阅资料和上机运行,尝试再尝试的过程中,我终于解决其中大部分问题,但是还是存在一些问题无法解决。但我相信,在今后的自我学习过程中能够解决好它们。 当我选择手机通讯录管理系统这个题目时,一开始想运

19、用大量子函数及指针来完成,但是在仔细的构思之后,觉得不一定要用很多子函数解决问题,于是改变了编程思路,令程序设计起来没有那么复杂,界面看起来也清爽整洁多了。通过结构体的使用,令定义方便简洁;通过大量的使用if和while、dowhile、switchcase语句后,充分体会了他们的强大功能与作用;指针的运用也给设计带来了方便。当然还有不少文件的读写问题,不过通过不断测试以及上网查询之后都顺利解决了。 在C课程设计过程中,遇到的许许多多的困难都让人抓狂。在软件一次次的调试失败下想放弃的念头也不断出现,但最后我还是让自己坚持了下来,毫不畏惧困难。在同学的帮助与老师之前的讲解下,我总算是不太顺利的完成了课程设计。当软件调试成功时那种喜悦的感觉,真好,它是没有什么东西可以代替,这也有也是程序设计员都会为之兴奋之事吧。在程序的编写过程中,发现的很多的知识的漏洞和缺陷,都将是我以后学的借鉴之处,通过不足,才知道如果改进、完善,才会更迫切的努力学习来弥补不足。 这次的最深刻的体会就是,书上和老师教的内容是很有限的,如果真的想学会C语言和其他科目,我们需要的不但是老师的教导,更应该不断地靠自己去学习,去向他人请教,积极地去了解和掌握更多的知识,而不能被动学习,这样我们才能编出更好的C程序,这样我们才能学好更多。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号