软件实习-学生管理系统

/*10.学生信息管理  
[问题描述]
编写一个程序实现学生基本信息的管理功能。
[基本要求]
(1)每个学生的基本信息包括:学号,姓名,性别,出生日期,所属学院,专业,年级等,其中学号不允许重复。。
(2)采用交互工作方式,输入N个学生的基本信息,N的值大于10。
(3)建立数据文件,存入所输入的N个学生的信息,数据文件按关键字(学号)进行排序,排序方法可以自己选择。
(4)可以对学生的基本信息进行更新操作(添加、删除),更新之后的数据文件保持原有的有序性。
(5)查询操作: (用二分查找实现以下操作)
A.按姓名查询 
B.按学号查询
C.提供模糊查找的功能,如输入“刘”,可以查找到所有姓“刘”的学生的基本信息。
*/
#include<iostream>
#define N 100
using namespace std;
class sim
{
public:
	void init(sim s[],int n);
	void show(sim s[],int n);
	void insert(sim s[],int n,int n1);
	void del(sim s[],int n,int n2);
	void find1(sim s[],int n,char f[]);
	void find2(sim s[],int n,char f[]);
	void find3(sim s[],int n,char c[]);
	char sname[20];//sname 本来应该代表sn(student number) ,但是我马虎写成了 sname,所以.....
	char name[20];
	char sex[4];
	char bd[20];//birthday
	char c[20];//college
	char m[20];//major
	char g[20];//grade
};
void sim::init(sim s[],int n)//initialization.
{
	for(int i=0;i<n;i++)
	{
		cout<<"请输入学号"<<endl;
		cin>>s[i].sname;
		cout<<"请输入姓名"<<endl;
		cin>>s[i].name;
		cout<<"请输入性别"<<endl;
		cin>>s[i].sex;
		cout<<"请输入出生日期"<<endl;
		cin>>s[i].bd;
		cout<<"请输入所属学院"<<endl;
		cin>>s[i].c;
		cout<<"请输入所属专业"<<endl;
		cin>>s[i].m;
		cout<<"请输入年级"<<endl;
		cin>>s[i].g;
	}
}
void sim::show(sim s[],int n)//输出已输入的数据
{	
	int j=0;
	for(int i=0;i<n;i++)
	{
		cout<<endl;
		cout<<"学号: "<<s[i].sname<<endl;
		cout<<"姓名: "<<s[i].name<<endl;
		cout<<"性别(1 for male, 0 for female): "<<s[i].sex<<endl;
		cout<<"出生日期: "<<s[i].bd<<endl;
		cout<<"所属学院: "<<s[i].c<<endl;
		cout<<"专业: "<<s[i].m<<endl;
		cout<<"年级: "<<s[i].g<<endl;
		cout<<endl;
		j=1;
	}
	if(j==0)
	{
		cout<<endl;
		cout<<"无学生信息!"<<endl;
		cout<<endl;
	}
	cout<<"学生总数:"<<n<<endl;
}
void sim::insert(sim s[],int n,int n1)//插入学生信息
{                                         //      0 1 2                                 0 1 2 3
	for(int i=n-2;i>=n1-1;i--)//ex: 有3个学生信息:a,b,c要将d学生的信息插入到1号位置,则为a d b c   .(用户输入的1代表0,2代表1,即用户输入i,这里对应的下标应为i-1)
	{
		strcpy(s[i+1].sname,s[i].sname);
		strcpy(s[i+1].name,s[i].name);
		strcpy(s[i+1].sex,s[i].sex);
		strcpy(s[i+1].bd,s[i].bd);
		strcpy(s[i+1].c,s[i].c);
		strcpy(s[i+1].m,s[i].m);
		strcpy(s[i+1].g,s[i].g);
	}
		i+=1;//总长+1
		cout<<"请输入学号"<<endl;
		cin>>s[i].sname;
		cout<<"请输入姓名"<<endl;
		cin>>s[i].name;
		cout<<"请输入性别"<<endl;
		cin>>s[i].sex;
		cout<<"请输入出生日期"<<endl;
		cin>>s[i].bd;
		cout<<"请输入所属学院"<<endl;
		cin>>s[i].c;
		cout<<"请输入所属专业"<<endl;
		cin>>s[i].m;
		cout<<"请输入年级"<<endl;
		cin>>s[i].g;

}
void sim::del(sim s[],int n,int n2)
{
	for(int i=n2-1;i<n;i++){
			{
				strcpy(s[i].sname,s[i+1].sname);
				strcpy(s[i].name,s[i+1].name);
				strcpy(s[i].sex,s[i+1].sex);
				strcpy(s[i].bd,s[i+1].bd);
				strcpy(s[i].c,s[i+1].c);
				strcpy(s[i].m,s[i+1].m);
				strcpy(s[i].g,s[i+1].g);
			}
	}

}
void sim::find1(sim s[],int n,char f[])//查询方法1
{
	int j=0;
	for(int i=0;i<n;i++)
	{
		if(!strcmp(s[i].sname,f))
		{
			cout<<"学号: "<<s[i].sname<<endl;
			cout<<"姓名: "<<s[i].name<<endl;
			cout<<"性别: "<<s[i].sex<<endl;
			cout<<"出生日期: "<<s[i].bd<<endl;
			cout<<"所属学院: "<<s[i].c<<endl;
			cout<<"专业: "<<s[i].m<<endl;
			cout<<"年级: "<<s[i].g<<endl;
			cout<<endl;
			j=1;
		}
	
	}
	if(j==0)
	{
		cout<<endl;
		cout<<"无该学生信息!"<<endl;
		cout<<endl;
	}
}
void sim::find2(sim s[],int n,char f[])//查询方法2
{
	int j=0;
	for(int i=0;i<n;i++)
	{
		if(!strcmp(s[i].name,f))
		{
			cout<<"学号: "<<s[i].sname<<endl;
			cout<<"姓名: "<<s[i].name<<endl;
			cout<<"性别: "<<s[i].sex<<endl;
			cout<<"出生日期: "<<s[i].bd<<endl;
			cout<<"所属学院: "<<s[i].c<<endl;
			cout<<"专业: "<<s[i].m<<endl;
			cout<<"年级: "<<s[i].g<<endl;
			cout<<endl;
			j=1;
		}
	
	}
	if(j==0)
	{
		cout<<endl;
		cout<<"无该学生信息!"<<endl;
		cout<<endl;
	}
}
void sim::find3(sim s[],int n,char c[])//查询方法3
{
	int k=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<strlen(s[i].name);j++)
		{
			if(c[0]==s[i].name[j])//ex: 模糊查找输入了一个字:森;s[i].name="黄逸森",则会用森字分别和黄,逸,森,三个字进行比较,符合则输出
			{
				cout<<"学号: "<<s[i].sname<<endl;
				cout<<"姓名: "<<s[i].name<<endl;
				cout<<"性别: "<<s[i].sex<<endl;
				cout<<"出生日期: "<<s[i].bd<<endl;
				cout<<"所属学院: "<<s[i].c<<endl;
				cout<<"专业: "<<s[i].m<<endl;
				cout<<"年级: "<<s[i].g<<endl;
				cout<<endl;
				k=1;
			}
		}
	}
	if(k==0)
	{
		cout<<endl;
		cout<<"无该学生信息!"<<endl;
		cout<<endl;
	}
}
void write(sim s[],int n)//将数据写入文件
{	
	FILE *fp;
	fp=fopen("F:\\Students_Information.txt","w");
	for(int i=0;i<n;i++)
	{
		fputs("学号: ",fp);
		fputs(s[i].sname,fp);
		fputs("\n",fp);
		fputs("姓名: ",fp);
		fputs(s[i].name,fp);
		fputs("\n",fp);
		fputs("性别: ",fp);
		fputs(s[i].sex,fp);
		fputs("\n",fp);
		fputs("出生日期: ",fp);
		fputs(s[i].bd,fp);
		fputs("\n",fp);
		fputs("所属学院: ",fp);
		fputs(s[i].c,fp);
		fputs("\n",fp);
		fputs("专业: ",fp);
		fputs(s[i].m,fp);
		fputs("\n",fp);
		fputs("年级: ",fp);
		fputs(s[i].g,fp);
		fputs("\n",fp);
		fputs("\n",fp);
	}
}
void maopao(sim s1[],int n)
{
	sim s2[5];
	for(int i=0;i<n-1;i++)
		for(int j=0;j<n-1-i;j++)
		{
			if(strcmp(s1[j].sname,s1[j+1].sname)>0)
			{
				s2[0]=s1[j];
				s1[j]=s1[j+1];
				s1[j+1]=s2[0];
			}
		}
}
int erfen(sim s1[],char f[],int n)//二分查找
{
	int l=0,r=n-1,m;
	while(l<=r)
	{
		m=(l+r)/2;
		if(strcmp(f,s1[m].sname)>0)
			l=m+1;
		else if(strcmp(f,s1[m].sname)<0)
			r=m-1;
		else
			return m;
	}
	return -1;
}
void main()
{
	sim s,s1[N];
	int n,m,n1,n2;
	cout<<"请输入你要输入的学生总数"<<endl;
	cin>>n;
	while(1)
	{
		cout<<"功能如下:"<<endl;
		cout<<"         1.输入学生数据(重复运行这步会把数据覆盖。)"<<endl;
		cout<<"         2.添加学生"<<endl;
		cout<<"         3.删除指定学生数据"<<endl;
		cout<<"         4.查询指定学生数据"<<endl;
		cout<<"         5.显示所有学生数据"<<endl;
		cout<<"         6.结束输入,并将数据写入到文件 (Path:F:\\Students_Information.txt) "<<endl;
		cout<<"         7.按学号进行升序排序"<<endl;
		cin>>m;
		if(m==1)
		{	
			cout<<"!!!!!Attentions:学号不能重复!!!!"<<endl;
			s.init(s1,n);
		}
		else if(m==2)
		{	n+=1;
			cout<<"插入到第几个学生?"<<endl;
			cin>>n1;
			s.insert(s1,n,n1);
		}
		else if(m==3)
		{	
			cout<<"你想删除哪一个学生的信息?"<<endl;
			cin>>n2;
			s.del(s1,n,n2);
			n-=1;
		}
		else if(m==4)
		{
			int i,j=0;
			char f[30],c[1];
			cout<<"查询方式:"<<endl;
			cout<<"         1.输入学号查找."<<endl;
			cout<<"         2.输入姓名查找."<<endl;
			cout<<"         3.模糊查找,如输入“刘”,可以查找到所有姓名中有“刘”字的学生的基本信息."<<endl;
			cin>>i;
			if(i==1)
			{
				cout<<"请输入要查询的学号"<<endl;
				cin>>f;
			/*  j=erfen(s1,f,n);//若要用二分查找,则将注释去掉即可
				if(j==-1)
				cout<<"无该学生信息!"<<endl;
				else
				{
					cout<<"学号: "<<s[j].sname<<endl;
					cout<<"姓名: "<<s[j].name<<endl;
					cout<<"性别: "<<s[j].sex<<endl;
					cout<<"出生日期: "<<s[j].bd<<endl;
					cout<<"所属学院: "<<s[j].c<<endl;
					cout<<"专业: "<<s[j].m<<endl;
					cout<<"年级: "<<s[j].g<<endl;
					cout<<endl;
				}*/
				s.find1(s1,n,f);
			}
			else if(i==2)
			{
				cout<<"请输入要查询的姓名"<<endl;
				cin>>f;
				s.find2(s1,n,f);
			}
			else if(i==3)
			{
				cout<<"请输入要查询学生姓名中含有的一个字"<<endl;
				cin>>c;
				s.find3(s1,n,c);
			}
		}
		else if(m==5)
		{
			s.show(s1,n);
		}
		else if(m==6)
		{
			write(s1,n);
			break;
		}
		else if(m==7)
		{
			maopao(s1,n);
		}
	}


	
}

一、项目简介 本项目是一套基于JavaWeb的学生实习管理系统/学生实训管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后台框架:JSP、Servlet、JDBC ​数据库:MySQL 开发环境:JDK、Eclipse、Tomcat 三、系统功能 该学生实习管理系统采用B/S结构,使用JAVA开发语言,结合JSP技术,以MySQL作为后台数据库。 该系统共包含三种角色:学生、老师、管理员等,每种角色分别有不同的功能模块。管理员可以管理班级、学生、老师等基本信息;学生可以管理个人实习日志及实习反馈信息;老师可以对学生的实习情况进行评价。 各角色的具体功能如下: 1.学生 实习日志管理模块:学生通过该模块管理个人实习日志信息,包括实习日志的添加、查看操作。 实习反馈管理模块:学生通过该模块管理个人实习反馈信息,包括实习反馈的添加、查看操作 2.老师 实习评价管理模块:老师通过该模块管理学生实习评价信息,包括评价信息的添加、查看操作 3.管理员 班级信息管理模块:管理员通过该模块管理班级信息,包括班级信息添加、查询、删除等操作。 学生信息管理模块:管理员通过该模块管理学生信息,包括学生信息添加、查询、删除等操作。 老师信息管理模块:管理员通过该模块管理老师信息,包括老师信息添加、查询、删除等操作。 通知信息管理模块:管理员通过该模块管理通告信息,包括通告信息添加、查询、删除等操作。 实习信息管理模块:管理员通过该模块管理学生实习信息,包括学生实习信息添加、查询、删除等操作。 修改个人密码:管理员登录系统,可以修改自己的登录密码。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值