debug assertion failed problem

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
hi guys, please i need your help here is my program which i ran on VS 2010 express but when i debug it i get debug assertion failed, and i cant find my errors .Please help !thanks in advance.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct student
{
<span style="white-space:pre char no[10];
<span style="white-space:pre char name[10];
<span style="white-space:pre char sex[7];
<span style="white-space:pre char major[15];
}stu,stus[100];
//stus[100]存放所有学生的所有信息,stu存放当前处理的学生的信息

int Count;//Count为学生的总人数

void ShowMainMenu(); //显示主菜单
void ViewAStudentInfo(); //显示是否继续查看一个学生的相关信息
void ShowViewMenu();<span style="white-space:pre //显示输入一个学号的提示信息
void ShowStuInfo( char* ); //显示给定学号的学生详细信息,形参为学号
void ViewAllStudentInfo(); //显示所有学生的信息
void AddAStudentInfo(); //添加一个学生信息
void DelAStudentInfo(); //删除一个学生信息
void ModifyAStudentInfo(); //修改一个学生信息
void Exit();<span style="white-space:pre //退出函数
void LoadAllStudent();<span style="white-space:pre //将学生信息文件中的数据读入程序中的数据结构即数组变量中
int ShowInputAStudent(); //显示输入一个学生的详细信息
int ShowDeleteAStudent(); //显示是否继续删除一个学生
int ShowModifyAStudent(); //显示是否继续修改一个学生
int FindStudent( char* no ); //在所有学生中查找学号为形参no给定的值得学生

void main()
{
<span style="white-space:pre int choice;
<span style="white-space:pre Count=0;
<span style="white-space:pre LoadAllStudent();
<span style="white-space:pre while(1)
<span style="white-space:pre {
<span style="white-space:pre ShowMainMenu();
<span style="white-space:pre scanf("%d",&choice);
<span style="white-space:pre switch(choice)
<span style="white-space:pre {
<span style="white-space:pre case 1:ViewAllStudentInfo();break;
<span style="white-space:pre case 2:ViewAStudentInfo();break;
<span style="white-space:pre case 3:AddAStudentInfo();break;
<span style="white-space:pre case 4:DelAStudentInfo();break;
<span style="white-space:pre case 5:ModifyAStudentInfo();break;
<span style="white-space:pre case 6:Exit();break;
<span style="white-space:pre default:printf("Please input right number!n");break;
<span style="white-space:pre }
<span style="white-space:pre }
}

/*将学生信息文件中的数据读入程序中的数据结构即数组变量中*/
void LoadAllStudent()
{
<span style="white-space:pre int i=0;
<span style="white-space:pre FILE *fp;
<span style="white-space:pre fp=fopen("E:\StudentInfo.txt","r");//以只读的方式打开文件
<span style="white-space:pre while( !feof(fp) )
<span style="white-space:pre {
<span style="white-space:pre if(fscanf(fp,"%s%s%s%s",stu.no,stu.name,stu.sex,stu.major)!=-1)//从文件中读数据,如果读进来0个数据
<span style="white-space:pre {
<span style="white-space:pre if( strcmp(stu.no,"")!=0 )//stu.no不为空串
<span style="white-space:pre {
<span style="white-space:pre stus=stu;<span style="white-space:pre

<span style="white-space:pre i++;
<span style="white-space:pre }
<span style="white-space:pre }
<span style="white-space:pre }
<span style="white-space:pre Count=i;
<span style="white-space:pre fclose(fp);
}

/*退出函数,退出时需要将此次运行程序时,对所有学生数据即stus数组回写到文件中,
因为此次运行中可能对数据进行了修改*/
void Exit()
{
<span style="white-space:pre FILE *fp;
<span style="white-space:pre int i=0;
<span style="white-space:pre fp=fopen("E:\StudentInfo.txt","w");//以写的方式打开文件
<span style="white-space:pre for( i=0;i<Count;i++ )
<span style="white-space:pre fprintf(fp,"%s %s %s %sn",stus.no,stus.name,stus.sex,stus.major);//向文件中回写
<span style="white-space:pre fclose(fp);
<span style="white-space:pre printf("nThank you for using this system!n");
<span style="white-space:pre printf("Press enter to exit...n");
<span style="white-space:pre getchar();
<span style="white-space:pre exit(0);
}

/*显示主菜单,通过输入不同的数字进行选择*/
void ShowMainMenu()
{
<span style="white-space:pre printf("=====Welcome to Student Management System!=====n");
<span style="white-space:pre printf("1.View All Student Informationn");
<span style="white-space:pre printf("2.View A Student Informationn");
<span style="white-space:pre printf("3.Add Student Informationn");
<span style="white-space:pre printf("4.Delete Student Informationn");
<span style="white-space:pre printf("5.Modify Student Informationn");
<span style="white-space:pre printf("6.Exitn");
<span style="white-space:pre printf("====================================n");
<span style="white-space:pre printf("Please Select:");
}

