C语言课程设计 通讯录.docx

上传人:b****8 文档编号:9673823 上传时间:2023-05-20 格式:DOCX 页数:14 大小:17.75KB
下载 相关 举报
C语言课程设计 通讯录.docx_第1页
第1页 / 共14页
C语言课程设计 通讯录.docx_第2页
第2页 / 共14页
C语言课程设计 通讯录.docx_第3页
第3页 / 共14页
C语言课程设计 通讯录.docx_第4页
第4页 / 共14页
C语言课程设计 通讯录.docx_第5页
第5页 / 共14页
C语言课程设计 通讯录.docx_第6页
第6页 / 共14页
C语言课程设计 通讯录.docx_第7页
第7页 / 共14页
C语言课程设计 通讯录.docx_第8页
第8页 / 共14页
C语言课程设计 通讯录.docx_第9页
第9页 / 共14页
C语言课程设计 通讯录.docx_第10页
第10页 / 共14页
C语言课程设计 通讯录.docx_第11页
第11页 / 共14页
C语言课程设计 通讯录.docx_第12页
第12页 / 共14页
C语言课程设计 通讯录.docx_第13页
第13页 / 共14页
C语言课程设计 通讯录.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计 通讯录.docx

《C语言课程设计 通讯录.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 通讯录.docx(14页珍藏版)》请在冰点文库上搜索。

C语言课程设计 通讯录.docx

C语言课程设计通讯录

C语言课程设计论文

 

 

 

题   目:

      学生通讯录管理系统   

班  级:

      0524092班      

组  号:

         第十小组          

姓名(学号):

   朱会彬(052409257)       吴江波(052409251)吴建鹏(052409250)               

高阳阳(052409240)姚浩(052409253)

谢敬奇(052409252)                

指导教师:

          张玉花       

 

通讯录管理系统

【设计目的】

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

数据包括:

姓名,电话,地址,邮编及e-mail。

可对记录中的内容进行修改。

可增加或删除记录。

可显示所有保存的记录。

可以按姓名或电话进行查询。

【设计思路】

根据要求,编号数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。

 【总体设计】

图1 系统功能模块图

 

 

 

 【详细设计】

主函数

主函数设计要求简洁,只提供部分提示语和函数的调用

【程序】

     

                             图2. 主函数流程图

 

 

 

附录:

源代码

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"conio.h"

#include"stdlib.h"

#definenull0

structrecord

{

charname[20];

charphone[20];

charadress[40];

charpostcode[10];

chare_mail[30];

}student[500];

structLinkList

{

 structrecordUS;

 structLinkList*next;

}a;

 structLinkList*head=null;

intnum=0;

FILE*fp;

intmenu_select();

intadduser();

intlist();

intsearch();

intdisplay();

intadd();

intlistbyname();

intdele();

intsave();

intexit();

voidmain()

{

 

 system("cls");

 for(;;)

 {

 switch(menu_select())

   {

    case0:

adduser();break;

    case1:

list();break;

    case2:

search();break;

    case3:

display();break;

    case4:

add();break; 

    case5:

listbyname();break;

    case6:

dele();break;

    case7:

save();break;

       case8:

exit(0);

   }

   }

    

}

menu_select()

