注册 登录
编程论坛 数据结构与算法

求助!!!! 用双向链表作数据结构,编一个通讯录管理系统

迷茫◎-◎ 发布于 2008-02-26 16:55, 3705 次点击
设计目的:用〈〈数据结构〉〉中的双向链表作数据结构,结合C语言基本知识。编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。
设计内容:本系统应完成一下几方面的功能:
1)    输入信息——enter();
2)    显示信息———display( );
3)    查找以姓名作为关键字 ———search( );
4)    删除信息———delete( );
5)    存盘———save ( );
6)    装入———load( ) ;
设计要求:
1)    每条信息至包含 :姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项
2)    作为一个完整的系统,应具有友好的界面和较强的容错能力
3)    上机能正常运行,并写出课程设计报告
5 回复
#2
iyth615252008-03-16 15:55
最近我也要做这个系统,有时间一块讨论讨论!!!
#3
sunkaidong2008-03-16 16:26
我这有学生管理系统..很简单的一个..你可以改改
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct
{ long num;
char name[12];
int score[2];
int total;
}stu;
stu student[100];
void xuehao(stu *p,int N)
{   int i,i1,j,j1;
    stu a;
    for(i=0;i<N;i++)
    {   a=p[i];
        for(j=i;j<N;j++)
        {
            if(p[j].num<a.num)
            {
                a=p[j];
                j1=j;
            }
        }
        for(i1=j1;i1>i;i1--)
        {
            p[j1]=p[j1-1];
        }
       p[i]=a;
    }
}

void xzpx(stu*p,int N)
{
int i,j;
stu t;
for (i=0;i<N;i++)
{
for (j=i+1;j<N;j++)
if ((p+i)->total<(p+j)->total)
{ t=student[i];student[i]=student[j];student[j]=t;}
}
}

void xepx(int N)
{
int i,j,d;stu t;
d=(N+1)/2;
while(d>=1)
{
    for (i=d;i<N;i++)
    {
        t=student[i];
        j=i-d;
       while (j>=0&&strcmp(student[j].name,student[i].name)>0)
       {
         student[j+d]=student[j];
           j=j-d;
       }
          student[j+d]=t;
    }
d=d/2;
}
}

void main()
{
int N=0,H=0;
stu *p;
printf ("请输入本班人数:\n");
scanf ("%d",&N);
printf ("学号 姓名 高数 英语:\n");
for (p=student;p<student+N;p++)
{
scanf ("%ld%s%d%d",&p->num,p->name,&p->score[0],&p->score[1]);
printf ("总分:\n");
p->total=p->score[0]+p->score[1];
printf (" %d\n",p->total);
}
for (;;)
{
printf ("请选择您要进行的操作:\n1:按总分高低排名。\n2:按姓名字母顺序排列。\n3:按学号排列\n4:退出\n");
p=student;
scanf ("%d",&H);
switch(H)
{
case 1:xzpx(p,N);break;
case 2:xepx(N);break;
case 3:xuehao(p,N);break;
default:exit(0);
}
printf ("学号 姓名 高数 英语 总分:\n");
for (p=student;p<student+N;p++)
printf ("%-6ld%-10s%-6d%-6d%-6d\n",p->num,p->name,p->score[0],p->score[1],p->total);
}
}
#4
jinxiaoqiang2009-10-04 09:02
大哥,你是谁???不会和我是一个班的吧???呵呵  我找这个呢。
#5
syshmily5202011-08-29 15:01
我们现在也让做这个
#6
z6162240922012-12-27 16:17
我也急求啊
1