/*显示输入一个学号的提示信息*/
void ShowViewMenu()
{
<span style="white-space:pre printf("Please input student number(input $ to return):");
}

/*显示是否继续查看一个学生的相关信息*/
void ViewAStudentInfo()
{
<span style="white-space:pre char input[10];
<span style="white-space:pre if( Count==0 ) //一个学生也没有时
<span style="white-space:pre printf("nThere is no student!n");
<span style="white-space:pre else
<span style="white-space:pre {
<span style="white-space:pre while(1)
<span style="white-space:pre {
<span style="white-space:pre ShowViewMenu();
<span style="white-space:pre scanf("%s",input);
<span style="white-space:pre if (strcmp(input,"$") == 0)//不再查看
<span style="white-space:pre {
<span style="white-space:pre break;
<span style="white-space:pre }
<span style="white-space:pre else //查看
<span style="white-space:pre {
<span style="white-space:pre ShowStuInfo(input);
<span style="white-space:pre }
<span style="white-space:pre }
<span style="white-space:pre }
}

/*显示给定学号的学生详细信息,形参为学号*/
void ShowStuInfo( char* input )
{
<span style="white-space:pre int i=0;
<span style="white-space:pre int flag=0;
<span style="white-space:pre for( i=0;i<Count;i++ )//根据给定的形参input,到所有学生数据stus中一个个查找
<span style="white-space:pre {
<span style="white-space:pre if( strcmp(input,stus.no)==0 )//找到
<span style="white-space:pre {
<span style="white-space:pre flag=1;
<span style="white-space:pre printf("Find a studentn");
<span style="white-space:pre printf("%s %s %s %snn",stus.no,stus.name,stus.sex,stus.major);
<span style="white-space:pre break;
<span style="white-space:pre }
<span style="white-space:pre }
<span style="white-space:pre if( flag==0 )//没有找到
<span style="white-space:pre printf("Not found!nn");
}

/*显示所有学生的信息*/
void ViewAllStudentInfo()
{
<span style="white-space:pre int i=0;
<span style="white-space:pre if( Count==0 ) //一个学生也没有时
<span style="white-space:pre printf("nThere is no student!n");
<span style="white-space:pre else
<span style="white-space:pre {
<span style="white-space:pre printf("nNumber Name Sex Majorn");
<span style="white-space:pre for( i=0;i<Count;i++ )//输出所有的学生信息
<span style="white-space:pre {<span style="white-space:pre
<span style="white-space:pre printf("%-12s",stus.no);
<span style="white-space:pre printf("%-15s",stus.name);
<span style="white-space:pre printf("%-10s",stus.sex);
<span style="white-space:pre printf("%-15sn",stus.major);
<span style="white-space:pre }
<span style="white-space:pre }
<span style="white-space:pre printf("n");
}

/*添加一个学生信息*/
void AddAStudentInfo()
{
<span style="white-space:pre int i;
<span style="white-space:pre if( ShowInputAStudent()==1 )//输入一个学生的详细信息
<span style="white-space:pre {
<span style="white-space:pre if( FindStudent(stu.no) ) //已有次学生,就不能添加
<span style="white-space:pre {
<span style="white-space:pre printf("The student is already exist!n");
<span style="white-space:pre AddAStudentInfo();
<span style="white-space:pre }
<span style="white-space:pre else //将新添加的学生,按学号升序插入现有学生中
<span style="white-space:pre {
<span style="white-space:pre for( i=Count-1;i>=0;i-- )
<span style="white-space:pre {
<span style="white-space:pre if( strcmp(stus.no,stu.no)>0 )//比新添加学生学号大,则需要向后移一个
<span style="white-space:pre {
<span style="white-space:pre stus[i+1]=stus;
<span style="white-space:pre }
<span style="white-space:pre else //找到插入位置
<span style="white-space:pre {
<span style="white-space:pre stus[i+1]=stu;
<span style="white-space:pre break;
<span style="white-space:pre }
<span style="white-space:pre }
<span style="white-space:pre if( i==-1 ) //原有学生的学号都大,新添加的学生学号最小,即因插入第一个位置时
<span style="white-space:pre stus[0]=stu;
<span style="white-space:pre Count++;
<span style="white-space:pre printf("Insert success!n");
<span style="white-space:pre }
<span style="white-space:pre }
}

/*显示是否继续输入一个学生的详细信息*/
int ShowInputAStudent()
{
<span style="white-space:pre printf("Please input students no(input $ to return):");
<span style="white-space:pre scanf("%s",stu.no);
<span style="white-space:pre if( strcmp(stu.no,"$")!=0 )//继续
<span style="white-space:pre {
<span style="white-space:pre printf("Please input students name:");
<span style="white-space:pre scanf("%s",stu.name);
<span style="white-space:pre printf("Please input students sex:");
<span style="white-space:pre scanf("%s",stu.sex);
<span style="white-space:pre printf("Please input students major:");
<span style="white-space:pre scanf("%s",stu.major);
<span style="white-space:pre return 1;
<span style="white-space:pre }
<span style="white-space:pre else //结束加
<span style="white-space:pre return 0;
}

