⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 028245.cpp

📁 数据结构实验课中的所有实验程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	cout<<"请输入您要查询的姓名:"<<endl;
	cin>>temp;
	while(strcmp(temp,B[i].name)!=0)
		i++;
	loc=B[i].loc;
	cout<<A[loc-1].number<<"\t"<<A[loc-1].name<<"\t"<<A[loc-1].sex<<"\t"<<A[loc-1].classin<<"\t"<<A[loc-1].birth<<"\t"<<A[loc-1].telephone<<"\t"<<A[loc-1].address<<"\t"<<A[loc-1].instructor<<"\t"<<endl;
	return loc-1;
}
int classinsearch(classinindex B[])//按班级查询--顺序表
{
	char temp[20];
	int loc;
	int i=0;
	cout<<"请输入您要查询的班级:"<<endl;
	cin>>temp;
	while(strcmp(temp,B[i].classin)!=0)
		i++;
	loc=B[i].loc;
	cout<<A[loc-1].number<<"\t"<<A[loc-1].name<<"\t"<<A[loc-1].sex<<"\t"<<A[loc-1].classin<<"\t"<<A[loc-1].birth<<"\t"<<A[loc-1].telephone<<"\t"<<A[loc-1].address<<"\t"<<A[loc-1].instructor<<"\t"<<endl;
	return loc-1;
}
int instructorsearch(instructorindex B[])//按指导老师查询--顺序表
{
	char temp[10];
	int loc;
	int i=0;
	cout<<"请输入您要查询的指导老师:"<<endl;
	cin>>temp;
	while(strcmp(temp,B[i].instructor)!=0)
		i++;
	loc=B[i].loc;
	cout<<A[loc-1].number<<"\t"<<A[loc-1].name<<"\t"<<A[loc-1].sex<<"\t"<<A[loc-1].classin<<"\t"<<A[loc-1].birth<<"\t"<<A[loc-1].telephone<<"\t"<<A[loc-1].address<<"\t"<<A[loc-1].instructor<<"\t"<<endl;
	return loc-1;
}

int searchinstructor()//指导老师查询
{
	instructor_index();
	
	int i=0;
	fstream f1;
	f1.open("d:\\instructor_index.txt",ios::in|ios::out);
	cout<<"从指导教师索引文件中读取索引:"<<endl;
	while(!f1.eof()&&i<N)
	{		
		f1>>E[i].loc>>E[i].instructor;
		cout<<E[i].loc<<"\t"<<E[i].instructor<<endl;
		i++;
	}
	f1.close();
	return instructorsearch(E);//按指导老师查询
}
int searchclassin()//班级查询
{
	classin_index();
	int i=0;
	fstream f1;
	f1.open("d:\\name_index.txt",ios::in|ios::out);
	cout<<"从姓名索引文件中读取索引:"<<endl;
	while(!f1.eof()&&i<N)
	{		
		f1>>C[i].loc>>C[i].name;
		cout<<C[i].loc<<"\t"<<C[i].name<<endl;
		i++;
	}
	f1.close();
	return classinsearch(D);//按班级查询
}
int searchnumber()//学号查询
{
	number_index();//创建学号索引文件
	int i=0;
	fstream f1;
	f1.open("d:\\number_index.txt",ios::in|ios::out);
	cout<<"从学号索引文件中读取索引:"<<endl;
	while(!f1.eof()&&i<N)
	{		
		f1>>B[i].loc>>B[i].number;
		cout<<B[i].loc<<"\t"<<B[i].number<<endl;
		i++;
	}
	f1.close();
	return numbersearch(B);//按学号查询
}
int searchname()//姓名查询
{
	name_index();
	int i=0;
	fstream f1;
	f1.open("d:\\name_index.txt",ios::in|ios::out);
	cout<<"从姓名索引文件中读取索引:"<<endl;
	while(!f1.eof()&&i<N)
	{		
		f1>>C[i].loc>>C[i].name;
		cout<<C[i].loc<<"\t"<<C[i].name<<endl;
		i++;
	}
	f1.close();
	return namesearch(C);//按姓名查询
}
int search()//查询search
{
	int  i,input;
	cout<<"请输入查询方式:"<<endl;
	cout<<"1、按学号查询"<<endl;
	cout<<"2、按姓名查询"<<endl;
	cout<<"3、按班级查询"<<endl;
	cout<<"4、按指导老师查询"<<endl;
	cin>>input;
	switch(input)
	{
	case 1:
		{
			i=searchnumber();
			break;
		}
	case 2:
		{
			i=searchname();
			break;
		}
	case 3:
		{
			i=searchclassin();
			break;
		}
	case 4:
		{
			i=searchinstructor();
			break;
		}
	default:
		break;
	}
	return i;
}
//////////////////////////////////////////////////////////////////

void modify(int i)//修改主索引中的相应数据
{
	fstream f1;
	f1.open("d:\\data.txt",ios::in|ios::out|ios::trunc);
	cout<<"请选择您想修改的属性:"<<endl;
	cout<<"1、学号"<<endl;
	cout<<"2、姓名"<<endl;
	cout<<"3、性别"<<endl;
	cout<<"4、班级"<<endl;
	cout<<"5、出生日期"<<endl;
	cout<<"6、电话"<<endl;
	cout<<"7、住址"<<endl;
	cout<<"8、指导教师"<<endl;
	int choose;
	cin>>choose;
	switch(choose)
	{
	case 1:
		{
			cout<<"请输入您修改后的学号:";
			cin>>A[i].number;
			break;
		}
	case 2:
		{
			cout<<"请输入您修改后的姓名:";
			cin>>A[i].name;
			break;
		}
	case 3:
		{
			cout<<"请输入您修改后的性别:";
			cin>>A[i].sex;
			break;
		}
	case 4:
		{
			cout<<"请输入您修改后的班级:";
			cin>>A[i].classin;
			break;
		}
	case 5:
		{
			cout<<"请输入您修改后的出生日期:";
			cin>>A[i].birth;
			break;
		}
	case 6:
		{
			cout<<"请输入您修改后的电话:";
			cin>>A[i].telephone;
			break;
		}
	case 7:
		{
			cout<<"请输入您修改后的住址:";
			cin>>A[i].address;
			break;
		}
	case 8:
		{
			cout<<"请输入您修改后的指导教师:";
			cin>>A[i].instructor;
			break;
		}
	default:
		break;
	}
	cout<<A[i].number<<"\t"<<A[i].name<<"\t"<<A[i].sex<<"\t"<<A[i].classin<<"\t"<<A[i].birth<<"\t"<<A[i].telephone<<"\t"<<A[i].address<<"\t"<<A[i].instructor<<"\t"<<endl;
	cout<<"修改后:"<<endl;
	for(i=0;i<N&&A[i].number!=-1;i++)
	{
		if(i!=0)
				f1<<endl;
		f1<<A[i].number<<"\t"<<A[i].name<<"\t"<<A[i].sex<<"\t"<<A[i].classin<<"\t"<<A[i].birth<<"\t"<<A[i].telephone<<"\t"<<A[i].address<<"\t"<<A[i].instructor;
		cout<<A[i].number<<"\t"<<A[i].name<<"\t"<<A[i].sex<<"\t"<<A[i].classin<<"\t"<<A[i].birth<<"\t"<<A[i].telephone<<"\t"<<A[i].address<<"\t"<<A[i].instructor<<"\t"<<endl;
	}
	f1.close();	
}
//////////////////////////////////////////////////////////////////


void change()  //修改                过程:
{
	writein_display();       //从主索引文件中读出数据并输出
	int i=search();           //调用search函数,返回需要修改数据的地址
	modify(i);                 //修改主索引文件中相应数据,并将修改后的数据项输出
	changeindex();              //修改各索引文件数据内容
}
////////////////////////////////////////////////////////////