{

 chars[80];

 inta;

 printf("*_*pressanykeyentermenu!

*_*\n");

 getch();

 system("cls");

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

 printf("\t\t   0.输入记录\n");

 printf("\t\t   1.显示记录 \n");

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

 printf("\t\t   3.按电话号码查找\n");

 printf("\t\t   4.插入记录\n");

 printf("\t\t   5.按姓名排序\n");

 printf("\t\t   6.删除记录\n");

 printf("\t\t   7.记录保存文件\n");

 printf("\t\t   8.Quit\n");

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

   do{

       printf("\n   Enteryouchoice(0~11):

");

 scanf("%s",s);

 a=atoi(s);

 }

   while(a<0||a>11);

   returna;

}

adduser()

{

 printf("\n\t\t****************请输入用户信息****************\n");

 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')

 adduser();

return(0);

}

 list()

{

 inti;

 system("cls");

 if(num!

=0)

 {

 printf("\n\t\t***************以下为通讯录所有信息************");

 for(i=0;i

 { 

  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

  {

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

   system("pause");

  }

 }

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

 }

 else

 printf("\n\t\t通讯录中无任何纪录");

 printf("\n\t\t按任意键返回主菜单:

");

 getch();

 return(0);

}

search()

{

 intmark=0;

 inti;

 inta=0;

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

 charname[20];

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

");

 scanf("%s",name);

 for(i=a;i

 {

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

  {

   printf("\n\t\t*************以下是您查找的用户信息***********");

   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)

  {

  printf("\n\t\t是否继续查找相同名字的用户信息:

(y/n)");

  if(getch()=='y')

   {

   a=i;

   continue;

   }

   else

   return(0);

  }

  else

  {

  printf("\n\t\t按任意键返回主菜单");

  getch();

  return(0);

  }

  }

 }

 if(mark!

=0)

 {

 printf("\n\t\t没有相同姓名的用户纪录");

 printf("\n\t\t按任意键返回主菜单");

 getch();

 return(0);

 }

 else

 {

 printf("\n\t\t没有相同姓名的用户纪录");

 printf("\n\t\t按任意键返回主菜单");

 getch();

 return(0);

 }

}

display()

{

intmark=0;

inti;

inta=0;

printf("\n\t\t******************按电话查找******************");

charphone[10];

printf("\n\t\t请输入电话号码:

");

scanf("%s",phone);

for(i=0;i

{

 if(strcmp(student[i].phone,phone)==0)

 {

 printf("\n\t\t**************以下是您查找的用户信息**********"); 

 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(0);

 }

}

if(mark==0)

{

 printf("\n\t\t没有改用户的信息");

 printf("\n\t\t按任意键返回主菜单");

 getch();

 return(0);

}

return(0);

}

add()

{

 inti;

 if((fp=fopen("student.bin","wb"))==NULL)

 {

 printf("\n\t\t文件打开失败");

 }

 for(i=0;i

 {

 if(fwrite(&student[i],sizeof(structrecord),1,fp)!

=1)

  {

  printf("\n\t\t写入文件错误!

\n");

  }

 printf("\n\t\t****************请输入用户信息****************\n");

 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')

  adduser();

 return(0);

 }

 fclose(fp);

 printf("\n\t\t通讯录文件已保存");

 printf("\n\t\t按任意键退出程序\n\t\t");

 exit(0);

 return(0);

}

voiddeletebyphone()

{

inti,j;

intdeletemark=0;

charphone[20];

 printf("\n\t\t请输入要删除用户电话号码:

");

 scanf("%s",phone);

 if(num==0)

 {

 printf("\n\t\t对不起,文件中无任何纪录");

 printf("\n\t\t按任意键返回主菜单");

 getch();

 return;

 }

 for(i=0;i

 {

 if(strcmp(student[i].phone,phone)==NULL)

 {

 printf("\n\t\t以下是您要删除的用户纪录:

");

 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

  student[j]=student[j+1];

  num--;

  deletemark++;

  printf("\n\t\t删除成功");

  printf("\n\t\t是否继续删除?

(y/n)");

 if(getch()=='y')

  deletebyphone();

 return;

 }

 else

 return;

 }

 continue;

 }

 if(deletemark==0)

 {

 printf("\n\t\t没有该用户的纪录");

 printf("\n\t\t是否继续删除?

(y/n)");

 if(getch()=='y')

 deletebyphone();

 return;

 }

}

voiddeletebyname()

{

inta=0;

intfindmark=0;

intj;

intdeletemark=0;

inti;

charname[20];

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

");

 scanf("%s",name);

for(i=a;i

{

 if(strcmp(student[i].name,name)==NULL)

 {

 printf("\n\t\t以下是您要删除的用户纪录:

");

 findmark++;

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

 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

  student[j]=student[j+1];

 num--;

 deletemark++;

 printf("\n\t\t删除成功");

 if((i+1)

 {

  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)

 {

  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')

 deletebyphone();

 return;

 return;

}

elseif(findmark!

=0)

{

 printf("\n\t\t没有重名信息");

 printf("\n\t\t没有该用户的纪录");

 printf("\n\t\t是否继续删除?

(y/n)");

 if(getch()=='y')

 deletebyphone();

 return;

 return;

 }

}

dele()

{

charchoic;

 printf("\n\t\t1-按电话号码删除2-按姓名删除");

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

");

 choic=getch();

switch(choic)

{

 case'1':

deletebyphone();break;

 case'2':

deletebyname();break;

}

 return(0);

}

listbyname()

{

 inti,j;

 structrecordtmp;

 for(i=1;i

 {

 if(strcmp(student[i].name,student[i-1].name)<0)

 {

 tmp=student[i];

 j=i-1;

 do

 {

  student[j+1]=student[j];

  j--;

 }while((strcmp(tmp.name,student[j].name)<0&&j>=0));

 student[j+1]=tmp;

 }

 }

 printf("\n\t\t排序成功,是否显示?

(y/n)");

 if(getch()=='y')

 list();

 return(0);

}

save()

{

 intj;

 FILE*fp;

 fp=fopen("student.txt","w");

 if(fp==NULL)

     printf("can'topenthefile.");

 if(num!

=0)

 {

   for(j=0;j

  {

   

  fwrite(student,sizeof(student),1,fp);

  }

 }

 printf("保存成功!

");

 fclose(fp);

 return(0);

}  

 

 

 

 

【设计体会】

通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。

它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。

同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。

因为我们学习知识就是为了实践。

而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。

运用《C语言》中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理系统。

通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用

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

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2