/*在所有学生中查找学号为形参no给定的值得学生*/
int FindStudent( char* no )
{
<span style="white-space:pre int i;
<span style="white-space:pre for( i=0;i<Count;i++ )
<span style="white-space:pre {
<span style="white-space:pre if( strcmp(no,stus.no)==0 )
<span style="white-space:pre return 1;
<span style="white-space:pre }
<span style="white-space:pre return 0;
}

/*删除一个学生信息*/
void DelAStudentInfo()
{
<span style="white-space:pre int i,j;
<span style="white-space:pre if( Count==0 ) //没有学生
<span style="white-space:pre {
<span style="white-space:pre printf("There is no student!n");
<span style="white-space:pre return;
<span style="white-space:pre }
<span style="white-space:pre if( ShowDeleteAStudent()==1 ) //删除
<span style="white-space:pre {
<span style="white-space:pre if( !FindStudent(stu.no) ) //没有删除的学生
<span style="white-space:pre {
<span style="white-space:pre printf("The student is not exist!n");
<span style="white-space:pre DelAStudentInfo();
<span style="white-space:pre }
<span style="white-space:pre else //有要删除的学生
<span style="white-space:pre {
<span style="white-space:pre for( i=0;i<Count;i++ )
<span style="white-space:pre {<span style="white-space:pre
<span style="white-space:pre if( strcmp(stu.no,stus.no)==0 ) //找到要删除的学生
<span style="white-space:pre {
<span style="white-space:pre for( j=i;j<Count-1;j++ ) //被删除学生后面的学生需要向前移
<span style="white-space:pre {
<span style="white-space:pre stus[j]=stus[j+1];
<span style="white-space:pre }
<span style="white-space:pre //原来的最后一个学生的位置置空
<span style="white-space:pre strcpy(stus[Count-1].no,"");
<span style="white-space:pre strcpy(stus[Count-1].name,"");
<span style="white-space:pre strcpy(stus[Count-1].sex,"");
<span style="white-space:pre strcpy(stus[Count-1].major,"");
<span style="white-space:pre Count--;//学生数减一
<span style="white-space:pre }
<span style="white-space:pre }
<span style="white-space:pre }<span style="white-space:pre
<span style="white-space:pre }
}

/*显示是否继续删除一个学生*/
int ShowDeleteAStudent()
{
<span style="white-space:pre printf("Please input students no(input $ to return):");
<span style="white-space:pre scanf("%s",stu.no);
<span style="white-space:pre if( strcmp(stu.no,"$")!=0 )//删除
<span style="white-space:pre return 1;
<span style="white-space:pre else //不删除
<span style="white-space:pre return 0;
}

/*修改一个学生信息*/
void ModifyAStudentInfo()
{
<span style="white-space:pre int i;
<span style="white-space:pre if( Count==0 )
<span style="white-space:pre {
<span style="white-space:pre printf("There is no student!n");
<span style="white-space:pre return;
<span style="white-space:pre }
<span style="white-space:pre if( ShowModifyAStudent()==1 )
<span style="white-space:pre {
<span style="white-space:pre if( !FindStudent(stu.no) )
<span style="white-space:pre {
<span style="white-space:pre printf("The student is not exist!n");
<span style="white-space:pre ModifyAStudentInfo();
<span style="white-space:pre }
<span style="white-space:pre else
<span style="white-space:pre {
<span style="white-space:pre printf("Please input students name:");
<span style="white-space:pre scanf("%s",stu.name);
<span style="white-space:pre printf("Please input students sex:");
<span style="white-space:pre scanf("%s",stu.sex);
<span style="white-space:pre printf("Please input students major:");
<span style="white-space:pre scanf("%s",stu.major);<span style="white-space:pre

<span style="white-space:pre for( i=0;i<Count;i++ )
<span style="white-space:pre {
<span style="white-space:pre if( strcmp(stu.no,stus.no)==0 )//找到修改
<span style="white-space:pre {<span style="white-space:pre
<span style="white-space:pre stus=stu;
<span style="white-space:pre printf("Modify success!n");
<span style="white-space:pre break;
<span style="white-space:pre }
<span style="white-space:pre }
<span style="white-space:pre }<span style="white-space:pre
<span style="white-space:pre }
}

/*显示是否继续修改一个学生*/
int ShowModifyAStudent()
{
<span style="white-space:pre printf("Please input students no(input $ to return):");
<span style="white-space:pre scanf("%s",stu.no);
<span style="white-space:pre if( strcmp(stu.no,"$")!=0 )
<span style="white-space:pre return 1;
<span style="white-space:pre else
<span style="white-space:pre return 0;
}


View the full article
 
Back
Top