#include<iostream>
#define _WIN32_WINNT 0x0500
#include<conio.h>
#include<windows.h>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<vector>
#include<iomanip>
#define MALE 1
#define FEMALE 2
#define LL long long
using namespace std;
#include "student.h"
vector<student > stu;
#include "top.h"
#include "corporation.h"
vector<Corporation > C;
void Printstin(struct student s)//打印学生信息
{
pt();
// printf("201522332\tklc\tnan\tgrade1\tcomputerscience\n");//学号\t姓名\t性别\t年级\t专业
printf("%-10I64d\t%s\t",s.num,s.name);
if(s.sex==FEMALE) printf("女");
else if(s.sex==MALE) printf("男");
else printf("未知性别");
printf("\t%d年级\t%s\n",s.grade,s.major);
/**找到包含此学生的社团,并保存到string S中**/
vector<string > w;
vector<int > e;
w.clear();
e.clear();
int i,j,d=C.size(),p;
for(i=0; i<d; i++)
{
p=C[i].studen.size();
for(j=0; j<p; j++)
{
if(C[i].studen[j]==s.num)
{
w.push_back(C[i].name);
e.push_back(C[i].num);
break;
}
}
}
p=w.size();
if(p!=0)
{
pt();
puts("已加入的社团:");
pt();
j=0;
for(i=0; i<p; i++)
{
if(j==5)
{
puts("");
pt();
j=0;
}
cout<<w[i]<<"("<<e[i]<<") ";
}
}
printf("\n");
}
int Addstudent(struct student &tep)//添加学生
{
pt();
puts("■添加新学生:");
//int et=0;
char c;
char ss[100];
while(1)
{
pt();
printf("■输入学号:");
gets(ss);
int t=judge1(ss);
if(t==-1)
{
tep.num=change(ss);
while(1)
{
pt();
printf("■输入姓名:");
gets(ss);
if(judge2(ss)==1)
{
strcpy(tep.name,ss);
while(1)
{
pt();
printf("■输入一个数字代表性别:1为男,2为女:");
gets(ss);
if(judge3(ss)==1)
{
tep.sex=ss[0]-'0';
while(1)
{
pt();
printf("■输入年级(纯数字):");
gets(ss);
if(judge4(ss)==1)
{
tep.grade=change(ss);
while(1)
{
pt();
printf("■输入专业:");
gets(ss);
if(judge2(ss)==1)
{
strcpy(tep.major,ss);
system("cls");
pt();
puts("■请确认该学生信息:");
tabs();
Printstin(tep);
pt();
puts("■确认添加按Y,取消按N");
c=getch();
while(YNjudge(c)==0)
{
c=getch();
}
if(c=='Y'||c=='y')
{
//添加
stu.push_back(tep);
sort(stu.begin(),stu.end(),Cmp);
pt();
puts("■已成功添加");
}
else
{
pt();
puts("■已取消添加");
}
return 1;
}
else
{
pt();
printf("■专业格式错误,按Y重新输入,按N退出");
c=getch();
puts("");
while(YNjudge(c)==0)
{
c=getch();
}
if(c=='N'||c=='n') return 0;
}
}
}
else
{
pt();
printf("■年级格式错误,按Y重新输入,按N退出");
c=getch();
puts("");
while(YNjudge(c)==0)
{
c=getch();
}
if(c=='N'||c=='n') return 0;
}
}
}
else
{
pt();
printf("■性别格式错误,按Y重新输入,按N退出");
c=getch();
puts("");
while(YNjudge(c)==0)
{
c=getch();
}
if(c=='N'||c=='n') return 0;
}
}
}
else
{
pt();
printf("■姓名格式错误,按Y重新输入,按N退出");
c=getch();
puts("");
while(YNjudge(c)==0)
{
c=getch();
}
if(c=='N'||c=='n') return 0;
}
}
}
else
{
pt();
if(t==-2)
printf("■学号格式错误,按Y重新输入,按N退出");
else printf("■该学生已存在,按Y重新输入,按N退出");
c=getch();
puts("");
while(YNjudge(c)==0)
{
c=getch();
}
if(c=='N'||c=='n') return 0;
}
}
}
bool ccmp(const Corporation &A,const Corporation &B)
{
return A.num<B.num;
}
int Getstuname(long long num,char ss[])//得到学号为num的学生姓名并存到ss中,有返回1,无返回0
{
int i,d=stu.size();
for(i=0; i<d; i++)
if(num==stu[i].num)
{
strcpy(ss,stu[i].name);
return 1;
}
return 0;
}
int Findstuinc(long long num,int p)//在下标为p的社团中寻找学号为num的学生,有返回学生下标+1,无返回0
{
int i,d=C[p].studen.size();
for(i=0; i<d; i++)
i