标题:C语言程序调试不好,那位好心人指点一下嘛,不胜感激。。。谢谢了!!!
只看楼主
mayuting
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-6-28
结帖率:0
已结贴  问题点数:20 回复次数:5 
C语言程序调试不好,那位好心人指点一下嘛,不胜感激。。。谢谢了!!!
//
/*
                 某学院教学信息管理系统

功能:
1、每一条记录包括一位教师的职工号、姓名、职称、性别、3门主讲课程(课程名称、开课学期、课程性质(学位与非学位课)和教学效果),教学效果综合评分。
2、输入功能:可以一次完成若干条记录的输入。
3、显示功能:完成全部教师记录的显示。
4、查找功能:完成按姓名或课程查找教师的相关记录,并显示。
5、排序功能:按职工号或教学效果综合评分进行排序。
6、插入功能:按教学效果综合评分高低插入一条教师记录。
7、将教师记录存在文件中。
8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

要求:
1、用C语言实现系统;
2、利用结构体数组实现教学信息的数据结构设计;
3、系统具有增加,查询,插入,排序等基本功能;
4、系统的各个功能模块要求用函数的形式实现;
5、将教学信息存在文件中。
*/

//头文件包含
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//结构体声明
    struct TeacherData
    {
        int zgbh;
        char name[8];
        char zc[12];
        char sex[2];
        char c1[4];
        char c2[4];
        char c3[4];
        int totles;
    }str[100];
    char data[8][12];

    //文件操作
    void readData()
    {
        FILE *fpr;

        if((fpr=fopen("data.txt","r+"))==NULL)
            printf("读取记录文件失败!");
        else
        {
            fread(data,sizeof(str),8,fpr);
        }

    }
    void writeData(int in)
    {
        FILE *fpw;

        if((fpw=fopen("data.txt","w+"))==NULL)
            printf("写入记录文件失败!");
        else
        {
            fwrite(&str[in],sizeof(str),8,fpw);
        }
    }

    //数据处理方法
    void contectShow()
    {
        readData();
        for(int m=0;m<8;m++)
            printf("%s",data[m]);
        printf("\n");
        printf("数据显示完成!");
    }

    //按索引查找
    void finddata(int index)
    {
        readData();
        printf("要查找的数据为%s",data[index-1]);
        printf("查找完成!");
    }

    //气泡~
    void sortData(int flag)
    {
        if(flag)
    {
        for(int h=0;h<sizeof(data);h++)
            for(int j=0;j<sizeof(data);j++)
                if(strcmp(data[h],str[j].name )>0)
                {
                    data[h]=str[j] ;
                }
        for(int i=0;i<sizeof(data);i++)
            printf("%s",data[i]);
    }
    else
    {
        for(int h=0;h<sizeof(data);h++)
            for(int j=0;j<sizeof(data);j++)
                if(strcmp(data[h],str[j])<0)
                {
                    data[h]=str[j] ;
                }
        for(int i=0;i<sizeof(data);i++)
            printf("%s",data[i]);
    }
    printf("排序完成!");
    }

    void instrData(struct TeacherData strt,int args)
    {
        struct TeacherData temp;
        readData(args);
        temp=data[args-1];
        str[args-1]=strt;
        for(int ind=sizeof(str);ind>args;ind--)
        {
            str[ind]=str[ind-1];
        }
        str[args]=temp;
        printf("插入完成!");
    }
    void inputData()
    {
        int nuo,i;
        printf("输入本次输入记录的条数:");
        scanf("%d",&nuo);
        FILE *fp1;
        if((fp1=fopen("data.txt","w+"))==NULL)
        {printf("打开文件时,失败!\n");
        exit(0);
        }
        for(i=0;i<nuo;i++)
        {
            scanf("%d,%s,%s,%s,%s,%d,%d,%d,%s,%s,%d,%d,%d,%s,%s,%d,%d,%d,%s,%d",
                str[i].zgbh,&str[i].name,&str[i].zc,&str[i].sex,&str[i].c1[0],&str[i].c1[1],&str[i].c1[2],&str[i].c1[3],&str[i].c2[0],&str[i].c2[1],&str[i].c2[2],&str[i].c2[3],&str[i].c3[0],&str[i].c3[1],&str[i].c3[2],&str[i].c3[3],&str[i].totles);
            //fprintf(fp1,"%d,%s,%s,%s,%s,%d,%d,%d,%s,%s,%d,%d,%d,%s,%s,%d,%d,%d,%s,%d",
            //    str[i].zgbh,str[i].name,str[i].zc,str[i].sex,str[i].c1[0],str[i].c1[1],str[i].c1[2],str[i].c1[3],str[i].c2[0],str[i].c2[1],str[i].c2[2],str[i].c2[3],str[i].c3[0],str[i].c3[1],str[i].c3[2],str[i].c3[3],str[i].totles);
            writeData(i);
            
        }
        fclose(fp1);
        printf("数据输入完成!");
    }

//主函数
int main(int argc, char* argv[])
{
    //声明结构体

    int index;//标识选择功能
    while(1)
    {
    printf("请根据提示选择相应的操作:\n1.输入数据\n2.显示数据\n3.查找数据\n4.排序\n5.插入\n6.退出\n");
    scanf("%d",&index);
    getchar();//回车容错
    switch(index)
    {
    case 1:
        inputData();
        break;
    case 2:
        contectShow();
        break;
    case 3:
        int n;
        printf("请输入要查找哪一条记录:");
        scanf("%d",&n);
        finddata(n);
        break;
    case 4:
        printf("请选择排序顺序(1为从大到小,0为从小到大):");
        scanf("%d",n);
        sortData(n);
        break;
    case 5:
        struct TeacherData t1;
        printf("输入要插入的记录:");
        scanf("%d,%s,%s,%s,%s,%d,%d,%d,%s,%s,%d,%d,%d,%s,%s,%d,%d,%d,%s,%d",
            &t1.zgbh,&t1.name,&t1.zc,&t1.sex,&t1.c1[0],&t1.c1[1],&t1.c1[2],&t1.c1[3],&t1.c2[0],&t1.c2[1],&t1.c2[2],&t1.c2[3],&t1.c3[0],&t1.c3[1],&t1.c3[2],&t1.c3[3],&t1.totles);
        printf("输入要插入的位置:");
        scanf("%d",&n);
        instrData(t1,n);
        break;
    case 6:
        printf("程序退出!");
        break;
    default :
    printf("初始化选择功能失败!\n");
    }
    }
    return 0;
}
搜索更多相关主题的帖子: C语言 感激 调试 
2010-06-28 20:20
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
得分:7 
我的编译提示是没有找到头文件啊

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2010-06-28 22:25
不归鹄
Rank: 9Rank: 9Rank: 9
来 自:冥王星
等 级:蜘蛛侠
威 望:4
帖 子:491
专家分:1380
注 册:2009-12-20
得分:7 
  把包含头文件的双引号改成尖括号<>,""双引号包含的是在用户程序目录下的头文件,也就是你自己保存你写的.c文件时文件目录,而<>包含的是编译器里的include文件夹里的头文件。


[ 本帖最后由 不归鹄 于 2010-6-28 22:36 编辑 ]

2010-06-28 22:34
谢谆本
Rank: 2
来 自:湖南娄底
等 级:论坛游民
帖 子:55
专家分:49
注 册:2010-6-21
得分:7 
回复 2楼 waterstar
你说得不对~~“”是先从你的文件目录去找~~找不到才去编译器的include文件夹去找~~ < >是直接从include文件里去找~~
这个不存在什么大的错误~~只是编译的速度前面的慢点~后面的快点而已~~
2010-06-28 22:43
谢谆本
Rank: 2
来 自:湖南娄底
等 级:论坛游民
帖 子:55
专家分:49
注 册:2010-6-21
得分:0 
回复 楼主 mayuting
他说说找不到什么文件啊~~讲清楚点咯~~~
   问问题要讲清楚点~~不然也没这么多的时间去帮你找~~
2010-06-28 22:47
mayuting
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-6-28
得分:0 
谢谢楼上各位!
2010-06-29 16:10



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




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

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