C综合实验报告原创.docx

上传人:b****6 文档编号:3729931 上传时间:2022-11-25 格式:DOCX 页数:19 大小:610.47KB
下载 相关 举报
C综合实验报告原创.docx_第1页
第1页 / 共19页
C综合实验报告原创.docx_第2页
第2页 / 共19页
C综合实验报告原创.docx_第3页
第3页 / 共19页
C综合实验报告原创.docx_第4页
第4页 / 共19页
C综合实验报告原创.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C综合实验报告原创.docx

《C综合实验报告原创.docx》由会员分享,可在线阅读,更多相关《C综合实验报告原创.docx(19页珍藏版)》请在冰豆网上搜索。

C综合实验报告原创.docx

C综合实验报告原创

 

C语言综合实验

 

——通讯录管理系统

 

姓名:

学号:

班级:

日期:

 

一.方案

1.设计目的

设计“通讯录管理系统”使其具有数据的创建、修改、删除、显示和查找等功能。

(1)通讯录内容:

姓名、电话号码、E-mail和地址。

(2)可对记录中的姓名和电话号码进行修改。

(3)可增加或删除记录。

(4)可显示所有保存的记录。

(5)可按类别进行查询。

2.设计思路

根据要求,通讯录数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择,其中应用到函数、数组、指针、结构、文件等内容。

二.模块说明

1主函数main

主函数使用户进入通讯录管理系统主界面,用户可以选择并进入相应的选项功能。

使用printf函数和switchcase结构来编写主函数。

2creat函数

用来建立新的电话号码簿,用户可以向系统输入数据。

3menu函数

Menu函数用于查询信息,分为按类查询和按姓名查询,分别由show函数和name函数实现。

4delete函数

用来删除不需要的数据,可以用单链表来实现。

5input函数

用于输入一个人的信息,即添加通讯录内容。

6alter函数

用于更改通讯录信息,编辑内容。

7save函数

保存已输入的数据。

三.源程序

#include

#include

#include

#include

#definemaxlen15

structfriends_list

{

intnum;

charname[15];

chartelephone[15];

charemial[15];

charaddress[15];

charchoice;

}friends_list[maxlen];

typedefstructlnode

{

intnum;

charname[15];

chartelephone[15];

charemial[15];

charaddress[15];

charchoice;

structlnode*next;

}listnode,*linklist;

linklisthead=NULL,r=NULL;

listnode*s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;

inti;

charname1[15],ch;

chartelephone1[15];

charemial1[15];

charaddress1[15];

charchoice1;

chars1[15];

FILE*fp;

voidcreat()

{

intj;

longk;

fp=fopen("数据文件.txt","rt");

if(fp!

=NULL)

{

for(i=0;i<=maxlen;i++)

{

j=fgetc(fp);

if(j==EOF)

return;

k=i;

fseek(fp,k*sizeof(structfriends_list),0);

fread(&friends_list[i],sizeof(structfriends_list),1,fp);

s=(linklist)malloc(sizeof(listnode));

s->num=friends_list[i].num;

strcpy(s->name,friends_list[i].name);

strcpy(s->telephone,friends_list[i].telephone);

strcpy(s->emial,friends_list[i].emial);

strcpy(s->address,friends_list[i].address);

s->choice=friends_list[i].choice;

if(head==NULL)

{

head=s;r=head;head->next=NULL;}

else

{

r->next=s;

r=s;r->next=NULL;

}

}fclose(fp);}

else

{

fp=fopen("数据文件.txt","w");

i=1;

}

}

voidname()

