| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 335 人关注过本帖
标题:这个程序为什么在VC++6.0上运行到读取文件函数时出错了???
只看楼主 加入收藏
panjiaqi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-3-27
收藏
 问题点数:0 回复次数:0 
这个程序为什么在VC++6.0上运行到读取文件函数时出错了???
#include<stdio.h>/*标准输入输出函数库*/
#include<string.h>  /*字符串函数库*/
#include<malloc.h>
#define FILE_DATA_PATH "H:\\student.txt"
static int m=0;
struct student   
{
 long int num;
 char name[20];
 int age;
 char sex;
 char birthday[10];
 char address[30];
 char tel[15];
 char E_mail[20];
}stu[100000];
void welcome();/*系统标题函数声名*/
void mainmenu();/*选择框架函数声名*/
void record();/*1.输入学生信息函数声名*/
void displayAll();/*2.显示信息函数声名*/
void display();
void query();/*3.学生信息条件查询函数声名*/
void query_by_num();
void query_by_name();
void readData();//读取文件
void writeData();//写入文件
/*---------------------------------主调函数-------------------------------------*/   
void main()
{   
   
     char userName[9];
     char userPWD[7];
     int i;
     printf("\n\n\n");
     printf("\t\t\t-------☆-【学生信息管理系统】-☆------\n");
     printf("\n");
     for(i=0; i<3; i++)
     {
       printf("\n管理员初始用户名和密码均为a\n");
       printf("请输入您的用户名:");
       scanf("%s", userName);
       printf("\n请输入您的密码:");
       scanf("%s", userPWD);
       if ((strcmp(userName,"a")==0) && (strcmp(userPWD,"a")==0))
       {
         welcome();
         mainmenu();
         break;
       }
       else
       {
         if (i < 2)
         {
           printf("用户名或密码错误,请重新输入!");
         }
         else
         {
           printf("您已连续3次将用户名或密码输错,系统将退出!\n");
         }
       }
     }
}
/*---------------------------------程序名称-------------------------------*/
void welcome()
{
    printf("\n");
    printf("\n");
    printf("              ----------------------------------------------              \n");
    printf("              |||********欢迎进入学生信息管理系统********|||              \n");
    printf("              ----------------------------------------------              \n");
    printf("    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★    \n");
    printf("\n");
}

/*------------------------------------主菜单--------------------------------------*/
void mainmenu()
{
    int choice=-1;
    readData();
    do
    {
      printf("\n          温馨提示:为保证您的操作得到保存,请按正常顺序退出系统\n");
      printf("             ┌--------------------------------------------┐                \n");
      printf("                   ★ 欢迎使用学生信息管理系统 ★                      \n");                                                                                 
      printf("             ├--------------------------------------------┤                \n");
      printf("                           1.输入学生信息                               \n");                                                                                 
      printf("             ├--------------------------------------------┤                \n");
      printf("                           2.显示学生信息                               \n");                                                                                 
      printf("             ├--------------------------------------------┤                \n");
      printf("                           3.学生查询信息                               \n");                                                                                 
      printf("             ├--------------------------------------------┤                \n");               
      printf("                           4.删除学生信息                               \n");                                                                                 
      printf("             ├--------------------------------------------┤                \n");
      printf("                           5.修改学生信息                               \n");
      printf("             ├--------------------------------------------┤                \n");
      printf("                           0.退出,谢谢使用!!!                         \n");                                                                                 
      printf("             └--------------------------------------------┘                \n");
      printf("请输入您的选择:");
      scanf("%d", &choice);
      switch(choice)
      {
        case 0:
               writeData();
               return;
        case 1:
               record();
               break;
        case 2:
               displayAll();
               break;
        case 3:
               query();
               break;  
        case 4:
               //del();
               break;
        case 5:
               //change();
               break;
        default:
               printf("\n无效选项!");
               break;
        }
    }
    while(choice != 0);
}
/*-----------------------------------输入学生信息-------------------------------------*/
void record()
{     
      char o;
      o='y';
   do
   {
     printf("请输入第%d个学生的信息:\n",m+1);
     printf("请输入学生的学号:");
     scanf("%d",&stu[m].num);                        
     printf("请输入学生的姓名:");                    
     scanf("%s",stu[m].name);
     printf("请输入学生的年龄:");
     scanf("%d",&stu[m].age);
     do                                               
     {
       printf("请输入学生的性别,男生输m女生输w:");
       scanf("%s",&stu[m].sex);
       if(stu[m].sex !='m' &&stu[m].sex !='w')
       {
          printf("输入错误--请重新输入:\n");
       }
     }
     while(stu[m].sex !='m' &&stu[m].sex !='w');
     printf("请输入学生的出生年月:");
     scanf("%s",stu[m].birthday);
     printf("请输入学生的地址:");      
     scanf("%s",stu[m].address);  
     printf("请输入学生的联系方式:");  
     scanf("%s",stu[m].tel);
     printf("请输入学生的E-mail:");
     scanf("%s",stu[m].E_mail);
     m++;
     printf("\n是否继续添加学生信息?是就输入y或Y,不是就输入另外任意字符:\n");
     scanf("%s",&o);
   }
   while(o=='y'||o=='Y');
 }
