高校社团助手
2016-09-01 22:05
190 查看
#include"iostream" #include"string" #include"windows.h" #include<fstream> #include<iomanip> #define MAXs 30 #define MAX 10000000 #define MAX_VERTEX_NUM 20 using namespace std; /*1 实验五 高校社团助手设计与实现 实验要求: 1、 项目服务对象 : 高校社团负责人或管理人员;高校校方社团管理机构负责人 项目功能 : 该项目共实现了8个功能模块. 实验内容: 模块一:通讯录管理 包含建立通讯录、查询、插入、删除、排序、查找等功能。 模块二:成员等级管理 对成员的积分进行管理,通过活动获得积分,若违规则相应扣除积分,积分达到设定的阈值,可实现成员等级的变迁。包括积分添加、修改、查询、排序、求平均分等各种操作。 模块三:社团基本信息管理 对社团名称,口号,宗旨,章程,发起人,社团性质等信息增删改操作。 模块四:组织机构管理 成员人事管理:招新,退社等操作;干部管理:选举等操作; 机构管理:完成社团组织机构的创建、修改、删除、查询等功能。 模块五:赞助商管理 赞助商基本信息的增删改操作;赞助商与社团关系的管理。 模块六:活动计划管理 可行性分析 模块七:活动筹备管理 拉赞助,活动经费与场地,校园导航 模块八:活动评价管理 对每次活动的参与人员评分并总结。*/ struct Level { int socre; string name; string No; string level; void show() { cout<< No<<setw(8) <<name << setw(8) <<socre << setw(8) << level <<endl; } }; typedef struct { string ActivityName; int Peopelsum; int Socre; void showe() { cout << ActivityName<< setw(8)<<Peopelsum<<setw(14) << Socre<<endl; } }Activity; typedef struct { Activity *base; int length; }AList; typedef struct { string *Bases; int Lengthes; }PList; class Map { public: Map() { Read("Map.txt"); } ~Map() { for (int i = 0; i < MAXs; i++) { for (int j = 0; j < MAXs; j++) { D[i][j] = 0; arcs[i][j] = 0; } vexs[i] = ""; } } void Read(char *FileName); int LocateVex(string x) { int i; for (i = 0; i < VexNum; ++i)if (vexs[i] == x)return i; return -1; } void Path(int i, int j) { if (i >= 26 || j >= 26 || i*j<0) { cout << "错误的地点" << endl; return; } bool p[100]; int k, n, m = i; int a; if (i == j) { cout << "\t已到达" << endl; return; } if (i != j) for (k = 0; k < VexNum; k++) p[k] = P[i][j][k]; cout << endl; if (D[i][j] < 10000) { while (m != j) { a = 10000; for (k = 0; k < VexNum; k++) if (arcs[m][k] < a&&p[k]) { a = arcs[m][k]; n = k; } cout << vexs ; if (n != j) cout << "->"; p = false; m = n; } cout << " : " << D[i][j] << "米" << endl; } else cout << vexs[i] << "->" << vexs[j] << "没有路" << endl; } void ShortestPath_FLOYD() { int u, v, w, i; for (v = 0; v < VexNum; v++) for (w = 0; w < VexNum; w++) { D[v][w] = arcs[v][w]; for (u = 0; u < VexNum; u++) P[v][w][u] = false; if (D[v][w] < 10000) P[v][w][v] = P[v][w][w] = true; } for (u = 0; u < VexNum; u++) for (v = 0; v < VexNum; v++) for (w = 0; w < VexNum; w++) if (D[v][u] < 10000 && D[u][w] < 10000 && D[v][u] + D[u][w] < D[v][w]) { D[v][w] = D[v][u] + D[u][w]; for (i = 0; i < VexNum; i++) P[v][w][i] = P[v][u][i] || P[u][w][i]; } } void Findway(); private: bool P[MAXs][MAXs][MAXs]; int D[MAXs][MAXs]; int VexNum; string vexs[MAXs]; int ArcNum; int arcs[MAXs][MAXs]; }; struct Sponser { string SponserName; int Money; void shows() { cout << SponserName << setw(15) << Money << endl; } }; typedef struct { Sponser*Base; int Lengths; }SList; void Map::Read(char *FileName) { int i, j, k; string v1, v2; int w = 0; ifstream fin; fin.open(FileName, ios::in); fin >> VexNum; for (int i = 0; i < VexNum; i++) { fin >> vexs[i]; } fin >> ArcNum; for (i = 0; i < VexNum; i++) for (j = 0; j < VexNum; j++) arcs[i][j] = 10000; for (int i = 0; i < VexNum; i++) arcs[i][i] = 0; for (int k = 0; k < ArcNum; ++k) { fin >> v1 >> v2 >> w; i = LocateVex(v1); j = LocateVex(v2); arcs[i][j] = w; arcs[j][i] = w; } fin.close(); } //校园导航 void Map::Findway() { ShortestPath_FLOYD(); int i, j, q = 1; cout << endl << "地址如下" << endl; for (i = 0; i < VexNum; i++) { cout.setf(ios::left); cout << setw(2) << i << ":" << setw(10) << vexs[i] << " "; if (i % 4 == 5) cout << endl; } cout << endl; while (q) { cout << "1:开启导航 " << endl; cout << "0:退出" << endl; cin >> q; if (q) { cout << "输入导航的起点和终点 : " << endl; cin >> i >> j; Path(i, j); } } } class ListMembers { public: ListMembers() { Root = new Leveltree(); m_pHead = new Member(1); m_pTail = m_pHead; Alist.base = new Activity[MAXs]; Slist.Base = new Sponser[MAXs]; Alist.length = 1; Slist.Lengths = 1; Plist.Bases = new string[MAXs]; Plist.Lengthes = 1; } ~ListMembers() { for (Member* pNode = m_pHead, *pNext; pNode; pNode = pNext) { pNext = pNode->m_pNext; delete pNode; } } bool AddSponser() { Sponser S; cout << "请输入赞助商名:" << endl; cin >> S.SponserName; cout << "请输入赞助总金额:" << endl; cin >> S.Money; Slist.Base[Slist.Lengths] = S; Slist.Lengths++; return true; } bool AddActivity() { Activity A; cout << "请输入活动名称:" << endl; cin >> A.ActivityName; cout << "请输入活动限制人数:" << endl; cin >> A.Peopelsum; cout << "请输入活动分数:" << endl; cin >> A.Socre; Alist.base[Alist.length] = A; Alist.length++; return true; } bool AddPinjia() { string S; cout << "请发表你的意见:" << endl; cin >> S; Plist.Bases[Plist.Lengthes] = S; Plist.Lengthes++; return true; } bool DeleteSponser() { int i; cout << "请输入要删除赞助商的序号:" << endl; cin >> i; for (int j = i+1; j < Slist.Lengths; j++) { Slist.Base[j - 1] = Slist.Base[j]; } --Slist.Lengths; return true; } bool DeleteActivity() { int i; cout << "请输入要删除活动的序号:" << endl; cin >> i; for (int j = i+1; j < Alist.length; j++) { Alist.base[j - 1] = Alist.base[j]; } --Alist.length; return true; } void showSponser() { cout << "赞助商" << setw(8)<<" " << "赞助总金额" <<endl; for (int i = 1; i < Slist.Lengths; i++) { cout <<"第"<<i<<"个:"; Slist.Base[i].shows(); } } void showPinjia() { for (int i = 1; i < Plist.Lengthes; i++) { cout << "第" << i << "个人评价:"; cout << Plist.Bases[i] << endl; } } int GetMoney() { int moneys=0; for (int i = 1; i < Slist.Lengths; i++) { moneys+= Slist.Base[i].Money; } return moneys; } bool GiveMoney() { int money; int i = 1; while (i != 0) { if (Slist.Lengths == 1) { cout << "没有赞助商!" << endl; return false; } showSponser(); cout << "请输入要投资赞助商:" << endl; cin >> i; switch (i) { case 1:cout << "请输入赞助金额:"; cin >> money; if (Slist.Base[1].Money < money) { cout << "钱不够!" << endl; return false; } else { Slist.Base[1].Money -= money; return true; } case 2:cout << "请输入赞助金额:"; cin >> money; if (Slist.Base[1].Money < money) { cout << "钱不够!" << endl; return false; } else { Slist.Base[1].Money -= money; return true; } case 3:cout << "请输入赞助金额:"; cin >> money; if (Slist.Base[1].Money < money) { cout << "钱不够!" << endl; return false; } else { Slist.Base[1].Money -= money; return true; } case 4:cout << "请输入赞助金额:"; cin >> money; if (Slist.Base[1].Money < money) { cout << "钱不够!" << endl; return false; } else { Slist.Base[1].Money -= money; return true; } case 5:cout << "请输入赞助金额:"; cin >> money; if (Slist.Base[1].Money < money) { cout << "钱不够!" << endl; return false; } else { Slist.Base[1].Money -= money; return true; } case 6:cout << "请输入赞助金额:"; cin >> money; if (Slist.Base[1].Money < money) { cout << "钱不够!" << endl; return false; } else { Slist.Base[1].Money -= money; return true; } default:break; } return false; } } void showActivity() { cout << "活动名" <<" " << "限制人数" <<" "<< "活动积分 105f0 " << endl; for (int i = 1; i < Alist.length; i++) { cout << "第" << i << "个:"; Alist.base[i].showe(); } } void CleerPingjia() { Plist.Lengthes = 0; } void Baoming() { Level T; string no; int socres; int n; cout << "请输入参加的活动序号:" << endl; cin >> n; cout << "请输入参加活动的学号和积分" << endl; cin >> no >> socres; T=Root->deletetree(Root,no,socres); T.socre += Alist.base .Socre; Root->insert(T); } //接口:追加 void Addend() { Member* pNode = new Member(m_pTail); pNode->Setmebmer(); Level N; N.name = pNode->M_sName; N.No = pNode->M_sNo; cout << "*******************请输入成员的积分******************" << endl; cin >> N.socre; system("cls"); if (N.socre <= 50) { pNode->SetPost("一级"); N.level = "一级"; } else if (N.socre <= 100) { pNode->SetPost("二级"); N.level = "二级"; } else if ( N.socre <= 150) { pNode->SetPost("三级"); N.level = "三级"; } else { pNode->SetPost("四级"); N.level = "四级"; } if (m_pHead->m_pNext!=NULL) { cout << "come" << endl; pNode->m_pPrev->m_pNext = pNode; pNode->m_pNext = NULL; } else { m_pHead->m_pNext=pNode ; pNode->m_pPrev = m_pHead; pNode->m_pNext = NULL; } m_pTail = pNode; pNode->Sort(m_pHead); Root->insert(N); } void Insert() //利用尾插法向双向链表中插入1个(默认)或n个(用户指定)结点 { Member *t; if (m_pHead->m_pNext == NULL) //查找尾结点 t = m_pHead; else { t = m_pHead->m_pNext; while (t->m_pNext != NULL) t = t->m_pNext; } Member *p = 0; p = new Member(1); p->Setmebmer(); t->m_pNext = p; p->m_pPrev = t; p->m_pNext = NULL; t = t->m_pNext; m_pTail = p; p->Sort(m_pHead); } void TravelTree() { int n=1; while (n != 0) { cout << "1.升序;2.降序" << endl; cin >> n; system("cls"); switch (n) { case 1: cout << "学号" << " " << "姓名" << " " << "积分" << " " << "等级" << " " << endl; Root->inorder(Root); system("pause"); system("cls"); break; case 2: cout << "学号" << " " << "姓名" << " " << "积分" << " " << "等级" << " " << endl; Root->rinorder(Root); system("pause"); system("cls"); break; default:break; } } } void Search() { int n = 1; while (n != 0) { cout << "1.姓名查找;2.学号查找"; cin >> n; switch (n) { case 1:searchname(); break; case 2:searchno(); break; default:break; } } } void searchno() { string no; cout << "请输入查找的学号:"; cin >> no; for (Member* pFind = m_pHead->m_pNext; pFind; pFind = pFind->m_pNext) if (pFind->M_sNo == no) { pFind->show(); } else if (pFind == NULL) { cout << "查无此人!" << endl; } } void searchname() { string name; cout << "请输入查找的姓名:"; cin >> name; for (Member* pFind = m_pHead->m_pNext; pFind; pFind = pFind->m_pNext) if (pFind->M_sName == name) { pFind->show(); } else if (pFind == NULL) { cout << "查无此人!" << endl; } } //接口:删除 void Delete() { string no; cout << "请输入要删除的成员学号:"; cin >> no; for (Member* pFind = m_pHead->m_pNext; pFind; pFind = pFind->m_pNext) if (pFind->M_sName == no) { if (pFind->m_pPrev) pFind->m_pPrev->m_pNext = pFind->m_pNext; else m_pHead = pFind->m_pNext; if (pFind->m_pNext) pFind->m_pNext->m_pPrev = pFind->m_pPrev; else m_pTail = pFind->m_pPrev; delete pFind; return; } } void DeleteTree() { Root->deletetree(Root); } //接口:遍历 void Travel() { cout << "学号:" << setw(8) << "姓名:" << setw(8) << "性别:" << setw(8) << "班级:" << setw(8) << "职务:" << setw(8) << "入社时间:" << setw(8) << "手机:" << setw(8)<< endl; for (Member* pNode = m_pHead->m_pNext; pNode; pNode = pNode->m_pNext) { cout << pNode->M_sNo<<setw(8)<< pNode->M_sName << setw(8) << pNode->M_sSex << setw(8) << pNode->M_sClass << setw(8) << pNode->M_sPost << setw(8) << pNode->M_sTime << setw(8) << pNode->M_sTele << setw(8) << endl; } system("pause"); system("cls"); } private: class Leveltree { public: Leveltree *left; Leveltree *right; Level L; Leveltree() :left(NULL), right(NULL) { L.name = "周恬"; L.No = "0154075"; L.socre =5000; L.level = "四级"; } Leveltree(Level T) :left(NULL), right(NULL) { L = T; } ~Leveltree() { if (left) delete left; if (right) delete right; } void insert(Level a) { if (a.socre<=L.socre && left) { left->insert(a); } else if (a.socre <=L.socre && !left) { left = new Leveltree(a); } else if (a.socre > L.socre && right) { right->insert(a); } else if (a.socre>L.socre && !right) { right = new Leveltree(a); } } Leveltree* binary_search(Leveltree* point, string node,int socres, int *postion) { Leveltree* parent; parent = point; *postion = 0; while (point != NULL) { if (point->L.No == node) return parent; else { parent = point; if (point->L.socre>socres) { point = point->left; *postion = -1; } else { point = point->right; *postion = 1; } } } return NULL; } Level deletetree(Leveltree* root,string node, int socres) { Level T; Leveltree* parent; Leveltree* point = new Leveltree; Leveltree* child; int postion; parent = binary_search(root, node, socres, &postion); //二叉树为空的情况 if (parent == NULL) return T; else { switch (postion) { case -1:point = parent->left; T = point->L ; break; case 1:point = parent->right; T = point->L; break; case 0:point = parent; T = point->L; break; } if (point->left == NULL&&point->right == NULL) { switch (postion) { case -1:parent->left = NULL; break; case 1:parent->right = NULL; break; case 0:parent = NULL; break; } free(point); return T; } if (point->left == NULL&&point->right != NULL) { if (postion == -1) parent->left = point->right; else if (postion == 1) parent->right = point->right; else root = root->right; free(point); return T; } if (point->left != NULL&&point->right == NULL) { if (postion == -1) parent->left = point->left; else if (postion == 1) parent->right = point->left; else root = root->left; return T; } if (point->left != NULL&& point->right != NULL) { parent = point; child = point->left; while (child->right != NULL) { parent = child; child = child->right; } point->L = child->L; if (parent->left = child) parent->left = child->left; else parent->right = child->left; free(child); return T; } } } Leveltree* deletetree(Leveltree* root ) { string node; int socres; cout << "请输入要删除的学号和对应积分:" << endl; cin >> node>>socres; Leveltree* parent; Leveltree* point=new Leveltree; Leveltree* child; int postion; parent = binary_search(root, node,socres, &postion); //二叉树为空的情况 if (parent == NULL) return root; else { switch (postion) { case -1:point = parent->left; break; case 1:point = parent->right; break; case 0:point = parent; break; } if (point->left == NULL&&point->right == NULL) { switch (postion) { case -1:parent->left = NULL; break; case 1:parent->right = NULL; break; case 0:parent = NULL; break; } free(point); return root; } if (point->left == NULL&&point->right != NULL) { if (postion == -1) parent->left = point->right; else if (postion == 1) parent->right = point->right; else root = root->right; free(point); return root; } if (point->left != NULL&&point->right == NULL) { if (postion == -1) parent->left = point->left; else if (postion == 1) parent->right = point->left; else root = root->left; return root; } if (point->left != NULL&& point->right != NULL) { parent = point; child = point->left; while (child->right != NULL) { parent = child; child = child->right; } point->L = child->L; if (parent->left = child) parent->left = child->left; else parent->right = child->left; free(child); return root; } } } static void inorder( Leveltree*b)//中序遍历 { if (b != NULL) { inorder(b->left); b->L.show();//cout<<b->L.name<<" "; inorder(b->right); } } static void rinorder( Leveltree*b)//中序遍历,先遍历右子树 { if (b != NULL) { rinorder(b->right); b->L.show();//cout << b->L.name << " "; rinorder(b->left); } } }; class Member { public: Member(string Name = "null", string Post = "null", string Tele = "null", Member* pPrev = NULL, Member* pNext = NULL) :M_sName(Name), M_sPost(Post), M_sTele(Tele), m_pPrev(pPrev), m_pNext(pNext) {} Member(Member* pPrev = NULL, Member* pNext = NULL) { m_pPrev = pPrev; m_pNext = pNext; M_sName = "null"; M_sPost = "null"; M_sTele = "null"; M_sNo = "null"; M_sSex = "null";; M_sClass = "null"; M_sTime = "null"; } void show() { cout << "学号:" << M_sNo << " " << "姓名:" << M_sName << " " << "性别:" <<M_sSex << " " << "班级:" << M_sClass << " " << "职务:" <<M_sPost << " " << "入社时间:" << M_sTime << " " << "手机:" << M_sTele << endl; } Member(int) {} Member() {} string M_sNo; string M_sName; string M_sSex; string M_sClass; string M_sTime; string M_sPost; string M_sTele; //数据 Member* m_pPrev; //前指针 Member* m_pNext; //后指针 void Setmebmer() { cout << "********请输入学号,姓名,性别,班级,入团时间,联系方式:***********"<<endl; cin >> M_sNo >> M_sName >> M_sSex >> M_sClass >> M_sTime >> M_sTele; } void SetPost(string post) { M_sPost = post; } void swap(Member *p, Member *t) //p,t结点有序,p为前结点,t为后结点 { cout << "come in swap" << endl; Member *temp; if (t->m_pNext == NULL) //t结点是否为尾结点 { if (p->m_pNext == t) //p,t结点是否相邻 { //与尾结点相邻的交换代 t->m_pNext = p; t->m_pPrev = p->m_pNext; p->m_pNext = NULL; p->m_pPrev->m_pNext = t; p->m_pPrev = t; } else { //与尾结点不相邻的交换代 t->m_pNext = p->m_pNext; t->m_pPrev->m_pNext = p; temp = t->m_pPrev; t->m_pPrev = p->m_pPrev; p->m_pNext->m_pPrev = t; p->m_pNext = NULL; p->m_pPrev->m_pNext = t; p->m_pPrev = temp; } } else { if (p->m_pNext == t) //p,t结点是否相邻 { //相邻的交换代 t->m_pNext->m_pPrev = p; temp = t->m_pNext; t->m_pNext = p; t->m_pPrev = p->m_pPrev; p->m_pNext = temp; p->m_pPrev->m_pNext = t; p->m_pPrev = t; } else { //不相邻的交换代 t->m_pNext->m_pPrev = p; temp = t->m_pNext; t->m_pNext = p->m_pNext; p->m_pNext->m_pPrev = t; p->m_pNext = temp; t->m_pPrev->m_pNext = p; temp = t->m_pPrev; t->m_pPrev = p->m_pPrev; p->m_pPrev->m_pNext = t; p->m_pPrev = temp; } } } void Sort(Member *H) //选择排序算法 { //cout << "come in" << endl; Member *i, *j, *k; if (!H->m_pNext) //双向链表为空则返回 return; for (i = H->m_pNext; i->m_pNext != NULL; i = k->m_pNext) { for (j = i->m_pNext, k = i; j != NULL; j = j->m_pNext) if (k->M_sName > j->M_sName) k = j; if (k != i) swap(i, k); } } }; Member* m_pHead; //头节点 Member* m_pTail; //尾节点 Leveltree *Root; //等级管理 AList Alist;//活动列表 SList Slist;//赞助商列表 PList Plist;//评价列表 }; /*顺序栈的定义*/ #define Stack_Size 100 typedef struct sqStack { int *elem; int top; int stackSize;//栈数组长度 }sqStack; /*顺序栈的初始化*/ void initStack_Sq(sqStack &S) { S.elem = new int[Stack_Size]; S.top = -1; S.stackSize = Stack_Size; } /*入栈*/ void push(sqStack &S, int x) { if (S.top == Stack_Size - 1) cout << "Stack Overflow!"; S.elem[++S.top] = x; } /*出栈*/ int pop(sqStack &S) { int x; if (S.top == -1) cout << "Stack Empty!"; x = S.elem[S.top--]; return x; } typedef struct EdgeNode {//边表结点的定义 int adjvex;//存放邻接点在顶点表中的位置 struct EdgeNode * nextedge;//指向下一个边表结点 }EdgeNode; typedef struct VexNode {//顶点表结点的定义 string vex;//存放顶点信息 int sure; EdgeNode * firstedge;//指向第一个边表结点 int indegree; }VexNode; typedef struct {//顶点表的定义 VexNode vexs[MAX_VERTEX_NUM]; int vexnum, edgenum; }LGraph; /*构造有向图的邻接表*/ void CreateDG_AL(LGraph &G) { char* FileName; FileName = "in.txt"; ifstream Fin; Fin.open(FileName, ios::in); int i, j, k; int n, e; //cout << "请输入节点数和边数:" << endl; Fin >> n >> e; G.vexnum = n; G.edgenum = e; for (i = 0; i<n; i++) { //cout << "输入结点信息:" << endl; Fin >> G.vexs[i].vex >> G.vexs[i].sure; G.vexs[i].firstedge = NULL;//初始化为空 } for (k = 0; k<e; k++) { EdgeNode *p; //cout << "输入相邻结点i,j" << endl; Fin >> i >> j; p = new EdgeNode; p->adjvex = j; p->nextedge = G.vexs[i].firstedge; G.vexs[i].firstedge = p;//采用头插法 } Fin.close(); } //拓扑排序 bool TopoSort(LGraph &G) { sqStack S; initStack_Sq(S); EdgeNode *p; int count = 0; int i, j; for (i = 0; i<G.vexnum; i++) G.vexs[i].indegree = 0;//初始化为0 for (i = 0; i<G.vexnum; i++) {//计算各个顶点的入度 p = G.vexs[i].firstedge; while (p) { G.vexs[p->adjvex].indegree++; p = p->nextedge; } } for (i = 0; i < G.vexnum; i++) if (G.vexs[i].indegree == 0) if (G.vexs[i].sure == 1) push(S, i);//将度为0的顶点入栈 else { cout << "请先完成" << G.vexs[i].vex << endl; return false; } while (S.top != -1) { j = pop(S); //if(G.vexs[j].sure==1) cout << G.vexs[j].vex << "->";//将栈顶的元素出栈且输出 count++;//计数器加1 p = G.vexs[j].firstedge;//让p指向入度为0的顶点的第一个边表结点 while (p) { G.vexs[p->adjvex].indegree--;//将入度为0的顶点的邻接点的入度减1 if (G.vexs[p->adjvex].indegree == 0) if (G.vexs[p->adjvex].sure == 1) push(S, p->adjvex); else { cout << G.vexs[p->adjvex - 1].vex << "已经完成!" << endl; cout << "请再完成" << G.vexs[p->adjvex].vex << endl; return false; } p = p->nextedge; } } return true; if (count<G.vexnum) cout << "有回路!" << endl; return false; } class Shetuan { private: string ShetuanName; string Shetuankouhao; string Shetuanzongzhi; string Shetuanzhangcheng; string Shetuanfaqiren; string Shetuanxinzhi; public: Shetuan() { ShetuanName = "霸王社团"; Shetuankouhao = "信霸王,得永生!"; Shetuanzhangcheng = "1.服从上级指挥!\n 2.认真完成工作!"; Shetuanzongzhi = "一切为了同学!"; Shetuanxinzhi = "学生会"; Shetuanfaqiren = "周恬"; } void Set() { cout << "社团名称:" << endl; cin >> ShetuanName; cout << "社团口号:" << endl; cin >> Shetuankouhao; cout << "社团宗旨:" << endl; cin >> Shetuanzongzhi; cout << "社团章程:" << endl; cin >> Shetuanzhangcheng; cout << "社团发起人:" << endl; cin >> Shetuanfaqiren; cout << "社团性质:" << endl; cin >> Shetuanxinzhi; } void show() { cout << "社团名称:" << ShetuanName << endl; cout << "社团口号:" << Shetuankouhao << endl; cout << "社团宗旨:" << Shetuanzongzhi << endl; cout << "社团章程:" << Shetuanzhangcheng << endl; cout << "社团发起人:" << Shetuanfaqiren << endl; cout << "社团性质:" << Shetuanxinzhi << endl; } }; void munemain() { cout << "****************************************1.成员信息管理***************************************" << endl; //cout << "********************2.社团助手************************" << endl; //cout << "********************3.社团活动管理********************" << endl; } void mune1() { cout << "*****************************************1.通讯录管理*****************************************" << endl; //cout << "********************2.成员等级管理********************" << endl; } void mune2() { cout << "*****************************************4.社团基本信息管理***********************************" << endl; cout << "*****************************************5.组织机构管理***************************************" << endl; cout << "*****************************************6.赞助商管理*****************************************" << endl; } void mune3() { cout << "*****************************************7.活动计划管理***************************************" << endl; //cout << "********************11.活动筹备管理********************" << endl; cout << "*****************************************8.活动评价管理***************************************" << endl; } void mune4() { cout << "*****************************************1.添加联系人******************************************" << endl; cout << "*****************************************2.查找联系人******************************************" << endl; cout << "*****************************************3.删除联系人******************************************" << endl; cout << "*****************************************4.查看通讯录******************************************" << endl; } void mune5() { cout << "*****************************************2.查看成员信息***************************************" << endl; cout << "*****************************************3.删除成员*******************************************" << endl; } void mune6() { cout << "*****************************************9.活动计划分析***************************************" << endl; cout << "****************************************10.活动经费*******************************************" << endl; cout << "****************************************11.校园导航*******************************************" << endl; } bool Huodonfenxi(ListMembers &S,LGraph &G) { int i = 1; if (TopoSort(G)) { cout << "活动已经完美进行!!!!" << endl; return true; } else { while (i != 0) { cout << "1.拉赞助" << endl; cout << "2.采购" << endl; cout << "3.布置" << endl; cout << "4.报名" << endl; cout << "5.开始进行活动" << endl; cin >> i; Sleep(1000); system("cls"); switch (i) { case 1:if (S.GiveMoney()) { G.vexs[0].sure = 1; cout << "已经拉到赞助!" << endl; }Sleep(1000); system("cls"); break; case 2:if (G.vexs[0].sure == 1) { G.vexs[1].sure = 1; cout << "采购完成!" << endl; Sleep(1000); system("cls"); } else { cout << "没有钱!" << endl; Sleep(1000); system("cls"); }break; case 3:if (G.vexs[1].sure == 1) { G.vexs[2].sure = 1; cout << "完成布置!" << endl; Sleep(1000); system("cls"); } else { cout << "没有东西可以布置,还没有采购" << endl; Sleep(1000); system("cls"); } break; case 4:if (G.vexs[2].sure == 1) { G.vexs[3].sure = 1; cout << "完成报名!" << endl; } else { cout << "东西还没有布置好,先去布置!" << endl; Sleep(1000); system("cls"); } break; case 5:if (G.vexs[3].sure == 1) { G.vexs[4].sure = 1; cout << "活动可以开始进行!" << endl; } else { cout << "没有人报名,活动无法进行!" << endl; Sleep(1000); system("cls"); } break; default:break; } } } return false; } void jihuaguanli(ListMembers &S) { int i = 1; while (i != 0) { cout << "1.添加活动" << endl; cout << "2.删除活动" << endl; cout << "3.显示活动" << endl; cout << "4.报名参加" << endl; cin >> i; Sleep(1000); system("cls"); switch (i) { case 1:S.AddActivity(); break; case 2:S.DeleteActivity(); break; case 3:S.showActivity(); break; case 4:S.Baoming(); break; default:break; } } } void pinhjiaguanli(ListMembers &S,LGraph &G,bool y) { if (y) { int i = 1; while (i != 0) { cout << "1.添加评价" << endl; cout << "2.显示评价" << endl; cout << "3.清空评价" << endl; cin>> i; Sleep(1000); system("cls"); switch (i) { case 1:S.AddPinjia(); break; case 2:S.showPinjia(); break; case 3:S.CleerPingjia(); break; default:break; } } S.AddPinjia(); S.showPinjia(); } else { cout << "活动并未成功举办,不能评价!" << endl; Sleep(1000); system("cls"); } } void stjibxinxi(Shetuan &S) { S.show(); int i = 1; cout << "1.更改社团信息;0.返回" << endl; cin >> i; Sleep(1000); system("cls"); if (i == 1) { S.Set(); } } void zuzhijigou() { cout << " 正在与学习进行激烈的洽谈,敬请期待!" << endl; Sleep(1000); system("cls"); } void zanzhushang(ListMembers &S) { int i = 1; while (i != 0) { cout << "1.添加赞助商" << endl; cout << "2.删除赞助商" << endl; cout << "3.显示赞助商" << endl; cin >> i; Sleep(1000); system("cls"); switch (i) { case 1:S.AddSponser(); break; case 2:S.DeleteSponser(); break; case 3:S.showSponser(); break; default:break; } } } void shetuanzhushou(Shetuan &S) { int l = 1; while (l != 0) { mune2(); cin >> l; switch (l) { case 1:stjibxinxi(S); break; case 2:zuzhijigou(); break; //case 3:zanzhushang(); break; default:break; } } } void dengji(ListMembers &List) { int k = 1; while (k!= 0) { mune5(); cin >> k;system("cls"); switch (k) { case 1:List.TravelTree(); break; case 2:List.DeleteTree(); break; default:break; } } } void tongxun(ListMembers &List) { int j = 1; while (j != 0) { mune4(); cin >> j;system("cls"); switch (j) { case 1:List.Addend(); break; case 2:List.Search(); break; case 3:List.Delete(); break; case 4:List.Travel(); break; default:break; } } } void xinxiguanli(ListMembers &List) { int i = 1; while (i != 0) { mune1(); cin >> i; system("cls"); switch (i) { case 1:tongxun(List); break; case 2:dengji(List); break; default:break; } } } int main() { bool Y = false; LGraph G; CreateDG_AL(G); Shetuan S; Map M; ListMembers List; int n=1; while (n != 0) { mune1(); mune5(); mune2(); mune3(); mune6(); cin >> n; system("cls"); switch (n) { case 1:tongxun(List);/*xinxiguanli(List);*/ break; //case 2:List.Search();/*shetuanzhushou(); */break; //case 3:List.Delete();/*shetuanhuodon();*/ break; //case 4:List.Travel(); break; //case 2:dengji(List); break; case 2:List.TravelTree(); break; case 3:List.DeleteTree(); break; case 4:stjibxinxi(S); break; case 5:zuzhijigou(); break; case 6:zanzhushang(List); break; case 7:jihuaguanli(List); break; //case 11:choubeiguanli(); break; case 8:pinhjiaguanli(List,G,Y); break; case 9:Y=Huodonfenxi(List,G); break; case 10:cout << "当前共有活动经费:" << List.GetMoney() << "元" << endl; cout << "是否进行拉赞助?1/0" << endl; int i; cin >> i; Sleep(1000); system("cls"); if(i!=0)zanzhushang(List); break; case 11: M.Findway(); break; default:break; } } return 0; }
相关文章推荐
- 学习MFC应用于高校社团助手的心得
- 翡翠教育:高校课程改革得力助手
- 杂谈(17)参加全国高校社团年会,跟我玩转北京城!
- 中国高校十大热门BBS
- 社团,今天的哀叹
- Ghost超级助手 1.00 beta II
- 高校学生收费管理系统
- 写在博客园k_eckel’s mindview之始(K_eckel 发表于微软高校博客)
- 是不是女生应该留在高校做老师,因为比较清闲?
- Makefile好助手:pkgconfig
- 利好消息--国家将控制高校招生增幅 提高人才培养质量
- 高校BBS爆笑签名档
- 高校就业率造假,该由谁来负责?
- 江西高校汇总(最新)
- 高校教学评估之冷眼观(转)
- 软件巨头的高校人才之争
- 雷客图ASP站长安全助手的ASP木马查找功能
- 全新2007高校BBS上睿智的冷笑话
- 助手的反叛――浏览器劫持(详细讲解了BHO的问题,推荐)
- [转载]三流高校学生成功史