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;
}