| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 685 人关注过本帖
标题:帮个忙吧!!谢谢
只看楼主 加入收藏
现实太狗
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2013-12-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
帮个忙吧!!谢谢
#include<stdio.h>
#include<string.h>
#define N 50
typedef struct student/*结构体的定义*/
{
     char num[50];
     char name[50];
     float score[50][4];
     float sum;
     float aver;

}STU;
 void MainMenu()
 {
     
     printf("\t**********************菜单*************************************\n");
     printf("\t\t\t学生信息管理系统\n");
     printf("\t按1键:读入学生档案-----------------------按6键:学科及格概率---\n");
     printf("\t按2键:按照姓名查询-----------------------按7键:学生档案排序---\n");
     printf("\t按3键:按照学号查询-----------------------按8键:保存学生档案---\n");
     printf("\t按4键:添加学生档案-----------------------按9键:查看学生档案---\n");
     printf("\t按5键:删除学生档案-----------------------按10键: 各科平均值---\n");
     printf("\t按0键:退出管理系统\n");
     printf("\t****************************************************************\n");
 }
 int Shuru(STU a[])
 {
     FILE *fp;
     STU b[50];
   
     int i,j,k,m,n;
     char cha[]="-1";
     if((fp=fopen("E:\\学生信息\\学生信息表.txt","w+"))==NULL)
     {
         printf("找不到该文件");
         getchar();
         exit(0);
     }
     for(i=0;i<N;i++)
     {
         printf("请输入第%d个学生的学号、姓名:\n",i+1);
         scanf("%s%s",a[i].num,a[i].name);     
         m=strcmp(cha,a[i].num);
         n=strcmp(cha,a[i].name);
        if(m==0||n==0)
            break;
         for(j=0;j<4;j++)
        {
           printf("请输入该生的数学、英语、语文、和C语言成绩:\n");
           scanf("%f",a[j].score);
         }

   
     }
     for(k=0;k<i;k++)
     {
         printf("学号  姓名\n");
         fprintf(fp,"%s %s",a[k].num,a[k].name);
         printf("数学 英语 语文 C语言\n");
         for(j=0;j<4;j++)
             fprintf(fp,"%f",a[j].score);
     rewind(fp);
     for(k=0;k<i;k++)
     {
             printf("学号  姓名\n");
              fscanf(fp,"%s%s",b[k].num,b[k].name);
             for(j=0;j<4;j++)
                 fscanf(fp,"%f",&b[j].score);
     }
     fclose(fp);
     printf("学号   姓名   数学  英语  语文 C语言\n");
     for(k=0;k<i;k++)
     {
         printf("%s %s",b[k].num,b[k].name);
         for(j=0;j<4;j++)
             printf("%f ",b[j].score);
     }
     return(i);
}
void main()
{
    STU a[50];/*学生的人数*/
    int stu_score;/*学生的实际人数*/
    int n;
    while(1)
    {
        MainMenu();
        printf("\t\t\t请输入0--10,并按回车:__\n");
        scanf("%d",&n);
        switch(n)
        {
           case 1:stu_score=Shuru(a);break;
        }
    }
}
--------------------Configuration: rhrfgt - Win32 Debug--------------------
Compiling...
df.c
E:\Microsoft Visual Studio\MyProjects\rhrfgt\df.c(38) : warning C4013: 'exit' undefined; assuming extern returning int
E:\Microsoft Visual Studio\MyProjects\rhrfgt\df.c(81) : error C2143: syntax error : missing ';' before 'type'
E:\Microsoft Visual Studio\MyProjects\rhrfgt\df.c(84) : error C2143: syntax error : missing ';' before 'type'
E:\Microsoft Visual Studio\MyProjects\rhrfgt\df.c(85) : error C2143: syntax error : missing ';' before 'type'
E:\Microsoft Visual Studio\MyProjects\rhrfgt\df.c(93) : error C2065: 'stu_score' : undeclared identifier
执行 cl.exe 时出错.

df.obj - 1 error(s), 0 warning(s)
为什么啊!!实在看不出来了!!!帮帮忙吧谢谢!!!
搜索更多相关主题的帖子: include 管理系统 结构体 信息 姓名 
2013-12-22 16:08
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:5 
1.在程序开头 加入命令 #include<stdlib.h>
exit(0);  这个函数的定义在stdlib.h里面
2.你把主函数放到被调函数前面,主函数里面在变量定义之前声明一下俩被调函数。
3。这个问题比较坑爹。。

for(k=0;k<i;k++)
     {
         printf("学号  姓名\n");
         fprintf(fp,"%s %s",a[k].num,a[k].name);
         printf("数学 英语 语文 C语言\n");
         for(j=0;j<4;j++)
             fprintf(fp,"%f",a[j].score);
     rewind(fp);
     for(k=0;k<i;k++)
     {
             printf("学号  姓名\n");
              fscanf(fp,"%s%s",b[k].num,b[k].name);
             for(j=0;j<4;j++)
                 fscanf(fp,"%f",&b[j].score);
     }
     fclose(fp);
     printf("学号   姓名   数学  英语  语文 C语言\n");


注意到没,这里第一个for语句后面你忘了一个 “}” 其实我也不知道加哪里 不过你加了就行了

未知令人期待!
2013-12-22 16:21
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:0 
学籍管理系统的代码已经很多了,自己搜搜看吧

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-12-23 08:01
现实太狗
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2013-12-1
收藏
得分:0 
回复 2楼 神机军师
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 50
 typedef struct student/*结构体的定义*/
{
     char num[50];
     char name[50];
     float score[50][4];
     float sum;
     float aver;

}STU;
 void MainMenu()
 {
     
     printf("\t**********************菜单*************************************\n");
     printf("\t\t\t学生信息管理系统\n");
     printf("\t按1键:读入学生档案-----------------------按6键:学科及格概率---\n");
     printf("\t按2键:按照姓名查询-----------------------按7键:学生档案排序---\n");
     printf("\t按3键:按照学号查询-----------------------按8键:保存学生档案---\n");
     printf("\t按4键:添加学生档案-----------------------按9键:查看学生档案---\n");
     printf("\t按5键:删除学生档案-----------------------按10键: 各科平均值---\n");
     printf("\t按0键:退出管理系统\n");
     printf("\t****************************************************************\n");
 }
 int Shuru(STU a[])/*学生信息的输入*/
 {
     FILE *fp;
     int i,j,k,m;
     char cha[]="-1";
     if((fp=fopen("E:\\学生信息\\学生信息表.txt","w"))==NULL)
     {
         printf("此文件不存在\n");
         getch();
         exit(1);
     }
     for(i=0;i<N;i++)
     {
         printf("请输入第%d个学生的学号:\n",i+1);
         scanf("%s",a[i].num);
         printf("\n");
         m=strcmp(cha,a[i].num);
         if(m==0)
             break;
         printf("请输入给该生的姓名:\n");
         scanf("%s",a[i].name);
         printf("\n");
         printf("数学 语文 英语 C语言\n");
         for(j=0;j<4;j++)
         scanf("%f",&a[i].score[j]);         
     }
     
     for(k=0;k<i;k++)
         fwrite(&a[k],sizeof(STU),1,fp);
     fclose(fp);
     return(i);
   
     
   

     
 }
 void main()
{
    STU a[50];/*学生的人数*/
    int stu_score;/*学生的实际人数*/
    int n;
    while(1)
    {
        MainMenu();
        printf("\t\t\t请输入0--10,并按回车:__\n");
        scanf("%d",&n);
        switch(n)
        {
           case 1:stu_score=Shuru(a);break;
        }
    }
}
在帮忙看一下为什么这个编译时正确的但是就是写不进去啊!!!
2013-12-23 09:36
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:5 
你所说的写不进去  是学生信息写不进去?

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-23 09:51
现实太狗
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2013-12-1
收藏
得分:0 
回复 5楼 so_love
是的  我现在知道怎么回事了,是运行环境的问题,
2013-12-23 14:13
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:5 
回复 5楼 so_love
我试着重新弄了一下程序,编译通过,但是还是有问题,先上程序吧。
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 50

typedef struct student   /*结构体的定义*/ 
{
     char num[10];
     char name[10];
     float score[4];
     float sum;
     float aver;

}STU;

void MainMenu()
{
     
     printf("\t**********************菜单**************************************\n");
     printf("\t\t\t学生信息管理系统\n");
     printf("\t按1键:读入学生档案-----------------------按6键:学科及格概率---\n");
     printf("\t按2键:按照姓名查询-----------------------按7键:学生档案排序---\n");
     printf("\t按3键:按照学号查询-----------------------按8键:保存学生档案---\n");
     printf("\t按4键:添加学生档案-----------------------按9键:查看学生档案---\n");
     printf("\t按5键:删除学生档案-----------------------按10键: 各科平均值---\n");
     printf("\t按0键:退出管理系统\n");
     printf("\t****************************************************************\n");
}

int Shuru(STU a[])           /*学生信息的输入*/
{
     FILE *fp;
     int i;
     int j;
     int k;

     if ((fp = fopen("学生信息表.txt", "wb")) == NULL)
     {
         printf("此文件不存在\n");
         getchar();
         exit(0);
     }

     for(i=0; i < N; i++)
     {
         printf("请输入第%d个学生的学号:\n", i+1);
         scanf("%s", a[i].num);
         printf("\n");
         if (!strcmp("-1", a[i].num))
         {
             return (i);
         }
         printf("请输入给该生的姓名:\n");
         scanf("%s", a[i].name);
         printf("\n");
         printf("数学 语文 英语 C语言\n");
         for (j=0; j < 4; j++)
         {
             scanf("%f", &a[i].score[j]);
         }
     }
     
     for (k=0; k < i; k++)
     {
         fwrite(&a[k], sizeof(STU), 1, fp);
     }

     fclose(fp);
     return (i);     
}

void main()
{
    STU a[50];/*学生的人数*/
    int stu_score;/*学生的实际人数*/
    int n;
    while(1)
    {
        MainMenu();
        printf("\t\t\t请输入0--10,并按回车:__\n");
        scanf("%d", &n);
        switch (n)
        {
           case 1: stu_score = Shuru(a);
               break;
           default : ;
        }
    }
}

未知令人期待!
2013-12-23 14:13
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:5 
碰到的问题在这里:
我的不能解决的是最后那个。。。

1.在 Shuru函数执行体内:
(1)、fp=fopen("E:\\学生信息\\学生信息表.txt","b")
一般来说,对构造体(也就是结构体)进行操作,最好是二进制操作,简单。
所以改为:fp=fopen("E:\\学生信息\\学生信息表.txt","wb"
往后对文件就是fwrite函数。
名字我改了,不乱放文件,它自动放到你的这个程序存放的那个文件里。
(2)、if(m==0)
             break;
初衷应该是如果输入-1就结束数据输入吧,其实一般不要使用break语句。
这里是返回值为int的Shuru函数,所以变成return(i-1)好了。
鉴于楼主自己心得,我不手贱的乱改了。。

2.调试的时候发现的问题:
构造体的定义:
typedef struct student   /*结构体的定义*/
{
     char num[50];
     char name[50];
     float score[50][4];
     float sum;
     float aver;

}STU;
浪费空间,而且,score的定义不合法,改为:
typedef struct student   /*结构体的定义*/
{
     char num[10];
     char name[10];
     float score[4];
     float sum;
     float aver;

}STU;

至于你说要存储50个数据,在主函数里面你已经定义了具有50个元素的结构体数组了。

3.囧了!! 在进行Shuru函数里面的:
for (j=0; j < 4; j++)
         {
             scanf("%f", &a[i].score[j]);
         }
发生程序崩溃,

microsoft visual c++ debug library

百度也不知道原因。。
暂时只能帮到你这里了。

未知令人期待!
2013-12-23 14:14
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
回复 6楼 现实太狗
是神马情况,能给说明一下吗?

未知令人期待!
2013-12-23 16:27
现实太狗
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2013-12-1
收藏
得分:0 
回复 7楼 神机军师
谢谢了

[ 本帖最后由 现实太狗 于 2013-12-23 20:53 编辑 ]
2013-12-23 20:47
快速回复:帮个忙吧!!谢谢
数据加载中...
 
   



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

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