{

intmark=0;

inti;

inta=0;

printf("\n\t\t*****************按姓名查找*******************");

charname[15];

printf("\n\t\t请输入姓名:

");

scanf("%s",name);

for(i=0;i<15;i++)

{

if(strcmp(friends_list[i].name,name)==0)

{

printf("\n\t\t*************查找人信息***********");

cout<

cout<name<

cout<telephone<

cout<emial<

cout<address<

printf("\n\t\t************************************************");

mark++;

}

}

}

voidShow1()

{

p1=head;

while(p1!

=NULL)

{

if(p1->choice=='1')

{

cout<

cout<name<

cout<telephone<

cout<address<

p1=p1->next;continue;}

}

voidShow2()

{

p1=head;

while(p1!

=NULL)

{

if(p1->choice=='2')

{

cout<

cout<name<

cout<telephone<

cout<address<

p1=p1->next;continue;}

}

voidShow3()

{

p1=head;

while(p1!

=NULL)

{

if(p1->choice=='3')

{

cout<

cout<name<

cout<telephone<

cout<address<

p1=p1->next;continue;}

}

voidShow()

{

charch1;

printf("请选择类别:

\n");

cout<<"1:

家人"<<"2:

朋友"<<"3:

同事"<

cin>>ch1;

switch(ch1)

{

case'1':

Show1();break;

case'2':

Show2();break;

case'3':

Show3();break;

default:

cout<<"请重新选择!

"<

}

}

voidmenu()

{

charchoic;

system("cls");

printf("\n\t\t*******************菜单查询*******************");

printf("\n\t\t**********1-按类查询************");

printf("\n\t\t**********2-按姓名查询************");

printf("\n\t\t************************************************");

printf("\n\t\t请选择:

");

cin>>choic;

switch(choic)

{

case'1':

Show();break;

case'2':

name();break;

}

}

voidDelete()

{

printf("\n\n\t请输入要删除的用户姓名:

");

cin>>name1;

p4=head;

if(strcmp(p4->name,name1)==0)

{

p4=p4->next;

head=p4;

}

elseif(strcmp(p4->name,name1)!

=0)

{

while(strcmp(p4->next->name,name1)!

=0)

p4=p4->next;

p5=p4->next;

p4->next=p5->next;

free(p5);

}

}

voidInput()

{

s=(linklist)malloc(sizeof(listnode));

printf("\n\n\t请输入信息:

");

cout<<"name:

";

cin>>s->name;

cout<<"telephone:

";

cin>>s->telephone;

cout<<"emial:

";

cin>>s->emial;

cout<<"address:

";

cin>>s->address;

cout<<"choice:

";

cin>>s->choice;

if(head==NULL)printf("\n\n");

else

{

p8=head;while(p8!

=NULL&&strcmp(s->name,p8->name)!

=0&&strcmp(s->telephone,p8->telephone)!

=0)

p8=p8->next;

if(p8!

=NULL)

{printf("该用户已存在!

");

free(s);

}

}

if(head==NULL)

{

head=s;head->next=NULL;

}

else

{

r->next=s;

r=s;r->next=NULL;}

}

voidAlter()

{

printf("\n\n\t请输入姓名:

");

cin>>name1;

p3=head;

while(p3!

=NULL&&strcmp(name1,p3->name)!

=0)

p3=p3->next;

if(p3==NULL)

printf("\n\n\t该用户不存在!

");

else

{

printf("\n\n\t请输入该用户的新信息:

");

cout<<"name:

";

cin>>name1;

cout<<"telephone:

";

cin>>telephone1;

cout<<"emial:

";

cin>>emial1;

cout<<"address:

";

cin>>address1;

cout<<"choice:

";

cin>>choice1;

while(p9!

=NULL&&strcmp(name1,p9->name)!

=0&&strcmp(telephone1,p9->telephone)!

=0)

p9=p9->next;

if(p9==NULL)

{

strcpy(p3->name,name1);

strcpy(p3->telephone,telephone1);

strcpy(p3->emial,emial1);

strcpy(p3->address,address1);

p3->choice=choice1;

}

else

printf("该用户已存在!

");

}

}

voidSave()

{

intj;

fp=fopen("数据文件.txt","w");

for(p2=head,j=0;p2!

=NULL;j++,p2=p2->next)

{

strcpy(friends_list[j].name,p2->name);

strcpy(friends_list[j].telephone,p2->telephone);

strcpy(friends_list[j].emial,p2->emial);

strcpy(friends_list[j].address,p2->address);

friends_list[j].choice=p2->choice;

fwrite(&friends_list[j],sizeof(structfriends_list),1,fp);

}

}

voidmain()

{

creat();

do

{

printf("\n\n\n\n\t欢迎使用通讯录!

");

printf("\n\n\t\t请选择:

");

printf("\n\t\t1.显示通讯录");

printf("\n\t\t2.添加通讯录");

printf("\n\t\t3.编辑通讯录");

printf("\n\t\t4.删除通讯录");

printf("\n\t\t5.保存操作并退出");

printf("\n\n\n");

printf("\t请选择:

");

cin>>ch;

switch(ch)

{

case'1':

menu();

break;

case'2':

Input();

break;

case'3':

Alter();

break;

case'4':

Delete();

break;

case'5':

Save();

fclose(fp);

exit(0);

break;

default:

printf("\n\t请重新选择!

\n");

printf("\n\t**********************************");

break;

}

}

while

(1);

}

四.系统测试

1主界面

显示各个功能选项。

2显示内容

系统查询主页面。

按类查询页面。

需先存入通讯录信息才可显示查找内容,否则没有内容显示。

输入要查找人的类别,显示内容。

按姓名查找。

输入姓名,显示已存入的信息。

3添加内容

添加通讯录后保存。

保存之后便可以进行其他操作,如可查看、编辑、删除已存入的信息。

4编辑内容

若输入未存入的用户名称,则显示“该用户不存在”。

无法编辑。

已存入用户信息,则可进行编辑。

最后需保存。

编辑并保存成功后,可查看更改后的信息。

5删除内容

若输入为存入的用户名称,则无法运行,显示如上图。

已存入用户信息,可进行相应用户的删除。

6保存内容

保存后自动退出。

五.总结

1.编译运行过程中遇到的问题:

从文本中写入数据时可能指针指错位置,导致不能正常进行。

解决的办法是对指针进行必要跟踪,把该函数写入独立的cpp文件中,单个进行检查。

有时程序语言写错,运行时显示很多错误,需要逐个查看修改。

2.本程序的不足及改进方法:

本程序中包含的信息不够全面,比如年龄,性别,邮编等,都没有包含。

改进方法就是在设计程序时把这些内容都加进去。

同时,电子邮箱还可以建立链接,直接从通讯录中连接访问。

3.心得体会与收获:

通过这次系统地编写C程序,我对C语言的知识有了更深的认识,增强了程序的编写能力,巩固了课程知识。

在调试程序的过程中,也遇到不少问题,最后都能一一解决了。

从中也让我知道了要学好这门课程,要有较强的实践能力,这需要我们以后多加练习。

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

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1