void insert()//插入              
{
	fstream f3;
	f3.open("d:\\data.txt",ios::in|ios::out|ios::trunc);//打开主索引文件,将数据添加到文件最后
	for(int i=0;A[i].number!=-1&&i<N;i++);
	cout<<"请输入学号"<<endl;
	cin>>A[i].number;
	cout<<"请输入姓名"<<endl;
	cin>>A[i].name;
	cout<<"请输入性别"<<endl;
	cin>>A[i].sex;
	cout<<"请输入班级"<<endl;
	cin>>A[i].classin;     //班级
	cout<<"请输入生日"<<endl;
	cin>>A[i].birth;       //生日
	cout<<"请输入电话"<<endl;
	cin>>A[i].telephone;   //电话
	cout<<"请输入地址"<<endl;
	cin>>A[i].address;     //地址
	cout<<"请输入指导老师"<<endl;
	cin>>A[i].instructor;  //指导老师
	for(int j=0;j<=i;j++)             //显示数据
	{
		if(j!=0)
				f3<<endl;
		f3<<A[j].number<<"\t"<<A[j].name<<"\t"<<A[j].sex<<"\t"<<A[j].classin<<"\t"<<A[j].birth<<"\t"<<A[j].telephone<<"\t"<<A[j].address<<"\t"<<A[j].instructor;
	}
	f3.close();
	changeindex();                    //修改所有的索引文件
}
/////////////////////////////////////////////////////////////////

void remove()//删除
{
    int i=search();                //搜索主索引找到删除数据的位置
	for(int k=i;k<N&&A[k].number!=-1;k++)       //其后数据逐一前移
	{
		A[k]=A[k+1];
	}
	fstream f3;
	f3.open("d:\\data.txt",ios::out|ios::trunc);
	for(int j=0;j<=k-1;j++)
	{
		if(j!=0)
				f3<<endl;
		f3<<A[j].number<<"\t"<<A[j].name<<"\t"<<A[j].sex<<"\t"<<A[j].classin<<"\t"<<A[j].birth<<"\t"<<A[j].telephone<<"\t"<<A[j].address<<"\t"<<A[j].instructor;
	}
	f3.close();
	cout<<"删除操作成功!"<<endl;
	changeindex();                      //修改所有的索引文件
}
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
void main()
{    
	cout<<endl<<endl<<"欢迎参与测试程序!!"<<endl<<endl<<endl;
	cout<<"  *******************************程序说明***********************************"<<endl;
	cout<<"  *本程序是一个简单的学生毕业设计信息管理系统,其功能是可对毕业生的各种信息*"<<endl;
	cout<<"  *(包括学号、姓名、性别、班级、电话、住址、指导教师)进行查询、检索、修改、*"<<endl;
	cout<<"  *删除和排序,其中运用了索引结构、顺序表、搜索树、文件操作、查找、排序、搜 *"<<endl;
	cout<<"  *索等抽象数据类型和算法,程序代码简明易懂,操作简单方便,使其具有实用性。*"<<endl;
	cout<<"  *另外要感谢老师和各位同学的帮助和支持,在编程的道路上我将继续奋进!!    *"<<endl;
	cout<<"  **************************************************************************"<<endl<<endl<<endl;
	int input;
	do
	{
		cout<<" 请输入您所选择的功能:"<<endl;
		cout<<"1、 创建一个毕业生信息文件"<<endl;
		cout<<"2、 显示目前文件内容"<<endl;
		cout<<"3、 创建学号主索引"<<endl;
		cout<<"4、 创建姓名索引"<<endl;
		cout<<"5、 创建班级索引"<<endl;
		cout<<"6、 创建指导老师索引"<<endl;
		cout<<"7、 显示索引文件内容"<<endl;
		cout<<"8、 插入一个新毕业生信息"<<endl;
		cout<<"9、 删除一个毕业生信息"<<endl;
		cout<<"10、查询学生信息"<<endl;
		cout<<"11、修改学生信息"<<endl;
		cout<<"12、退出"<<endl;
		
		cin>>input;
		switch(input)
		{
		case 1:
			{
			    setup();
				break;
			}
		case 2:
			{
				writein_display();
				break;
			}
		case 3:
			{
				number_index();
				break;
			}
		case 4:
			{
				name_index();
				break;
			}
		case 5:
			{
				classin_index();
				break;
			}
		case 6:
			{
				instructor_index();
				break;
			}
		case 7:
			{ show_index();
			   break;}
		case 8:
			{
				insert();
				break;
			}
		case 9:
			{
				remove();
				break;
			}
		case 10:
			{
				search();
				break;
			}
		case 11:
			{
				change();
				break;
			}
        
		}
	}while(input!=12);
	exit(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -