鱼C论坛

 找回密码
 立即注册
查看: 3301|回复: 8

急,求调试程序

[复制链接]
发表于 2013-6-25 21:35:43 | 显示全部楼层 |阅读模式
50鱼币
/****头文件****/
#include <stdio.h>           // I/O函数      
#include <stdlib.h>          // 其它说明     
#include <string.h>          // 字符串函数   
#include <conio.h>           // 屏幕操作函数
/****宏定义****/
#define N 10           // 参赛学校总数为10   
#define M 10           // 男子竞赛项目数为10
#define W 10           // 女子竞赛项目数为10
#define Men 2           // 男子运动员数为2   
#define Women 2           // 女子运动员数为2   
/****定义结构体****/
struct SCHOOL                   //声明一个结构体类型 struct SCHOOL
{
int name;                // 学校名称为整型
int ranking;              // 学校名次为整型
int score;                // 学校得分为整型
};
struct STUDENT                  //声明一个结构体类型struct STUDENT
{
struct SCHOOL school;  // 成员school属于struct SCHOOL类型
long number;              // 参赛号码为长整形   
char name[15];            // 姓名为字符型      
char sex[5];              // 性别为字符型      
char sport[15];           // 参赛项目为字符型   
int  ranking;             // 名次为整型      
int  score;               // 得分为整型      
}student[Men+Women],*p_student;
/****定义全局文件类型指针变量****/
FILE *fp;
/****定义子函数****/
void shuru ();                         // 1:登记比赛结果         
void xiugai ();                        // 2:修改                  
void chaxun ();                        //  3:查询                  
void chaxun_school ();                 // 输出查询的学校得分情况   
void chaxun_student ();                // 输出查询的运动员得分情况
void shuchu ();                        // 4:显示结果              
void shuchu_school ();                 // 输出学校团队得分情况     
void shuchu_student ();                // 输出全体运动员得分情况  
void paixu_student (struct STUDENT *); //  对运动员进行冒泡排序     
int  mingci (int);                     // 名次->得分               

/****主函数****/
main ()
{
char ch;

printf("\n\n");
printf(" **************欢迎使用校际运动会管理系统**************\n\n");
printf(" ————————————主菜单————————————\n");
printf("   *                                                 *  \n");
printf("   *  ◆  1:登记比赛结果        ◆  2:修改信息     *  \n");
printf("   *                                                 *  \n");
printf("   *  ◆  3:查询信息            ◆  4:显示结果     *  \n");
printf("   *                                                 *  \n");
printf("   *  ◆  0:退出系统                                *  \n");
printf("   *                                                 *  \n");
printf(" ———————————————————————————\n\n");
printf(" 请您在上述功能中选择(0 — 4):");


/****进入子函数****/
while (1)
{
  ch=getchar();                    //从键盘输入一个字符,送给字符变量ch
   
  switch (ch)
  {
   case '0': exit(0);
   case '1': shuru ();   break;    // 使流程跳到循环体之外
   case '2': xiugai ();  break;
   case '3': chaxun (); break;
   case '4': shuchu ();  break;
   default:  printf("输入错误,请重新输入。\n");
         getchar();
         continue;             // 结束本次循环
  }
}

getch();

}

/****1:登记比赛结果****/
void shuru ()
{
char x[15];
int i;
char j;

/****显示学校的代码****/
printf("\n");
for(i=1,j='A';i<=N&&j<'A'+N;i++,j++)
{
  printf("%c校——代码:%d\t",j,i);
}
printf("\n\n");

if ((fp=fopen("运动员信息.txt","ab+"))==NULL)
//打开名字为运动员信息的文本文件,使用方式为“读写”,并将fopen函数的
//返回值赋给指针变量fp,如果不能实现打开的任务,fopen函数将会带回一个
//出错信息,此时fopen函数将带回带回带回一个空指针值NULL。
{
  printf("无法打开文件。\n");
  getch();
  exit(1);                   // 终止正在执行的程序,关闭文件。
}

getchar();

/****输入运动员信息****/
for (p_student=student;p_student<student+(Men+Women);p_student++)
{
  printf("参赛号码:");
  gets(x);                     // 输入字符串
  p_student->number=atol(x);      
  fprintf(fp,"%d",p_student->number);
  printf("学校:");   
  gets(x);
  p_student->school.name=atoi(x);  
  fprintf(fp,"%d",p_student->school.name);
  printf("姓名:");     
  gets(p_student->name);   
  fputs(p_student->name,fp);   // 将p_student指向字符串name输出到
                               // fp所指向的文件
     printf("性别:");     
  gets(p_student->sex);   
  fputs(p_student->sex,fp);
  printf("参赛项目:");
  gets(p_student->sport);  
  fputs(p_student->sport,fp);
  printf("名次:");     
  gets(x);
  p_student->ranking=atoi(x);      
  fprintf(fp,"%d",p_student->ranking);
  
  (p_student->score)=mingci(p_student->ranking);   
  fprintf(fp,"%d",p_student->score);
  
  printf("\n");         
  fputs("\n",fp);
}

fclose(fp);         //关闭fp指向的文件

printf("\n登记完成。\n\n******请按回车键退回主界面。******\n\n");
getchar();

system ("cls");  // 清屏

main ();         // 返回主界面
}

/****2:修改****/
void xiugai ()
{
char x[15];

if ((fp=fopen("运动员信息.txt","rb+"))==NULL)
{
  printf("无法打开文件\n");
  getch();
  exit(1);
}
getchar();

printf("\n\n请输入你要修改的参赛选手的号码:");
gets(x);

/****输入要修改的运动员信息****/
for (p_student=student;p_student<student+(Men+Women);p_student++)
{  
  if (p_student->number==atol(x))
  {
   printf("参赛号码:");
   gets(x);
   p_student->number=atol(x);      
   fprintf(fp,"%d",p_student->number);
   printf("学校代码:");
   gets(x);
   p_student->school.name=atoi(x);  
   fprintf(fp,"%d",p_student->school.name);
   printf("姓名:");     
   gets(p_student->name);   
   fputs(p_student->name,fp);
   printf("性别:");     
   gets(p_student->sex);   
   fputs(p_student->sex,fp);
   printf("参赛项目:");
   gets(p_student->sport);  
   fputs(p_student->sport,fp);
   printf("名次:");     
   gets(x);
   p_student->ranking=atoi(x);      
   fprintf(fp,"%d",p_student->ranking);
  
   (p_student->score)=mingci(p_student->ranking);   
   fprintf(fp,"%d\n",p_student->score);
   
   printf("\n");         
   fputs("\n",fp);
   
   break;  
  }
}

if (p_student==student+(Men+Women))
  printf("\n\n没有存储该选手的信息,无法修改。\n\n");
else
  printf("\n\n修改完成。\n\n");
   
fclose(fp);

printf("\n\n******请按回车键退回主界面。******\n\n");
getchar();

system ("cls");  // 清屏

main ();         // 返回主界面
}

/****3:查询****/
void chaxun ()
{
int i;

if ((fp=fopen("运动员信息.txt","rb"))==NULL)
{
  printf("无法打开文件。\n");
  getch();
  exit(1);
}
getchar();

printf("\n\n查询学校得分情况请按“0”,查询运动员得分情况请按“1”:");
scanf("%d",&i);

switch (i)
{
  case 0:  chaxun_school ();   break;
  case 1:  chaxun_student ();  break;
}

fclose(fp);

getchar();
    printf("\n\n******请按回车键退回主界面。******\n\n");
getchar();
  
system ("cls");  // 清屏

main ();         // 返回主界面
getchar();

}

/****4:显示结果****/
void shuchu ()
{
int i;

if((fp=fopen("运动员信息.txt","rb+"))==NULL)
    {
      printf("无法读取该文件。\n");
      exit(1);
    }
   
printf("\n\n");

printf("\n\n输出学校团体得分情况请按“0”,输出全体运动员得分情况请按“1”:");
scanf("%d",&i);

switch (i)
{
  case 0:  shuchu_school ();   break;
  case 1:  shuchu_student ();  break;
}

    fclose(fp);
   
    getchar();
    printf("\n\n******请按回车键退回主界面。******\n\n");
getchar();
  
system ("cls");  // 清屏

main ();         // 返回主界面
getchar();

}

/****输出查询的学校得分情况****/
void chaxun_school ()
{
int x,sum=0,s=0;

printf("\n请输入要查询的学校代码:");
scanf("%d",&x);

for (p_student=student;p_student<student+(Men+Women);p_student++)
{
  if (x==p_student->school.name)
  {
   sum=sum+p_student->score;
   s++;
  }
}

p_student->school.score=sum;
printf("\n%c校所得总分是%4d\n\n",s+64,p_student->school.score);
}

/****输出查询的运动员得分情况****/
void chaxun_student ()
{
long number;

printf("\n请输入要查询的参赛选手的号码:");
scanf("%d",&number);

printf("\n参赛号码\t学校\t姓名\t性别\t参赛项目   名次   得分\n");

for (p_student=student;p_student<student+(Men+Women);p_student++)
{
  if ((p_student->number)==number)
  {
   printf("%6d\t%7c校\t%4s\t%3s\t%4s\t %5d  %5d\n",p_student->number,
       p_student->school.name+64,p_student->name,p_student->sex,
       p_student->sport,p_student->ranking,p_student->score);
   break;
  }
}

if (p_student==student+(Men+Women))
  printf("\n\n没有存储该选手的信息,查询失败。\n\n");
}

/****输出学校团队得分情况****/
void shuchu_school ()
{
printf("\n\n该项目正在修复中,如造成不便,请谅解。\n\n");
}

/****输出全体运动员得分情况****/
void shuchu_student ()
{
paixu_student (student);  // 对运动员进行冒泡排序

printf("\n参赛号码\t学校\t姓名\t性别\t参赛项目   名次   得分\n");

for (p_student=student;p_student<student+(Men+Women);p_student++)
{
  printf("%6d\t   %7c校\t%4s\t%3s\t%4s\t %5d  %5d\n",p_student->number,p_student->school.name+64,\
         p_student->name,p_student->sex,p_student->sport,p_student->ranking,p_student->score);
}

printf("\n以上为本次运动会的成绩单。\n\n");
}

/****对运动员进行冒泡排序****/
void paixu_student (struct STUDENT *p_student)
{
int i,j;
struct STUDENT t;

p_student=student;

for (i=0;i<(Men+Women)-1;i++)
{
  for (j=0;j<(Men+Women)-i-1;j++)
  {
   if ( (p_student+j)->number > (p_student+j+1)->number )
   {
    t=*(p_student+j);
    *(p_student+j)=*(p_student+j+1);
    *(p_student+j+1)=t;
   }   
  }
}
}

/****名次->得分****/
int mingci (int ranking)
{
switch (ranking)
{
  case 1:  return 7; break;   // 第一名得分7
  case 2:  return 5; break;   // 第二名得分5
  case 3:  return 3; break;   // 第三名得分3
  case 4:  return 2; break;   // 第四名得分2
  case 5:  return 1; break;   // 第五名得分1
  default: return 0; break;   // 否则得分为0
}
}

最佳答案

查看完整内容

改两个地方看看~~124行那里的输入 和出入哪里的学习不要加64~~ 测试过ok~~ 希望对你有帮助。 一起学习,加油吖~~支持支持~~{:7_155:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-25 21:35:44 | 显示全部楼层
改两个地方看看~~124行那里的输入
和出入哪里的学习不要加64~~
测试过ok~~


希望对你有帮助。
一起学习,加油吖~~支持支持~~{:7_155:}
2.jpg
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-25 21:38:34 | 显示全部楼层

RE: 急,求调试程序

C:\Users\Administrator\Desktop
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-25 21:39:36 | 显示全部楼层
额,图片不知道怎么发上来
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-25 21:41:23 | 显示全部楼层
这个程序执行不会出错,就是学校显示那里有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-25 22:19:16 | 显示全部楼层
额。找人解决了,程序没错,是我编译时输入错了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-26 11:30:46 | 显示全部楼层
{:7_155:}.........
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-26 12:42:37 | 显示全部楼层

不改也行的,学校输入时是数字,就对了
请问怎么上传图片的。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-26 18:19:35 | 显示全部楼层
本帖最后由 fanki 于 2013-6-26 18:21 编辑
丝连 发表于 2013-6-26 12:42
不改也行的,学校输入时是数字,就对了
请问怎么上传图片的。。

{:7_175:}哦~~~改了就是输入英文大写字母吧~~
其实就直接上传图片吧~~
高级模式那里试试~~不要超过大小就可以了吧~~
我都是新手~~哈哈~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-22 05:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表