标题:编译没有问题但是在dos下执行时突然弹出runtime error。请高手帮帮忙,菜鸟 ...
只看楼主
movesky
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-6-29
 问题点数:0 回复次数:0 
编译没有问题但是在dos下执行时突然弹出runtime error。请高手帮帮忙,菜鸟在此谢过了。
程序代码:
#include <stdio.h>   
#include <stdlib.h>
#include <string.h>
struct cangku//定义仓库结构
{
    int coding;
    char name[20];
    char introdution[50];
    int sum;  
};

typedef struct cangku Cangku;


int Input(Cangku t[]);
void List(Cangku t[],int n);
void SearchOnName(Cangku t[],int n);
int DeleteRecord(Cangku t[],int n);
int AlterRecord(Cangku t[],int n);
int AddRecord(Cangku t[],int n);
void SortOncoding(Cangku t[],int n);
void SortOnsum(Cangku t[],int n);
void SaveRecord(Cangku t[],int n);
int LoadRecord(Cangku t[]);
int LoadRecord1(Cangku t[]);
void Save(Cangku t[],int n);
void Load(Cangku t[],int n);
void Load1(Cangku t[]);
int Menu_select();
void  logface();

void logface()
    {
        printf("\n\n\n\n");
        printf("\t\t\t*--------------------------------------*\n");
        printf("\t\t\t|  *********************************** |\n");
        printf("\t\t\t|  *                                 * |\n");
        printf("\t\t\t|  *      欢迎使用仓库管理系统       * |\n");
        printf("\t\t\t|  *                                 * |\n");
        printf("\t\t\t|  *********************************** |\n");
        printf("\t\t\t*--------------------------------------*\n");


    }
void main()
{ 

    Cangku ck[50];
    int length,w=1,a;
     a=5409;
    logface();
    printf("\t\t\t\t请输入密码:");
    scanf("%d",&a);
        system("cls");
   
    while(w)
    {
        switch(Menu_select())
        {
            case 1:   length=Input(ck);
                    SaveRecord(ck,length);//录入仓库初始记录
            break;
            case 2:   length=LoadRecord(ck);
                    SearchOnName(ck,length);
            break;
            case 3:   length=LoadRecord(ck);
                    length=DeleteRecord(ck,length);
                    SaveRecord(ck,length);
            break;
            case 4:   length=LoadRecord(ck);
                    length=AlterRecord(ck,length);
                    SaveRecord(ck,length);
            break;
            case 5:   length=LoadRecord(ck);
                    length=AddRecord(ck,length);
                    SaveRecord(ck,length);
                    break;
            case 6:   length=LoadRecord(ck);
                    system("cls");
                    List(ck,length); //显示全部商品记录
                    break;
            case 7:   length=LoadRecord(ck);
                    system("cls");
                    SortOncoding(ck,length);//按商品编号排序
                    SaveRecord(ck,length);
            break;
            case 8:   length=LoadRecord(ck);
                    system("cls");
                    SortOnsum(ck,length); //按商品个数排序
                    SaveRecord(ck,length);         
            break;
            case 9:   length=LoadRecord(ck);
                    system("cls");
                    Save(ck,length);//备份
                    break;
            case 0:   length=LoadRecord1(ck);
                    Load1(ck);
                    system("cls");
                    Load(ck,length);//恢复
                    break;

            case 10: exit(0);  //退出
      }
   }

}


    int Menu_select()
    {
        int c;
        printf("按任意键进入仓库管理菜单\n");
        getchar();
        system("cls");
        system("color F0");
        printf("     ******************************仓库管理*******************************\n");
        printf("     *                        1. 录入仓库初始记录                        *\n");
        printf("     *                        2. 按商品名称查找记录                      *\n");
        printf("     *                        3. 删除商品记录                            *\n");
        printf("     *                        4. 修改商品记录                            *\n");
        printf("     *                        5. 增加仓库信息                            *\n");
        printf("     *                        6. 显示全部记录                            *\n");
        printf("     *                        7. 按商品编号排序                          *\n");
        printf("     *                        8. 按商品个数排序                          *\n");
        printf("     *                        9. 备份                                    *\n");
        printf("     *                        0. 恢复                                    *\n");
        printf("     *                        10. 退出                                   *\n");
            printf("     *********************************************************************\n");


        do
        {
            printf("\n输入您想要进行的操作选项键(0-10):");
            if(scanf("%d",&c)!=1)
            {    
                while(getchar()!='\n')  
                continue;
            }
        }
            while(c<0||c>10);
            return c;
    }


        int Input(Cangku t[])//输入函数
        {
            int i,n;
            system("cls");
            printf("\n请输入要输入的商品中数目:\n");
            scanf("%d",&n);
            printf("开始输入仓库信息:\n");
            for(i=0;i<n;i++)
            {
                system("cls");
                printf("\n第%d个商品的编号:",i+1);
                scanf ("%d",&t[i].coding);
                printf("第%d个商品的名称:",i+1);
                scanf ("%s",&t[i].name);
                printf("第%d个商品的个数:",i+1);
                scanf ("%f",&t[i].sum);
                printf("第%d个商品的说明:",i+1);
                scanf ("%s",&t[i].introdution);
            }
            return (n);
}


