怎么样用c语言编学生信息管理系统?

如题所述

#include<iostream.h>
#include<stdio.h>
#define FILENAME "student.dat"
struct student
{
char name[10];
char num[10];
int age;
};
/////////////////////////////////////////////
FILE *fp;
int fileopen()
{

if((fp=fopen(FILENAME,"r"))==NULL)
{
fopen(FILENAME,"w");
cout<<"文件打开失败重新创建记录文件";
return 0;
}
fp=fopen(FILENAME,"r+");
return 1;
}
void fileclose()
{
fclose(fp);
}
////////////////////////
int stu_add()
{
student temp;
char input_temp[1];
fileopen();
while((fread(&temp,sizeof(temp),1,fp))==1) {}
while(1)
{
cout<<endl<<"输入学生姓名:";cin>>temp.name;
cout<<endl<<"输入学号:";cin>>temp.num;
cout<<endl<<"输入年龄";cin>>temp.age;
fwrite(&temp,sizeof(temp),1,fp);
cout<<endl<<"是否继续?(选否请按数字键0)";cin>>input_temp ;

if(strcmp(input_temp,"0")==0)
{
fileclose();
return 1;

}
}
}
//////////////////////////////

void stu_del()
{
char name_temp[10];
student temp;
cout<<endl<<"请输入要删除学生的姓名:";
cin>>name_temp;
fileopen();
cout<<endl<<"姓 名"<<" "<<"学 号"<<" "<<"年 龄"<<endl;
int i,j,k;
for(i=0;fread(&temp,sizeof(temp),1,fp)==1;i++)
{
if(strcmp(temp.name,name_temp)==0)
{
j=i;
}
}
student stu_temp[i];
rewind(fp);
for(k=0;fread(&stu_temp[k],sizeof(struct student),1,fp)!=0;k++) ;
fileclose();
for(k=j;k+1<i;k++)
{
strcpy(stu_temp[k].name,stu_temp[k+1].name) ;
strcpy(stu_temp[k].num,stu_temp[k+1].num);
stu_temp[k].age=stu_temp[k+1].age;
}
FILE *fp2;
fp2=fopen(FILENAME,"w");
for(k=0;k<i-1;k++)
{
fwrite(&stu_temp[k],sizeof(struct student),1,fp);
}
fclose(fp2);
cout<<endl<<"删除完毕"<<endl;
}
//////////////////////////////
void stu_search_name()
{
char name_temp[10];
student temp;
cout<<endl<<"请输入要查询的姓名:";
cin>>name_temp;
fileopen();
cout<<endl<<"姓 名"<<" "<<"学 号"<<" "<<"年 龄"<<endl;
while(fread(&temp,sizeof(temp),1,fp)==1)
{
if(strcmp(name_temp,temp.name)==0)
{
cout<<temp.name<<" "<<temp.num<<" "<<temp.age<<endl;
}
}
fileclose();
}
void stu_search_num()
{
char num_temp[10];
student temp;
cout<<endl<<"请输入要查询的姓名:";
cin>>num_temp;
fileopen();
cout<<endl<<"姓 名"<<" "<<"学 号"<<" "<<"年 龄"<<endl;
while(fread(&temp,sizeof(temp),1,fp)==1)
{
if(strcmp(num_temp,temp.num)==0)
{
cout<<temp.name<<" "<<temp.num<<" "<<temp.age<<endl;
}
}
fileclose();
}
void stu_search_age()
{
int age_temp1=0;
int age_temp2=0;
student temp;
cout<<endl<<"请输入起始年龄:";
cin>>age_temp1;
cout<<endl<<"请驶入终止年龄:";
cin>>age_temp2;
cout<<endl<<"姓 名"<<" "<<"学 号"<<" "<<"年 龄"<<endl;
while(fread(&temp,sizeof(temp),1,fp)==1)
{
if(temp.age>=age_temp1&&temp.age<=age_temp2)
{
cout<<temp.name<<" "<<temp.num<<" "<<temp.age<<endl;
}
}
}
int stu_search()
{
student temp;
fileopen();
cout<<endl<<"姓 名"<<" "<<"学 号"<<" "<<"年 龄"<<endl;
while(fread(&temp,sizeof(temp),1,fp)==1)
{
cout<<temp.name<<" "<<temp.num<<" "<<temp.age<<endl;
}
rewind(fp);
int input_temp=0;
while(1)
{
cout<<endl<<"1、按姓名查询"<<endl;
cout<<"2、按学号查询"<<endl;
cout<<"3、按年龄段查询"<<endl;
cout<<"0、返回上级目录"<<endl;
cout<<"请选择查询类型"<<endl;
cin>>input_temp;
switch(input_temp)
{
case 1:stu_search_name();break;
case 2:stu_search_num();break;
case 3:stu_search_age();break;
case 0:return 1;
}
}
fileclose();
}

////////////////////////////
void show()
{
cout<<"学生管理系统"<<endl;
int temp=0;
while(1)
{
cout<<endl<<"1、添加学生信息。"<<endl;
cout<<"2、查询学生信息。"<<endl;
cout<<"3、删除学生信息。"<<endl;
cout<<"0、退出系统"<<endl;
cout<<"请选择服务类型。"<<endl;
cin>>temp;
switch(temp)
{
case 1:stu_add();break;
case 2:stu_search();break;
case 3:stu_del();break;
case 0:exit(0);
}
}
}
void main()
{
int temp;
temp=fileopen();
show();
}赞同3| 评论
温馨提示:答案为网友推荐,仅供参考
相似回答