| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 570 人关注过本帖
标题:帮忙改错
只看楼主 加入收藏
woshilaoshi
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-6-24
收藏
 问题点数:0 回复次数:6 
帮忙改错
/*头文件*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <string.h>
#define MAX_NUM 2000
#define DAT_FILENAME "Information.txt"
/*定义数据结构*/
struct date
{
    int year;    /*年*/
    int month;   /*月*/
    int day;     /*日*/
};
typedef struct student
{
    int ID;                 /*学号*/
    char Name[8];           /*姓名*/
    int age;                /*年龄*/
    char xb;                /*性别*/
    char telephone[10];     /*电话*/
    char address[20];       /*地址*/
    struct date birthday;   /*生日*/
    char email[20];         /*电子邮件*/
}STUDENT;
/******函数原型******/
int FindstudentID(STUDENT stu[],int findID,int Max);
int FindstudentName(STUDENT stu[],char findname[],int Max);
void DisplayInformation(STUDENT stu[],int Max);
void DispMainmenu();
int InformationInput(STUDENT stu[],int cn);
void QueryInformation(STUDENT stu[],int Max);
void EditInformation(STUDENT stu[],int Max);
void Save(STUDENT stu[],int Max);
int Read(STUDENT stu[]);
void Sort(STUDENT stu[],int Max);
void Delete(STUDENT stu[],int Max);
/*显示主菜单*/
void DispMainMenu()
{
    printf("*****信息管理系统*****\n");
    printf("\t1--信息录入 \t2--信息修改\n");
    printf("\t3--信息查询 \t4--保存到数据文件\n");
    printf("\t5--打开数据文件 \t0--推出\n");
    printf("**********************");
    printf("请选择(0--5):");                          

}
/*显示所有学生信息*/
void DisplayInformation(STUDENT stu[],int Max)
{
    int i;
    printf("\n序号\t学号\t姓名\t年龄\t性别\t电话\t地址\t生日\tEMAIL\n");
    for(i=0;i<Max;i++)
    {printf("%d\t%d\t%s\t%d\t",i+1,stu[i].ID,stu[i].Name,stu[i].age);
    printf("%c\t%s\t%s\t",stu[i].xb,stu[i].telephone,stu[i].address);
    printf("%d%d%d",stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day);
    printf("\t%s\n",stu[i].email);
    }
printf("\n");
}
/*查找指定学号的学生信息*/
int FindstudentID(STUDENT stu[],int findID,int Max)
{
    int i;
    for(i=0;i<Max;i++)
    {
        if(stu[i].ID==findID)
            break;
    }
    if(i<Max)      /*找到I《MAX,说明是执行BREAK后结束循环,即找到指定学生*/
        return i;
    else
        return -1;
}
/*查找指定姓名的学生*/
int FindstudentName(STUDENT stu[],char findname[],int Max)
{
    int i;
    for(i=0;i<Max;i++)
    {
        if(strcmp(stu[i].Name,findname)==0)
            break;
    }
    if(i<Max)                      /*找到I《MAX,说明是执行BREAK后结束循环,即找到指定学生*/
        return i;
    else
        return -1;
}
/*学生信息录入*/
int InformationInput(STUDENT stu[],int cn)
{/*cn为原有记录数*/
    int number,i;
    printf("\n请输入本次录入人数:");
    scanf("%d",&number);
    if(number>MAX_NUM)
    {
        printf("您输入的人数太多,大于%d!\n",MAX_NUM);
        return(0);
    }
    for(i=cn;i<number;i++)  /*输入number个学生的信息*/
    {
        printf("请输入第%d个学生的学号(8个字符以内):",i+1);
        scanf("%d",&stu[i].ID);
        printf("\t\t\t姓名:\t");
        scanf("%s",stu[i].Name);
        printf("\t\t\t年龄:\t");
        scanf("%d",&stu[i].age);
        printf("\t\t\t性别(男M,女W):\t");
        scanf("%s",&stu[i].xb);
        printf("\t\t\t电话:\t");
        scanf("%s",stu[i].telephone);
        printf("\t\t\t地址:\t");
        scanf("%s",stu[i].address);
        printf("\t\t\t生日:\t");
        scanf("%d%d%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day);
        printf("\t\t\temail:\t");
        scanf("%s",stu[i].email);
    }
    printf("您输入的信息是:\n");
    DisplayInformation(stu,number+cn);
    Sort(stu,number+cn);
}
/*学生信息查询*/
void QueryInformation(STUDENT stu[],int Max)
{
    char select;
    int i;
    int findID;
    char findname[8];
    printf("**请选择查询方式**\n");
    printf("\t1--按学号查询;\t2--按姓名查询\n");
    printf("******************\n");
    printf("请选择(1--2):");     /*显示菜单信息*/
    select=getchar();
    getchar();
    switch(select)
    {
    case'1':;
            printf("\n按学号查询\n请输入学号:");
            scanf("%d",&findID);
            if((i=FindstudentID(stu,findID,Max))!=-1)/*找到指定学号学生*/
            {
                printf("\n查询结果如下:\n");
                printf("\n学号\t姓名\t年龄\t性别\t电话\t地址\t生日\t电子邮件\n");
                printf("%d\t%s\t%d\t",stu[i].ID,stu[i].Name,stu[i].age);
                printf("%c\t%s\t%s\t",stu[i].xb,stu[i].telephone,stu[i].address);
                printf("%d\t%d\t%d",stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day);
                printf("\t%s\n",stu[i].email);
            }
            else   /*没有找到*/
                printf("您输入的学号不存在\n");
            break;
    case'2':;
                printf("\n按姓名查询\n请输入姓名:");
            scanf("%s",findname);
            if((i=FindstudentName(stu,findname,Max))!=-1)/*找到指定姓名学生*/
            {
                printf("\n查询结果如下:\n");
                printf("\n学号\t姓名\t年龄\t性别\t电话\t地址\t生日\t电子邮件\n");
                printf("%d\t%s\t%d\t",stu[i].ID,stu[i].Name,stu[i].age);
                printf("%c\t%s\t%s\t",stu[i].xb,stu[i].telephone,stu[i].address);
                printf("%d\t%d\t%d",stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day);
                printf("\t%s\n",stu[i].email);
            }
            else   /*没有找到*/
                printf("您输入的姓名不存在\n");
            break;
    default:;
                printf("选择错误\n");
    }
}
/*修改学生信息*/
void EditInformation(STUDENT stu[],int Max)
{
    int i;
    int findID;  /*findID-要查找的学生的学号*/
    char select;
    printf("\n请输入学生的学号:");
    scanf("%d",&findID);
    if((i=FindstudentID(stu,findID,Max))!=-1)  /*找到指定学号的学生*/
    {
        printf("******请选择查询修改的方式*****\n");
        printf("\t1--修改信息;\t2--删除信息\n");
        printf("*******************************\n");
        printf("请选择(1--2):");
        select=getchar();
        getchar();
        switch(select)
        {case'1':; /*修改信息*/
             printf("您选择的是信息修改:\n");
             printf("姓名:%s\n",stu[i].Name);
             printf("原信息:学号:%d\t年龄:%d\t性别:%c\n",stu[i].ID,stu[i].age,stu[i].xb);
             printf("\t电话:%s\t地址:%s\temail:%s\n",stu[i].telephone,stu[i].address,stu[i].email);
             printf("请输入新信息\n");
             printf("学号:\t");
             scanf("%d",&stu[i].ID);
             printf("请输入姓名:\n");
             scanf("%s",stu[i].Name);
             printf("年龄:\n");
             scanf("%d",&stu[i].age);
             printf("性别:(男M女W)\n");
             scanf("%s",&stu[i].xb);
             printf("电话:\n");
             scanf("%s",&stu[i].telephone);
             printf("地址:\n");
             scanf("%s",&stu[i].address);
             printf("生日:\n");
             scanf("%d%d%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day);
             printf("email:\n");
             scanf("%s",stu[i].email);
             break;
        case'2':;/*删除信息*/
             printf("你选择的是删除:\n");
             Delete(stu,i,Max);
             break;
        }
    }
    else   /*没有找到学号正定的记录*/
        printf("您输入的学号不存在!\n");
}
/*按学号排列*/
void Sort(STUDENT stu[],int Max)
{/*冒泡法排序*/
    int i,j;
    STUDENT p;
    for(i=0;i<Max-1;i++)
        for(j=0;j<Max-1-i;j++)
            if(stu[j].ID>=stu[j+1].ID)
            {
                p=stu[j];
                stu[j]=stu[j+1];
                stu[j+1]=p;
            }
        DisplayInformation(stu,Max);/*显示排序后学生信息*/
}
/*保存数据到文件中*/
void Save(STUDENT stu[],int Max)
{
    int i;
    FILE *fp;
    if((fp=fopen(DAT_FILENAME,"w+"))!=NULL)  /*以w+方式打开文件*/
    {
        for(i=0;i<Max;i++)
            fwrite(&stu[i],sizeof(STUDENT),1,fp);  /*将STU[i]写入文件*/
        fclose(fp);
    }
    else
        printf("cannot open file!\n");
}
/**打开数据文件**/
int Read(STUDENT stu[])
{
    int i;
    int result=-1;
    FILE *fp;
    if((fp=fopen(DAT_FILENAME,"r"))!=NULL)
    {
        i=0;
        /*读文件中的内容到STU数组中*/
        while(fread(&stu[i],sizeof(STUDENT),1,fp)!=0)
            i++;    /**读出数据加1*/
        result=i;   /*读出记录总数*/
        fclose(fp);
    }
    else
        printf("cannot open file!\n");
    return result;   /*返回读出记录总数*/
}
/*删除信息*/
void Delete(STUDENT stu[],int n,int Max)
{
    FILE *fp;
    int j;
    if((fp=fopen(DAT_FILENAME,"rb"))==NULL)   /*打开数据文件*/
    {
        printf("cannot open file!\n");
        exit(0);
    }
    printf("\noriginal data:\n");
    DisplayInformation(stu,Max);       /*显示删除前数据信息*/
    /*删除第N个学生的信息,数据STU中STU[N]之后的元素向前移一个元素的位置*/
    for(j=n;j<Max-1;j++)
    {
        strcpy(stu[j].Name,stu[j+1].Name);
        strcpy(stu[j].telephone,stu[j+1].telephone);
        stu[j].age=stu[j+1].age;
        stu[j].xb=stu[j+1].xb;
        stu[j].birthday.year=stu[j+1].birthday.year;
        stu[j].birthday.month=stu[j+1].birthday.month;
        stu[j].birthday.day=stu[j+1].birthday.month;
        strcpy(stu[j].address,stu[j+1].address);
        strcpy(stu[j].email,stu[j+1].email);
    }
    Max=Max-1;       /*删除后学生数-1*/
    printf("Now,conent of file:\n");
    Save(stu,Max);        /*保存信息*/
    DisplayInformation(stu,Max);     /*显示删除后的学生信息*/
}
/***主函数**/
int main()
{

    char select;
    STUDENT stu[MAX_NUM];
    int current_number=0;
    while(select!='o')
    {
         system("cls");    /*清屏*/
         DispMainMenu();    /*显示主菜单*/
         select=getchar();
         getchar();
         switch(select)
         {
         case'0':;
                   printf("\n退出!\n");
                   _beep(300,400);
                   continue;
         case'1':;
                   printf("选择的是信息录入!\n");
                   current_number=InformationInput(stu,current_number);
                   break;
         case'2':;
                   printf("选择的是修改!\n");
                   EditInformation(stu,current_number);
                   break;
         case'3':;
                   printf("选择的是信息查询\n");
                   QueryInformation(stu,current_number);
                   break;
         case'4':;
                   printf("选择的是保存信息到文件\n");
                   Save(stu,current_number);
                   break;
         case'5':;
                   printf("选择的是打开文件\n");
                   if(current_number=Read(stu)==-1)
                       current_number=0;
                   else
                       DisplayInformation(stu,current_number);
                   break;
         default:;
                   printf("\n选择错误!\n");
         }
    }
       return(0);
}

            
只有一个错误。。。
Delete
函数的
不懂

大虾帮忙。。。
搜索更多相关主题的帖子: 改错 
2008-06-24 15:51
woshilaoshi
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-6-24
收藏
得分:0 
啊?
代码是书上的
我做课设
改了点
2008-06-24 15:57
woshilaoshi
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-6-24
收藏
得分:0 
搞这点代码查点把我命要了。。。
还要自己改。。。
完了还出了从来没见过的错误。。。
2008-06-24 16:06
界水乘风
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-24 16:11
woshilaoshi
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-6-24
收藏
得分:0 
原来是函数声明的时候啊
太感谢咯。。。。
2008-06-24 16:12
快速回复:帮忙改错
数据加载中...
 
   



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

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