void List(Cangku t[],int n) //列表函数
{
    int i;
    printf("     *********************************************************************\n");
    printf("        **    编号         名称             数目             说明\n");
    printf("     ---------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
    {
        printf("%17d%13s%20f%14s\n",t[i].coding,t[i].name,t[i].sum,t[i].introdution);
    }
    printf("     *********************************************************************\n");
    printf ("\n");
    getchar();
}


void SearchOnName(Cangku t[],int n)//查找函数
{
    char s[20];
    int i,flag=0;
    system("cls");
    printf("请输入要查找的商品名称:\n");
    scanf("%s",s);
    for(i=0;i<n;i++)
    {  
    if(strcmp(s,t[i].name)==0)
      {
        flag=1;
        system("cls");
        printf("\n\n要查找的商品信息如下:\n");
        printf("\n");
        printf("     *********************************************************************\n");
        printf("        **    编号         名称             数目             说明\n");
        printf("     ---------------------------------------------------------------------\n");
        {
            printf("%17d%13s%20f%14s\n",t[i].coding,t[i].name,t[i].sum,t[i].introdution);
        }
    printf("     *********************************************************************\n");
    printf ("\n");
    }
}
    if(flag==0)
        printf("要查找的商品不存在!!\n");
        getchar();
}

int DeleteRecord(Cangku t[],int n)//删除函数
{
    char s[20];
    char ch;
    int i,j,flag=0;
    system("cls");
    printf("请输入要删除的商品名称\n");
    scanf("%s",s);
    for(i=0;i<n;i++)
    {  
        if(strcmp(s,t[i].name)==0)
        {
            flag=1;
            system("cls");
            printf("\n\n要删除的商品信息如下:\n");
            printf("\n");
            printf("     *********************************************************************\n");
            printf("        **    编号         名称             数目             说明\n");
            printf("     ---------------------------------------------------------------------\n");
            {
                printf("%17d%13s%20f%14s\n",t[i].coding,t[i].name,t[i].sum,t[i].introdution);
            }
            printf("     *********************************************************************\n");
            printf ("\n");
            printf("确定删除商品信息吗?(Y/N)\n");
            ch=getchar();
            ch=getchar();
            if(ch=='Y'||ch=='y')
            {
                for(j=i;j<n-1;j++)
                t[j]=t[j+1];
                n--;
                i--;
                printf ("删除成功.\n");
            }
        }
    }
    if(flag==0)
        printf("要删除的商品不存在!!\n");
    getchar();
    return n;
}

int AlterRecord(Cangku t[],int n)//修改记录函数
{
    int i,flag=0;
    char s[20],ch;
    system("cls");
    printf("请输入要修改的商品名称\n");
    scanf("%s",s);
    for(i=0;i<n;i++)
    {
        if(strcmp(s,t[i].name)==0)
        {
            flag=1;
            system("cls");
            printf("\n\n要修改的仓库信息如下:\n");
            printf("\n");
            printf("     *********************************************************************\n");
            printf("        **    编号         名称             数目             说明\n");
            printf("     ---------------------------------------------------------------------\n");
            {
                printf("%17d%13s%20f%14s\n",t[i].coding,t[i].name,t[i].sum,t[i].introdution);
            }
            printf("     *********************************************************************\n");
            printf ("\n");
            printf("确定修改商品信息吗?(Y/N)\n");
            ch=getchar();
            ch=getchar();
            if(ch=='y'||ch=='Y')
            {
                system("cls");
                printf("请输入修改后的信息:\n");
                printf("请输入商品新的名称:");
                scanf("%s",t[i].name);
                printf("请输入%s商品新的编号:",t[i].name);
                scanf("%d",&t[i].coding);
                printf("请输入%s商品新的数目:",t[i].name);
                scanf("%f",&t[i].sum);
                printf("请输入%s商品新的说明:",t[i].name);
                scanf("%s",t[i].introdution);
            }
        }
    }
    if(flag==0)
        printf("要修改的商品不存在!!\n");
    getchar();
    return n;
}


int AddRecord(Cangku t[],int n) //追加记录函数
{
    int i,m;
    system("cls");
    printf("\n请输入再增加的记录数:\n");
    scanf("%d",&m);
    printf("开始追加记录\n");
    for(i=n;i<n+m;i++)
    {
        system("cls");
        printf("\n第%d个商品的编号:",i+1);
        scanf("%d",&t[i].coding);
        printf("第%d个商品的名称:",i+1);
        scanf("%s",t[i].name);
        printf("第%d个商品的数目:",i+1);
        scanf("%f",&t[i].sum);
        printf("第%d个商品的说明:",i+1);
        scanf("%s",t[i].introdution);
    }
    return (n+m);
}



void SortOncoding(Cangku t[],int n)//按商品编号排序
{
    int i,j;
    struct cangku temp ;
    for(j=1;j<n;j++)
      for(i=0;i<n-j;i++)
       if(t[i].coding<t[i+1].coding)
       {
           temp=t[i];
           t[i]=t[i+1];
           t[i+1]=temp;
       }
       printf("排序成功!!!\n");
       printf("排序后仓库信息列表如下:\n");
       List(t,n);
}


void SortOnsum(Cangku t[],int n)//按商品数目排序
{
    int i,j;
    struct cangku temp ;
    for(j=1;j<n;j++)
      for(i=0;i<n-j;i++)
       if(t[i].sum<t[i+1].sum)
       {
    temp=t[i];
          t[i]=t[i+1];
          t[i+1]=temp;
    }
    printf("排序成功!!!\n");
    printf("排序后商品信息列表如下:\n");
    List(t,n);
}


void SaveRecord(Cangku t[],int n)
{
    int i;
    FILE *fp;
    if((fp=fopen("record.txt","w"))==NULL)
    {
    printf("不能打开文件!\n");
        exit(1);
    }
    for(i=0;i<n;i++)
    {
    fwrite(&t[i],sizeof(struct cangku),1,fp);
    }
    fclose(fp);
    }


int LoadRecord(Cangku t[])
{
    int n=0;
    FILE *fp;
    if((fp=fopen("record.txt","a+"))==NULL)
    {
    printf("不能打开文件!\n");
        exit(1);
}
    while(fread(&t[n],sizeof(struct cangku),1,fp)) n++;
    fclose(fp);
    printf("从文件中成功读出记录!!!\n");
    return n;
}

int LoadRecord1(Cangku t[])
{
    int n=0;
    FILE *fp;
    if((fp=fopen("bkrecord.txt","a+"))==NULL)
    {
    printf("不能打开文件!\n");
        exit(1);
}
    while(fread(&t[n],sizeof(struct cangku),1,fp)) n++;
    fclose(fp);
    printf("从文件中成功读出记录!!!\n");
    return n;
}


void Save(Cangku t[],int n)//保存文件
{
    int i;
    FILE *fp;
    if((fp=fopen("bkrecord.txt","w"))==NULL)
    {
        printf("不能打开文件!\n");
        exit(1);
    }
   for(i=0;i<n;i++)
   {
        fwrite(&t[i],sizeof(struct cangku),1,fp);
   }
   fclose(fp);
   printf("备份成功.\n");
   getchar();
}


void Load1(Cangku t[])
{
   int n=0;
   FILE *fp;
   if((fp=fopen("bkrecord.txt","a+"))==NULL)
   {
      printf("不能打开文件!\n");
      exit(1);
   }
while
(fread(&t[n],sizeof(struct cangku),1,fp)) n++;
fclose(fp);
getchar();
}


void Load(Cangku t[],int n)
{
    int i;
    FILE *fp;
    if((fp=fopen("record.txt","w"))==NULL)
    {
    printf("不能打开文件!\n");
        exit(1);
    }
   for(i=0;i<n;i++)
   {

    fwrite(&t[i],sizeof(struct cangku),1,fp);
   }
   fclose(fp);
   printf("恢复成功.\n");
}
搜索更多相关主题的帖子: dos runtime 
2010-11-28 00:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-327129-1-1.html




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

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