| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:C编写通讯录中存在的种种问题,困扰我很久了,求各位同仁帮忙!!!!!(对 ...
只看楼主 加入收藏
Storm0305
Rank: 1
等 级:新手上路
帖 子:16
专家分:1
注 册:2011-3-5
结帖率:50%
收藏
 问题点数:0 回复次数:0 
C编写通讯录中存在的种种问题,困扰我很久了,求各位同仁帮忙!!!!!(对不起大家我没分了,帮帮新人吧,感激)
#include<stdio.h>
#include<cstdlib>               /*主要存在的问题:存储,读取结束的问题,删除,排序无法实现*/
#include<string.h>
#define SIZE 10
#define L sizeof(struct student)
void save();
void read();
void seek();
void del();
void order();
struct student
{   
    char sex[4];
    int num;
    char name[10];
    char phone[11];
}stu[SIZE];

int i,temp;
FILE*fp;

void main()
{
    int n,j=1,l=2;

while(1)
{
menu:
    printf("菜单:(请输入编号)\n1.存入数据\n2.读取数据\n3.查找数据\n4.插入数据\n5.删除数据\n您的选项:");
    scanf("%d",&n);
    switch (n)
    {
    case 1:save();break;
    case 2:read();break;
    case 3:seek();break;
    case 4:save();break;
    case 5:del();break;
    default:printf("错误!请重新输入\n");goto menu;
    }
}
}
         
void save()                                  /*存储函数*/
{
    system("CLS");
    printf("请输入数据:\n");
    printf("性别 学号 姓名 电话\n");
    for(i=0;i<SIZE;i++)
    {
        scanf("%s %d %s %s",stu[i].sex,&stu[i].num,stu[i].name,stu[i].phone);   
        if(strcmp(stu[i].sex,"end")==0)break;  /*希望以此结束输入,但是无法实现 */
    }   
    if((fp=fopen("file1.txt","a"))==NULL)
            fp=fopen("file1.txt","w");
    for(i=0; i<SIZE;i++)
        fwrite(&stu[i],L,1,fp);
        fclose(fp);
        system ("pause");
    }
void read()                                     /*读取函数*/
{
    system("CLS");
    fp=fopen("file1.txt","r");
    printf("性别  学号  姓名  电话\n");
    for(i=0;i<SIZE;i++)
    {
        fread(&stu[i],L,1,fp);
        if(strcmp(stu[i].sex,"end")==0)break;  /*但是同样的结束方式在此函数中却可以实现*/
    }
    order();
    for(i=0;i<SIZE;i++)        
    printf("%s %d %s %s\n",stu[i].sex,stu[i].num,
            stu[i].name,stu[i].phone);
    fclose(fp);
system ("pause");
}
void seek()                                    /*查询函数,无问题*/
{
    system("CLS");
    int a;
    if((fp=fopen("file1.txt","r"))==NULL)
    {
        printf("can't open file\n");
        return;
    }
    printf("请输入所查找学生的4位学号:\n");
    scanf("%d",&a);
    for(i=0;i<SIZE;i++)
    {
        fread(&stu[i],L,1,fp);
        if (stu[i].num==a)
        {
            printf("%s %d %s %s\n",stu[i].sex,stu[i].num,
            stu[i].name,stu[i].phone);
            break;
        }
        else {printf("无此数据\n");break;}   
    }
    fclose(fp);
system ("pause");
}

void del()                                                    /*删除函数*/
{
    system("CLS");
    int a;
    if((fp=fopen("file1.txt","a+"))==NULL)
    {
        printf("can't open file\n");
        return;
    }
    printf("请输入所删除学生的4位学号:\n");
    scanf("%d",&a);
    for(i=0;i<SIZE;i++)
    {
        fread(&stu[i],L,1,fp);                             
        if(stu[i].num==a)              /*无法实现*/
        {
           for(;i<SIZE;i++)
              stu[i]=stu[i+1];
           break;
        }
    }
    for(i=0;i<SIZE;i++)
    fwrite(&stu,L,1,fp);
    system ("pause");
}

 
void order()                          /*排序同样无法实现*/
{
    int j;
    struct student a[SIZE],temp2;
     for(i=0;i<SIZE;i++)
        a[i]=stu[i];                    /*结构体是否能整体赋值?*/
        for(i=0;i<SIZE;i++)
        for(j=0;j<SIZE-1;j++)
        {
            if(stu[i].num>stu[i+1].num)
            {temp2=stu[i];stu[i]=stu[i+1],stu[i+1]=temp2;}
        }
        for(i=0;i<SIZE;i++)
            stu[i]=a[i];
}
搜索更多相关主题的帖子: 通讯录 phone 同仁 
2011-05-14 12:04
快速回复:C编写通讯录中存在的种种问题,困扰我很久了,求各位同仁帮忙!!!! ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030171 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved