回 帖 发 新 帖 刷新版面

主题:求各位指点

题目:通讯录管理系统
功能:录入联系人信息(包括姓名、电话号码、地址、备注等);通讯录管理系统要求实现以下功能:
      1、输入每一位联系人记录,将其信息存入文件中。
2、查询所有联系人的信息,并按可选的自定义规则进行排序;
3、记录修改,将修改的记录信息保存于文件中。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。
2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上。
3、完成上述查询(姓名、电话号码等)、信息删除与修改功能。
4、进一步要求,修改记录设置密码操作。
要求:1、用C语言实现程序设计;
2、利用结构体数组实现联系人信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
课程设计实验报告要求:
1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分 。
2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

回复列表 (共4个回复)

沙发



我编的,但运行不了
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Telephone
{
 char number[200];
 char name[20];
 char fia[20];
 char addrass[20];
 char mail[20];
 char telephone[20];
 struct Telephone *next;
}student[50];
typedef struct Telephone TEL;
TEL *head=NULL;
void showmenu();                  /*菜单*/
void Appenditem();                /*添加条目*/
void print();                     /*输出条目*/
void Finditem1();                 /*查找条目( 按姓名 )*/
void Correct();                   /*修改条目*/
void Removeitem();                /*删除信息*/                      
void Saveandfree();               /*保存到文件*/
void Open();                      /*打开文件*/
 main()
{
 char ch;
 Open();                       /*打开文件*/
 while(1)
 {
  showmenu();               /*显示菜单*/
  scanf(" %c",&ch);
  switch(ch)
  {
  case '1':Appenditem();    /*添加条目*/
   break;
  case '2':print();         /*输出条目*/
   break;
  case '3':Finditem1();     /*查找条目1.按姓名*/
   break;
  case '4': Removeitem();   /*删除信息*/
   print();              /*输出删除后的结果*/
   break;
  case '5': Correct();      /*修改信息*/
  break;
  case '0':Saveandfree();   /*保存并释放内存*/
   exit(0);              /*退出*/
   break;
  default:
   printf("选择错误!");
   break;
  }
 }
}
 
/*菜单*/
void showmenu()
{
 printf("\n*********************通讯录**********************\n");
  printf("*       \t1.录入信息                      *\n");
  printf("*       \t2.输出信息                      *\n");
  printf("*       \t3.按姓名查询                    *\n");
  printf("*       \t4.删除信息                      *\n");
  printf("*       \t5.修改信息                      *\n");
  printf("*       \t0.保存并退出!                  *\n");
 printf("*************************************************\n");
 printf("\t请选择:\n");
}
 
/*添加条目*/
void Appenditem()
{
 TEL *p1=NULL,*p2=NULL;
 p1=(TEL *)malloc(sizeof(TEL)); /*申请结点*/
 printf("输入编号:\n");
 scanf("%s",p1->number);
 printf("输入姓名:\n");     /*添加信息*/
 scanf("%s",p1->name);
 printf("输入单位:\n");
 scanf("%s",p1->fia);
 printf("输入通讯地址:\n");
 scanf("%s",p1->addrass);
 printf("输入邮箱:\n");
 scanf("%s",p1->mail);
 printf("输入联系电话:\n");
 scanf("%s",p1->telephone);
 p1->next=NULL;                                     /*保存到链表*/
 if(head==NULL)
 {
  head=(TEL *)malloc(sizeof(TEL));               /*申请空间*/
  head->next=p1;
 }
 else
 {
  for(p2=head;p2->next!=NULL;p2=p2->next);       /*找到结点尾*/
  p2->next=p1;
 }
 printf("此信息已添加!");
}
 
/*输出学生信息*/
void print()
{
 TEL *p=NULL;
 if(head==NULL)
 {
  printf("此通讯录中无记录,请输入记录后在使用本功能!\n");
  return;
 }
 printf("*******************通讯录*********************\n"); /*输出信息*/
  printf("编号\t姓名\t单位\t通信地址\t 邮箱\t联系电话\n");
 for(p=head->next;p!=NULL;p=p->next)
  printf("%s\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->fia,p->addrass,p->mail,p->telephone);  
}
 
/*查找信息1.按姓名*/
void Finditem1()
{
 TEL *p;
 char findname[20];
 printf("请输入要查找的姓名:\n");
 scanf("%s",findname);
 printf("********************通讯录*********************\n");
  printf("编号\t姓名\t单位\t通信地址\t 邮箱\t联系电话\n");
 for(p=head->next;p!=NULL;p=p->next)
 {
  if(strcmp(p->name,findname)==0)
  printf("%s\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->fia,p->addrass,p->mail,p->telephone);  
 }
}
/*修改信息*/
void Correct()
{
TEL *p1(TEL *head);
{   
 struct Telephone *p1;
 char name[20];
 printf("输入要修改的人名:\n");
 scanf("%s",name);
 p1=head;
 int flag=0;
 while(p1!=NULL)
 {
  if(strcmp(p1->name,name)==0)
  {   
  printf("输入新编号:\n");
 scanf("%s",p1->number);
 printf("输入新姓名:\n");     /*添加新信息*/
 scanf("%s",p1->name);
 printf("输入新单位:\n");
 scanf("%s",p1->fia);
 printf("输入新通讯地址:\n");
 scanf("%s",p1->addrass);
 printf("输入邮箱:\n");
 scanf("%s",p1->mail);
 printf("输入新联系电话:\n");
 scanf("%s",p1->telephone);
   flag=1;
  } 
  p1=p1->next;
 }
}
printf("修改完成");
}
 

板凳

/*删除信息*/
void Removeitem()
{
 char findname[20];                                     /*先查找 后删除*/
TEL *p=head,*pr=head;
 printf("请输入要删除的姓名:\n");
 scanf(" %s",findname);
  if (head== NULL)    
  {
   printf("无此结点!\n");
   return;
  }
  while ((strcmp(p->name,findname)!=0 )&& p->next != NULL)
   {
    pr =p;
    p =p->next;
   }
  if(strcmp(p->name,findname)==0)
  {if(p==head)
  head=p->next;                /*删除头结点*/
  else
         pr->next=p->next;       /*删除中间或尾结点*/
    free(p);
  }else
         printf("没有要删除的对象\n");
printf("已删除");
}
 
/*保存链表信息到文件并释放内存空间*/
void Saveandfree()              
{
 TEL *p=NULL;
 FILE *fp;
 char *Book="books.txt";
 if(head==NULL)
 {
  printf("\n记录为空!\n");
  return;
 }
 else
  p=head->next;
  if((fp=fopen(Book,"wb+"))==NULL)
   {
    printf("\n打不开文件!\n");
    return;
   }
  while(p!=NULL)                              /*保存信息*/
   {
    fwrite(p,sizeof(TEL),1,fp);
    p=p->next;
   }
  printf("保存完毕!");
  fclose(fp);
/*释放链表空间*/
  for(;head->next!=NULL;)
  {
   p=head->next;
   head->next=head->next->next;
   free(p);
  }
  free(head);
}
/*文件信息输出到链表*/
void Open()
{
 FILE *fp;
 TEL *p1=NULL,*p2=NULL,*temp=NULL;
 if((fp=fopen("books.txt","rb+"))==NULL)
  {
   printf("\n*******************通讯录******************\n");
   return;
  }
 head=(TEL *)malloc(sizeof(TEL));
 head->next=NULL;
 temp=p2=head;
 while(! feof(fp))                            /*循环读取*/
  {
   p1=(TEL *)malloc(sizeof(TEL));
   temp=p2;
   p2->next=p1;
   p2=p1;
   fread(p1,sizeof(TEL),1,fp);
  }
 temp->next=NULL;
 fclose(fp);                                   /*关闭文件*/
}

3 楼

求指点呀

4 楼

没人在么??

我来回复

您尚未登录,请登录后再回复。点此登录或注册