/*---------------------------------显示学生的信息-------------------------------------*/
void display(struct student *p)
{
     printf("以下就是您所要查找的学生信息:\n");
     printf("-------------------------------------------------------------------------------");
     printf("学号\t姓名\t年龄\t性别\t出生年月\t地址\t\t电话\tE-mail\n");
     printf("%ld\t%s\t%d\t%c\t%s\t%s\t%s\t%s\n", p->num, p->name, p->age, p->sex, p->birthday, p->address, p->tel, p->E_mail);
}
void displayAll()
{
     struct student *p;
     printf("以下就是显示的学生信息:\n");
     printf("-------------------------------------------------------------------------------");
     printf("学号\t姓名\t年龄\t性别\t出生年月\t地址\t\t电话\tE-mail\n");

   
     
     for(p=stu;p<stu+m;p++)
     {
       printf("%ld\t%s\t%d\t%c\t%s\t%s\t%s\t%s\n", p->num, p->name, p->age, p->sex, p->birthday, p->address, p->tel, p->E_mail);
     }
}
/*---------------------------学生信息条件查询------------------------------------*/
void query()
{
     int choice=-1;
     do
     {
       printf("\n");
       printf("                        ┌--------------------┐                     \n");
       printf("                            1.按学号查询                        \n");
       printf("                        ├--------------------┤                     \n");
       printf("                            2.按姓名查询                        \n");
       printf("                        ├--------------------┤                     \n");
       printf("                            0.取消                              \n");
       printf("                        └--------------------┘                     \n");

       printf("请输入您的选择:");
       scanf("%d", &choice);
      
       switch(choice)
       {
         case 0:
                return;
         case 1:
                query_by_num();
                break;
         case 2:
                query_by_name();
                break;           
         default:
                printf("\n无效选项!");
                break;
        }
     }
     while(choice != 0);
}
void query_by_num(struct student *p)
{
     int num,j;
     do
     {
       printf("请输入学号进行查询:->>");
       scanf("%d",&num);
       for(j=0;j<m;j++)
       {
         if(stu[j].num==num)
         {
           p=stu+j;
           display(p);
           break;
         }
       }
       if(stu[j].num!=num)
       printf("您输入的学号不存在---:");
       break;
     }while(stu[j].num!=num);
}
void query_by_name(struct student *p)
{
    int j;
    char Name[30];
    do
    {
      printf("请输入你所要查询的学生的姓名:>>");
      scanf("%s",Name);
      for(j=0;j<m;j++)
      {
        if(strcmp(stu[j].name,Name)==0)//字符串函数
        {
          p=stu+j;
          display(p);
          break;
        }
      }
      if(strcmp(stu[j].name,Name)!=0)
      printf("您输入的学生姓名不存在。");
      break;
    }while(strcmp(stu[j].name,Name)!=0);
}
/*---------------------------写入文件------------------------------------*/
void writeData()
{
     FILE*  fp;//文件指针
     struct student *p;
     fp=fopen(FILE_DATA_PATH,"w");
     if(!fp)
     {
       printf("文件打开错误!");
       return;
     }

     fprintf(fp,"%d\n",m);
     for(p=stu;p<stu+m;p++)
     {
         fprintf(fp,"%ld\t%s\t%d\t%c\t%s\t%s\t%s\t%s\n", p->num, p->name, p->age, p->sex, p->birthday, p->address, p->tel, p->E_mail);
     }
     fclose(fp);
}
/*---------------------------读取文件------------------------------------*/
void readData()
{
    FILE*  fp;//文件指针
    struct student *p;
    p=(struct student *)malloc(sizeof(struct student));
    fp=fopen(FILE_DATA_PATH,"r");
    if(!fp)
    {
      printf("文件打开错误!");
      return;
    }
    fscanf(fp,"%d\n",m);
    fscanf(fp,"%ld\t%s\t%d\t%c\t%s\t%s\t%s\t%s\n", &p->num, p->name, &p->age, p->sex, p->birthday, p->address, p->tel, p->E_mail);
    fclose(fp);
}
搜索更多相关主题的帖子: welcome 字符串 
2011-03-27 14:30
快速回复:这个程序为什么在VC++6.0上运行到读取文件函数时出错了???
数据加载中...
 
   



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

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