C语言程序设计实习报告



《C语言程序设计实习报告》由会员分享,可在线阅读,更多相关《C语言程序设计实习报告(7页珍藏版)》请在文档大全上搜索。
1、手机通讯录管理系统一、设计题目的任务和内容任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。具体要求: 建立通讯录信息,信息包含、姓名、分类(1、办公类2、个人类3、商务类)、电话、电子邮箱等;将通讯录保存在文件中;查看功能:可按1、办公类2、个人类3、商务类分类查询,当选中其中一类时,显示出此类所有数据中的姓名和电话号码。 增加功能:能录入新数据。当录入
2、重复姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 修改功能:选中某个人的姓名是,可对此人的相应数据进行修改。 删除功能:选中某个人的姓名是,可对此人的相应数据进行删除并自动调整后续条目编号。系统功能需求分析:查询:查询通讯录记录添加:添加通讯录记录显示:显示通讯录记录删除:删除通讯录记录修改:修改通讯录记录二、总体设计思路本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内
3、容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOFB环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。系统功能模块图:输入新信息:可输入新的数据。添加:可以添加通讯录记录,依次输入姓名、电话号码、分类、电子邮箱后,会提示是否继续添加。删除:输入姓名删除,输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可按1、办
4、公类2、个人类3、商务类分类查询修改:输入欲修改的那个人的名字后,再依次输入姓名、电话号码、分类、电子邮箱即可完成修改。下面就是总的程序流程图:代码如下:#include半tring.h"#defitypedeftruin调调用did三、具体设*选择(a)#include"stdio.h开始)函数结束ata()调用del()函数调用printf_back()ctpeoplereNPEO;PEOvoidenter();voidmenu();voidbrowse();voidadd();cparname20;um20;c|rsort20;mail30;voidmodify();
5、voiddel();modify_data(inti,intn);voidprintf_face();voidprintf_one(inti);voidinput(inti);voidsave(intn);load();voidprintf_sort(inti);voidno_input(inti,intn);voidname_input(inti,intn);voidprintf_back();voidmenu()intn,w1;doputs("ttt*手机通讯录*n");puts("tt*菜单*nn");puts("tttt1.输入新信息&
6、quot;);puts("tttt2.查看类型");puts("tttt3.添加信息");puts("tttt4.修改信息”);puts("tttt5.删除信息");puts("tttt6.返回");puts("nntt*printf("选择所需功能(1-6):bb");scanf("%d",&n);if(n<1|n>6)w1=1;getchar();elsew1=0;while(w1=1);switch(n)case1:enter()
7、;break;case2:browse();break;case3:add();break;case4:modify();break;case5:del();break;case6:exit(0);main()menu();voidenter()inti,n;printf("输入联系人的个数(0-%d)?:",N-1);scanf("%d",&n);printf("n现在请开始输入nn");for(i=0;i<n;i+)(printf("n输入%d个联系人信息.n",i+1);input(i);if(
8、i!=0)save(n);printf_back();voidbrowse()(inti,k,n;PEOp;n=load();printf("nn选择类型sort(a:办公类b:个人类c:商业类):");scanf("%s",p.sort);printf("ntNamenumn");for(i=0;i<n;i+)if(strcmp(p.sort,peoi.sort)=0)(k=i;printf_sort(k);printf("n");printf("nn");menu();voidadd(
9、)(inti,k,m,n,j;FILE*fp;n=load();printf("您要添加多少个联系人信息(1-%d)?:",N-n);scanf("%d",&m);k=m+n-1;for(i=n;i<=k;i+)(if(i>N-1)(printf("储存已满,不能添加新信息”);break;printf("n输入%d个联系人记录.n”,i-n+1);input(i);)if(fp=fopen("shouji.txt","ab")=NULL)(printf(-无法打开文件n&q
10、uot;);)for(j=n;j<i;j+)if(fwrite(&peoj,sizeof(structpeople),1,fp)!=1)printf("文件读写出错n");fclose(fp);printf_back();)voidmodify()(inti,k,n,w0=1,w1,w2=0;FILE*fp;PEOp;n=load();do(k=-1;printf_face();for(i=0;i<n;i+)(if(i!=0)&&(i%5=0)(printf("nn请记住你要修改的联系人姓名,按任意键继续.”);getchar(
11、);puts("nn");)printf_one(i);)do(printf("nn请输入您所需修改的联系人姓名!name:");scanf("%s",p.name);for(i=0;i<n;i+)if(strcmp(p.name,peoi.name)=0)(k=i;p=peoi;)if(k=-1)printf("nn输入错误!请重新输入");while(k=-1);printf_face();printf_one(k);w1=modify_data(k,n);if(w1=1)(printf("nS