精华内容
下载资源
问答
  • 学生管理系统C++

    2017-12-24 12:06:07
    学生管理系统C++ main.exe
  • 学生管理系统 c++

    2014-05-18 09:46:53
    学生管理系统 c++ 带文件操作。 一个期末的实训作业,简单的小系统
  • 学生管理系统c++

    2015-07-29 20:24:44
    本程序是作为课程设计所写的多文件学生管理系统使用c++语言,不足之处还望海涵,仅供参考。
  • c++学生管理系统 c++学生管理系统 c++学生管理系统
  • 学生管理系统 C++

    2009-03-11 16:55:39
    C++写成的学生信息管理系统 是大学时候的作业 有想用的可以试一下 仅供参考
  • 学生管理系统 C++报告

    2013-01-10 19:39:19
    学生管理系统 C++报告
  • 学生管理系统 C++实现

    2012-03-04 19:07:54
    学生管理系统 C++实现
  • 学生管理系统 C++写的

    2011-07-26 18:53:31
    学生管理系统 C++写的 适合新手 其他 自己理解吧
  • MFC 学生管理系统 C++

    2019-12-03 21:30:55
    为了赚点积分,MFC 做的学生管理系统,因为老师不允许用数据库,所以很傻的建了俩个表,采用文件存储。有需要的可以参考参考,本人水平有限,有错误请原谅
  • 学生管理系统c++

    2009-09-08 07:25:24
    学生管理系统c++版,还是我大学的时候用过的呢!!很好用的,不过也有不足的地方!请大家改正!
  • 学生管理系统c++源代码 比较好的学习资料
  • 简单学生管理系统 C++版 用于学生系统相关管理
  • 在册人员及学生管理系统 c++程序设计 欢迎下载
  • 学生管理系统学生管理系统学生管理系统学生管理系统学生管理系统
  • 学生管理系统c++链表实现

    千次阅读 多人点赞 2016-04-10 22:22:18
    学生管理系统,c++,链表,c; 学生管理系统,主要划分为以下三个模块: 1) 学生:包括增加学生信息、删除学生信息、修改学生信息、查找学生信息、学生选课。 2) 课程:包括增加课程信息、删除课程信息、修改课程...
    简单版学生管理系统,c++,链表实现,如果你是计算机系的学生真的希望你不要完全复制,做下参考自己编写出来才能有所收获,这是对你的将来负责;
    学生管理系统,主要划分为以下三个模块: 
        1) 学生:包括增加学生信息、删除学生信息、修改学生信息、查找学生信息、学生选课。 
        2) 课程:包括增加课程信息、删除课程信息、修改课程信息、查找课程信息。
        3)拓展功能:文件导入,文件导出。
    #include<iostream>
    #include<fstream>
    #include<string>
    using namespace std;
    const int nubofCourse = 10;//学生最多可以选修的课程
    typedef struct StudentMessage *sMessage;//学生结点指针类型
    typedef struct Courses *sCourse;//课程结点指针类型
    fstream foutint;//文件导入导出
    /*课程结构体*/
    struct Courses {
    	int stdCourstcount;
    	string cNo;
    	string cName;
    	string scTeacher;
    	string stdNo[nubofCourse];
    	sCourse cNext;
    };
    /*学生结构体*/
    struct StudentMessage {
        string sNo;//学号
    	string sClass;
    	string sName;
    	char  sSex;
    	sMessage sNext;
    };
    
    typedef sMessage sm;//学生头指针类型
    typedef sCourse sc;//课程头指针类型			  
    /*关于我们,关于程序*/
    void aboutMe() {  //首页打印设置 
    	string input;
    	cout << "\n\n\t\t\t*****************************\n";
    	cout << "\t\t\t      学生信息管理系统\n";
    	cout << "\t\t\t*****************************\n\n\n";
    	// cout<<"\n\t\t\t    欢迎来到学生信息管理系统\n\n";
    	cout << "--------------------------------------------------------------------------------\n";
    	cout << "\n\t\t\t拼搏到无能为力,\n";  cout << "\t\t\t\t       坚持到感动自己!\n";
    	cout << "\t   开发者:路ren甲\n\n";  cout << "\t   联系方式:QQ:1508287079     or     Mail To:1508287079@qq.com\n";
    	cout << " \n--------------------------------------------------------------------------------\n";
    	//cout<<"\t______________________________________________________________________\n"; 
    	cout << "\t\t版权所有@路ren甲\n\n\n";
    	cout << "\t<输入任意字符进入>\n\t";
    	cin >> input;  //让用户输入一个字符后再进行下一步  
    	system("cls");    //清屏
    }
    //再见页面
    void goodbye() {  //首页打印设置 
    	string input;
    	// cout<<"\n\t\t\t    欢迎来到学生信息管理系统\n\n";
    	cout << " \n\n\n\n\n\n\n\n--------------------------------------------------------------------------------\n";
    	cout << "\n\t\t可能程序还有许多不足,\n";  cout << "\t\t\t 希望大家可以提出或者修改!\n";
      cout << "\t\t\t\t再见,遇见成功的自己!\n";
    	cout << " \n--------------------------------------------------------------------------------\n";
    	cout << "\t<输入任意字符关闭>\n\t";
    	cin >> input;  //让用户输入一个字符后再进行下一步  
    	exit(1);    //清屏
    }
    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓课程函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//
    sc initC() {
    
    	sCourse chead;
    	chead = new Courses;
    	chead->cNext = NULL;
    	return chead;
    }
    //打印课程信息
    int ptfselect_SCourse(sc head, string sId) {
    	int flags = 0;
    	if (head->cNext == NULL) { cout << "\n\t\t\t没有选到课喔……………!_!-_-\n"; return 1; }
    	cout << "\t\t课程编号" << "\t   课程名称" << "\t   开课老师" << endl;
    	//课程信息
    	head = head->cNext;
    	while (head != NULL) {
    		for (int l = 0; l < nubofCourse; l++) {
    			if (head->stdNo[l] == sId) {
    				flags = 1;
    				cout << "\t\t" << head->cNo << "\t\t" << head->cName << "\t\t" << head->scTeacher << "\t\n";
    			}
    		}
    		head = head->cNext;
    	}
    	if (flags == 0) { cout << "\n\t\t\t没有选到课喔……………!_!-_-\n"; }
    	cout << "\t\t----------------------------------------------------\n";
    	return 1;
    }
    int ptfSCourse(sc cHead) {
    	if (cHead->cNext == NULL) { cout << "没有课程信息\n"; return 0; }
    	//全部学生信息
    	cout << "\n\t\t课程编号" << "\t   课程名称" << "\t   开课老师" << endl;
    
    	cHead = cHead->cNext;
    	while (cHead != NULL) {
    		cout << "\t\t" << cHead->cNo << "\t\t" << cHead->cName << "\t\t" << cHead->scTeacher<< "\t\n";
    		cHead = cHead->cNext;
    	}
    	return 1;
    }
    void printfCourse(sc head, int i) {
    	//一个课程信息
    	int j;
    	sCourse find;
    	j = 0;
    	find = head->cNext;
    	cout << "\n\t\t课程编号" << "\t\t课程名称" << "\t\t开课老师" << endl;
    	while (find != NULL) {
    		j++; if (j == i) {
    			cout << "\t\t" << find->cNo << "\t\t" << find->cName << "\t\t" << find->scTeacher << "\t\n";
    			break;
    		}
    		find = find->cNext;
    	}
    
    }
    void pfCourse(sc head) {
    	cout << "\n\t\t课程编号" << "\t\t课程名称" << "\t\t开课老师" << endl;
    	cout << "\t\t" << head->cNo << "\t\t" << head->cName << "\t\t" << head->scTeacher << "\t\n";
    	cout << endl;
    }
    查找课程
    int locateCourse(sc chead, string numb) {
    	int j = 0;
    	chead = chead->cNext;
    	while (chead != NULL) {
    		j++;//统计
    		if (numb == chead->cNo) {
    			return j;
    		}
    		chead = chead->cNext;
    	}
    	return 0;
    
    }
    添加课程
    void addCourse(sc scHead) {
    	sc cnew;//新课程
    	int  g = 0,k=0;
    	char flag = 'y';
    	while (flag == 'y') {
    		cnew = new Courses;
    		cnew->stdCourstcount = 0;
    		
    		while (g==0) {
    			g = 1;
    			cout << "输入课程编号(六位数字):";
    			cin >> cnew->cNo;
    			if (locateCourse(scHead,cnew->cNo) != 0) { cout << "课程编号已经存在,请重新输入" << endl; g = 0; }
    			
    		} 
    		g = 0;
    		cout << "输入课程名称:";
    		cin >> cnew->cName;
    		cout<<"输入教师姓名:";
    		cin >> cnew->scTeacher;
    		cnew->cNext = scHead->cNext;
    		scHead->cNext = cnew;
    		cout << "您想继续进行添加吗?输入y继续,输入n退出" << endl;
    		cout << "输入你的选择(y/n):";
    		cin >> flag;
    	}
    	//system("cls");
    	cout << "已经添加课程信息成功\n" << endl;
    	
    }
    //修改课程信息
    int updatesCourse(sc chead) {
    	string fdc;
    	int k = 0;
    
    	if (chead->cNext == NULL) { cout << "没有课程数据,请添加课程" << endl; return 0; }
    	cout << "输入修改课程编号:";
    	cin >> fdc;
    	chead = chead->cNext;
    	while (chead != NULL) {
    		k++;//统计
    		if (fdc == chead->cNo) {
    			pfCourse(chead);
    			cout << "课程名称:";
    			cin >> chead->cName;
    			cout << "开课老师:";
    			cin >> chead->scTeacher;	
    			cout << "修改课程" << chead->cNo << "信息成功!";
    			return k;
    		}
    		chead = chead->cNext;
    	}
    	return 0;
    
    }
    int deletesCourse(sc cHead) {
    	string del;
    	char flag;
    	int f = 0;
    	sCourse deletestd,preform;
    	int j = 0;
    	if (cHead->cNext == NULL) { cout << "没有课程数据,请添加课程" << endl; return 0; }
    	preform = cHead;
    	deletestd = cHead->cNext;//从首节点开始扫描
    	cout << "输入删除课程编号:";
    	cin >> del;//删除课程
    
    	while (deletestd != NULL) {
    		f = 0;
    		j++;
    		if (deletestd->cNo==del) {
    			pfCourse(deletestd);
    			cout << "是否删除该课程(y/n),输入你的选择:";
    			cin >> flag;
    			if (flag == 'y') {
    				cout << "删除课程" << deletestd->cName << "成功!";
    				preform->cNext = deletestd->cNext;
    				delete deletestd;
    				return j;
    			}
    			else {
    				cout << "你已经取消删除" << deletestd->cNext->cName << endl;
    				return 0;
    			}
    		}
    		preform=preform->cNext;
    		deletestd = deletestd->cNext;
    		f = 1;
    	}
    	if (f == 1) { cout << "不存在该学生找到了"; }
    	return 0;//不存在该学生找到了
    }
    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓学生函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//
    /*初始化*/
    sm init() {
    	sMessage shead;
    	shead = new StudentMessage;
    	shead->sNext = NULL;
    	return shead;
    }
    //打印学生信息
    void printfSMessge(sm head, sc cHead) {
    	sm find2;
    	string fc;
    	int i = 0;
    	if (head == NULL) cout << "没有学生信息";
    	find2 = head->sNext;
    	//全部学生信息
    	head = head->sNext;
    	while (head != NULL) {
    		cout << "\t\t---------------------第"<<++i<<"位--------------------------\n";
    		cout << "\t\t\t\t姓名:" << head->sName << "\t\n";
    		if (head->sSex == '1') {
    			cout << "\t\t\t\t性别:男" << "\t\n";
    		}
    		else if (head->sSex == '0') {
    			cout << "\t\t\t\t性别:女" << "\t\n";
    		}
    		cout << "\t\t\t\t学号:" << head->sNo << "\t\n";
    		cout << "\t\t\t\t班级:" << head->sClass << "\t\n";
    
    		cout << "\n\t\t\t选修课程:\n";
    		if (find2 != NULL) {
    			fc =find2->sNo;
    			ptfselect_SCourse(cHead, fc);//输出学生选课
    		}
    		find2 = find2->sNext;
    		head = head->sNext;
    	}
    	
    
    }
    void printfPerson(sm head, int i,sc cHead) {
    	//一个学生信息
    	int j;
    	string fc;
    	sMessage find, find2;
    	//if(i==0) return head;
    	//	if(i<0) return ;//位置非法。无此结节点
    	j = 0;
    	find = head->sNext;
    	find2 = head->sNext;
    	while (find != NULL){
    		j++; if (j == i) {
    			cout << "\t\t----------------------------------------------------\n";
    			cout << "\t\t\t\t姓名:" << find->sName << "\t\n";
    			if (find->sSex == '1') {
    				cout << "\t\t\t\t性别:男" << "\t\n";
    			}
    			else if (find->sSex == '0') {
    				cout << "\t\t\t\t性别:女" << "\t\n";
    			}
    			cout << "\t\t\t\t学号:" << find->sNo << "\t\n";
    			cout << "\t\t\t\t班级:" << find->sClass << "\t\n";
    		
    			cout << "\n\t\t\t选修课程:\n";
    			while (find2 != NULL) {
    				fc = find2->sNo;
    				if(ptfselect_SCourse(cHead, fc)==1) break;//输出学生选课
    			}
    			break;
    		}
    		find2 = find2->sNext;
    		find = find->sNext;
    	}
    
    }
    void pfPerson(sm head) {
    	cout << "\t\t----------------------------------------------------\n";
    	cout << "\t\t\t\t姓名:" << head->sName << "\t\n";
    	if (head->sSex == '1') {
    		cout << "\t\t\t\t性别:男" << "\t\n";
    	}
    	else if (head->sSex == '0') {
    		cout << "\t\t\t\t性别:女" << "\t\n";
    	}
    	cout << "\t\t\t\t学号:" << head->sNo << "\t\n";
    	cout << "\t\t\t\t班级:" << head->sClass << "\t\n";
    
    	cout << "\t\t----------------------------------------------------\n";
    }
    查找学生
    int locateStdfByNo(sm sHead, string numb) {
    	int j = 0;
    	if (sHead->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; return NULL; }
    	sHead = sHead->sNext;
    	j = 0;
    	while (sHead != NULL) {
    		j++;//统计
    		if (numb==sHead->sNo) {
    			return j;
    		}
    		sHead = sHead->sNext;
    	}
    	return 0;
    }
    int locateByName(sm sHead, string sname,sc cHead) {
    	int j = 0;
    	sm head=sHead;
    	if (sHead->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; return NULL; }
    	sHead = sHead->sNext;
    	while (sHead != NULL) {
    		j++;
    		if (sHead->sName == sname) { printfPerson(head, j, cHead);
    		}
    		sHead = sHead->sNext;
    	}
    	return 0;
    }
    //添加学生
    void addStudent(sm sHead) {
    	sMessage snew;//新学生
    	int f = 1,g=0;
    	char flag = 'y';
    	while (flag == 'y') {
    		snew = new StudentMessage;
    		while (f == 1) {//判断学号和输入学号
    			f = 0;
    			cout << "输入学号6位数字:";
    			cin >> snew->sNo;
    			if (locateStdfByNo(sHead, snew->sNo) != 0) { cout << "学号已经存在,请重新输入"<<endl; f = 1;}//判断学号是否重复
    			
    		}
    		cout << "输入姓名:";
    		cin >> snew->sName;
    		f = 1;
    	     while(f==1){
    			 f = 0;
    		     cout << "输入性别选择<男:1><女:0>:";
    		     cin >> snew->sSex;
    		    if (snew->sSex!='1'&& snew->sSex != '0'&&f==0) { cout << "选择操作不对,请重新输入"<<endl; f = 1; }
    			
    		 }
    		 f = 1;
    		cout << "输入班级:";
    		cin >> snew->sClass;
    		snew->sNext = sHead->sNext;
    		sHead->sNext = snew;
    		pfPerson(snew);
    		cout << "您想继续进行添加吗?输入y继续,输入n退出" << endl;
    		cout << "输入你的选择(y/n):";
    		cin >> flag;
    
    	}
    	//system("cls");
    	cout << "已经添加学生信息成功" << endl;
    
    }
    //修改学生信息
    int updates(sm sHead) {
    	char flagc = 'y';
    	string numb;
    	int j = 0,f=1;
    	if (sHead->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; return 0; }
    	cout << "输入修改学生学号:";
    	cin >> numb;
    	sHead = sHead->sNext;
    	while (sHead != NULL) {
    		j++;//统计
    		if ( numb== sHead->sNo) {
    			pfPerson(sHead);
    			cout << "\n输入修改信息\n";
    			while (f == 1) {
    				f = 0;
    				cout << "输入性别选择<男:1><女:0>:";
    				cin >> sHead->sSex;
    				if (sHead->sSex != '1' && sHead->sSex != '0') { cout << "选择操作不对,请重新输入" << endl; f = 1; }
    
    			}
    			cout << "输入姓名:";
    			cin >> sHead->sName;
    			f = 1;
    			cout << "输入班级:";
    			cin >> sHead->sClass;
    			return j;
    		}
    		sHead = sHead->sNext;
    	}
    	return 0;
    }
    //删除
    int deletesMessage(sm sHead) {
    	string numb;
    	char flag;
    	sMessage deletestd, preform;
    	int j = 0, i = 0;
    	if (sHead->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; return 0; }
    	preform = sHead;
    	deletestd = sHead->sNext;//从首节点开始扫描
    	cout << "输入删除学生学号:";
    	cin >> numb;
    
    	while (deletestd != NULL) {
    		j++;
    		if (deletestd->sNo==numb) {
    			pfPerson(deletestd);
    			cout << "是否删除该学生(y/n),输入你的选择:";
    			cin >> flag;
    			if (flag == 'y') {
    				cout << "你已经删除" << deletestd->sName << "成功!";
    				preform->sNext = deletestd->sNext;
    				delete(deletestd->sNext);
    				return j;
    			}
    			else {
    				cout << "你已经取消删除" << deletestd->sNext->sName;
    				return j;
    			}
    		}
    		preform = preform->sNext;
    		deletestd = deletestd->sNext;
    		i = 1;
    	}
    
    	if (i == 1) cout << "没有找到该学生!-_-!\n";
    
    	return 0;//不存在该学生找到了
    }
    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓选择排序↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//
    sMessage getminkey(sm p) {
    	sm minp, exchange, perfrom;
    	if (p->sNext == NULL) {
    		return p;
    	}
    	minp = p;
    	perfrom = p;
    	p = p->sNext;
    	while (p) {
    		if (minp->sNo>p->sNo) {
    			exchange = minp;
    			minp = p;
    			perfrom->sNext = p->sNext;
    			minp->sNext = exchange;//minp是较小值的指针
    		}
    		perfrom = p;
    		p = p->sNext;
    	}
    	return minp;//返回较小值的指针
    }
    sm selectsort(sm head, sm newHead) {
    	sm j, i, temp;
    	if (head->sNext == NULL || newHead == NULL) cout << "没有学生数据,请添加学生\n";
    	i = head;
    	j = newHead;
    	i = i->sNext;
    	while (i != NULL) {//尾插法
    		i = getminkey(i);
    		j->sNext = i;
    		temp = i->sNext;
    		i->sNext = NULL;
    		j = i;
    		i = temp;
    	}
    	head->sNext = newHead->sNext;
    	return newHead;
    }
    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓导出程序↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//
    void savePersonFile(sm student, sc course) {
    	ofstream *outfile[50], out;
    	int j = 0, k = 0;
    	//写入方式为追加
    	student = student->sNext;
    	course = course->cNext;
    	while (student != NULL) {
    		string str = "Project16";
    		//string i;
    		//ostringstream change;
    		str.append(student->sName);
    		//change << j;
    		//i = change.str();
    		//str.append(i);
    		str.append(".txt");
    		outfile[j] = new ofstream(str, ios::ate);
    		*outfile[j] << "\t\t\t\t学生信息:" << endl;
    		*outfile[j] << "\t\t学号:" << student->sNo << endl;
    		*outfile[j] << "\t\t姓名:" << student->sName << endl;
    		if (student->sSex = '1'){
    			*outfile[j] << "\t\t性别:" << "男" << endl;
    		}
    		else {
    			*outfile[j] << "\t\t性别:" << "女" << endl;
    		}
    		*outfile[j] << "\t\t班级:" << student->sClass << endl;
    
    		*outfile[j] << "\t\t\t\t选修课程:" << endl;
    		while (course != NULL) {
    			for (int l = 0; l < nubofCourse; l++) {
    				if (course->stdNo[l] == student->sNo) {
    					k = 1;
    					*outfile[j] << "\t\t课程名称:" << course->cName << endl;
    					*outfile[j] << "\t\t课程编号:" << course->cNo << endl;
    					*outfile[j] << "\t\t开课老师:" << course->scTeacher << endl;
    				}
    			}
    			course = course->cNext;
    		}
    		if (k == 0) *outfile[j] << "\t\t\t没有选修课程:" << endl;
    		student = student->sNext;
    		(*outfile[j]).close();
    		j++;
    	}
    
    }
    void saveCourseToLocal(sc head) {
    	ofstream outfile;
    	outfile.open("course.txt");
    	sc p;
    	p = head->cNext;
    	while (p != NULL) {
    		outfile << p->stdCourstcount << " ";
    		outfile << p->cNo << " ";
    		outfile << p->cName << " ";
    		outfile << p->scTeacher << "\n";
    		if(p->stdCourstcount>0){
    		  for (int i = 0; i < p->stdCourstcount; i++) {
    			  outfile << p->stdNo[i] << "\n";
    		   }
    		}
    		p = p->cNext;
    	}
    }
    void readCourseFromLacal(sc head) {
    	fstream fin("course.txt");
    	if (fin)
    	{
    		sc p;
    		p = head;
    		sc q;
    		int stdCourstcount;
    		string  scTeacher, cNo, cName,std;
    		while (fin >>stdCourstcount >> cNo >> cName >> scTeacher)
    		{
    			q = new Courses;
    			if (stdCourstcount > 0) {
    				for (int i = 0; i < stdCourstcount; i++) {
    					fin >>std;
    					q->stdNo[i] = std;
    				}
    			}
    			q->stdCourstcount = stdCourstcount;
    			q->cNo = cNo;
    			q->cName = cName;
    			q->scTeacher = scTeacher;
    			q->cNext = p->cNext;
    			p->cNext = q;
    		}
    		fin.close();
    	}
    	else
    	{
    		cerr << "打开文件失败!" << endl;
    	}
    
    }
    void saveStudentToLocal(sm head) {
    	ofstream outfile;
    	outfile.open("student.txt");
    	sm p;
    	p = head->sNext;
    	while (p != NULL) {
    		outfile << p->sNo << " ";
    		outfile << p->sName << " ";
    		outfile << p->sSex  << " ";
    		outfile << p->sClass << "\n";
    		p = p->sNext;
    	}
    	outfile.close();
    }
    void readStudentFromLacal(sm head) {
    	fstream fin("student.txt");
    	if (fin)
    	{
    		sm p;
    		p = head;
    		sm q;
    		int rowNum = 0;
    		string sTel;
    		char sSex;
    		string  sClass,sNo,sName;
    		while (fin >> sNo >> sName >> sSex >> sClass)
    		{
    			q = new StudentMessage;
    			q->sNo = sNo;
    			q->sName = sName;
    			q->sSex = sSex;
    			q->sClass = sClass;
    
    			q->sNext = p->sNext;
    			p->sNext = q;
    		}
    		fin.close();
    	}
    	else
    	{
    		cerr << "打开文件失败!" << endl;
    	}
    
    }
    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓学生选课相关函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//
    void stdSelectCourse(sc course, string select, string sNo) {
    	//select是课程编号,sNo选课学生学号
    	int k=0,j = 0;
    	int f = locateCourse(course, select);
    	course = course->cNext;
    	while (course != NULL) {
    		j++; if (j == f) {
    			for (int i = 0; i < course->stdCourstcount; i++) {
    				course->stdNo[course->stdCourstcount] = sNo;
    				cout << "你已经选择了"<<course->cName<<"课程" << endl;
    				k = 1;
    				break;
    			}
    			if(k!=1){
    			course->stdNo[course->stdCourstcount++] = sNo;
    			cout << "\n\t\t\t"<<course->stdNo[course->stdCourstcount - 1] << "恭喜你选课选课成功!";
    			}
    			break;
    		}
    		course = course->cNext;
    	}
    }
    //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓main函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓//
    void main() {
    	int  i;
    	char s1,c;
    	sm sort, newHead;
        string sname;
    	string numb;
    	StudentMessage std;
    	int flag = 1, cflag = 1;
    	sm head = init();
    	newHead = init();
    	sc chead = initC();
    	aboutMe();
    
    	// 导入学生信息
    	readStudentFromLacal(head);
    	readCourseFromLacal(chead);
    	while (flag == 1) {
    		cout << "\n\n\t\t\t*****************************\n";
    		
    		cout << "\t\t\t   欢迎来到学生信息管理系统\n";
    		cout << "\t\t\t*****************************\n";
    
    		cout << " -------------------------------------------------------------------------------\n";
    		cout << "\t\t  选择功能:\n\t\t\t\t1.添加学生\n\t\t\t\t2.查找学生\n\t\t\t\t3.修改学生\n" <<
    			"\t\t\t\t4.删除学生\n\t\t\t\t5.学生排序\n\t\t\t\t6.课程管理\n\t\t\t\t7.学生选课\n\t\t\t\t8.学生列表\n\t\t\t\t9.导出学生\n\t\t\t\t0.退出学生管理系统";
    		cout << " \n\n-------------------------------------------------------------------------------\n";
    		cout << "\t\t\t请输入你的选择后按Enter键进入:";
    		cin >> s1;
    		//	system("cls");
    		switch (s1) {
    	
    		case '9':
    			system("cls"); 
    			savePersonFile(head, chead);
    			saveCourseToLocal(chead); 
    			saveStudentToLocal(head);
    			cout << "\n\n\n----------------------------------导出学生信息----------------------------------\n";
    			cout << "\n*******************************导出文件成功************************************";
    			cout << "\n!!!!!!!!!!!!!!!已经存储Project16!!!!!!!!!!!!!!!!";
    			break;
    		case '8':
    			system("cls");
    			printfSMessge(head, chead);
    			break;
    		case '0':
    			system("cls");
    			flag = 0;
    			break;
    		case '1':
    			system("cls");
    			cout << "\n\n\n-----------------------------------增加学生-------------------------------------\n";
    			addStudent(head);
    			break;
    		case '2':
    			system("cls");
    			cout << "\n\n\n----------------------------------查找学生信息----------------------------------\n";
    		
    			cout << "1.按学号查询\n2.按姓名查询\n请输入你的选择:";
    			cin >> s1;
    			switch (s1) {
    			case '1':
    				cout << "输入学生学号(6位数字):";
    				cin >> numb;
    				i = locateStdfByNo(head, numb);
    				if (head->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; }
    				if (0 != i) printfPerson(head, i, chead); else {
    					cout << "没有找到\n";
    				}
    				break;
    			case '2':
    				cout << "输入学生姓名:";
    				cin >> sname;
    				if (head->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; }
    				i = locateByName(head,sname,chead);
    				if (0 != i) printfPerson(head, i, chead); else {
    					cout << "没有找到\n";
    				}
    				break;
    			}
    			break;
    		case '3':
    			system("cls");
    			cout << "\n\n\n----------------------------------更新学生信息----------------------------------\n";
    		
    			i = updates(head);
    			if (0 != i) printfPerson(head, i, chead); else {
    				cout << "没有找到该学生!-_-!\n";
    			}
    			break;
    		case '4':system("cls");
    			cout << "\n\n\n----------------------------------删除学生-------------------------------------\n";
    			
    			i = deletesMessage(head);
    			break;
    		case '5': 
    			system("cls");
    			cout << "\n\n\n----------------------------------学生排序信息----------------------------------\n";
    
    			sort = selectsort(head, newHead);
    			if (sort) printfSMessge(head, chead);
    			
    			//printfSMessge(head, chead);
    			break;
    		case '6':
    			system("cls");
    			cflag = 1;
    			while (cflag == 1){
    				cout << "\n\n\n------------------------------课程管理系统-------------------------------------\n";
    				cout << "\n\t\t输入你选择的功能:\n\t\t\t\t1.添加课程信息\n\t\t\t\t2.查找课程\n\t\t\t\t3.修改课程信息\n\t\t\t\t4.删除课程\n\t\t\t\t5.显示课程\n\t\t\t\t0.退出图书管理\n";
    				cout << "\n------------------------------课程管理系统-------------------------------------\n\n请输入你的选择:";
    				cin >> c;
    				switch (c)
    				{
    				case '1':
    					system("cls");
    					cout << "\n\n\n----------------------------------增加课程-------------------------------------\n";
    					addCourse(chead); ptfSCourse(chead);
    					break;
    				case '2':
    					system("cls");
    					cout << "\n\n\n----------------------------------查找课程信息----------------------------------\n";
    					
    					cout << "输入课程编号:";
    					cin >> numb;
    					if (chead->cNext == NULL) { cout << "没有课程数据,请添加课程" << endl;}
    					else i = locateCourse(chead, numb);
    					if (i != 0) printfCourse(chead, i); else {
    						cout << "没有找到课程\n";
    					}break;
    				case '3':
    					system("cls");
    					cout << "\n\n\n----------------------------------更新课程信息----------------------------------\n";
    			
    					i = updatesCourse(chead);
    					if (i != 0) printfCourse(chead, i); else {
    						cout << "没有找到该课程课程\n";
    					}
    					break;
    				case '4':
    					system("cls");
    					cout << "\n\n\n----------------------------------删除课程--------------------------------------\n";
    					deletesCourse(chead); break;
    				case '5':
    					system("cls");
    					cout << "\n\n\n----------------------------------显示课程--------------------------------------\n";
    					ptfSCourse(chead);
    					break;
    					case '0':
    					system("cls");
    					cflag = 0;
    					break;
    					default:
    						break;
    				}
    		  
    			} 
    			break;
    		case '7':
    			system("cls");
    			cout << "\n\n\n-----------------------------------学生选课-------------------------------------\n";
    		
    			bool f = true;
    			if(ptfSCourse(chead)!=0){
    			string stdNo, select;
    			while (f) {
    				if (head->sNext == NULL) {
    					cout << "没有学生信息,选课成功"; f = false;
    				}
    				cout << "请输入你的(学生)的学号:";
    				cin >> stdNo;
    				f = false;
    				i = locateStdfByNo(head, stdNo);
    				if (0 == i) {
    					cout << "不存在该学生,请重新输入\n"; f = true;
    				}
    			}
    			f = true;
    			while(f){
    				f = false;
    				cout << "请输入你要选的课程编号:";
    				cin >> select;
    				if (locateCourse(chead, select) == 0) {
    					cout << "不存在该课程,请重新输入\n"; f = true; ptfSCourse(chead);
    				}
    			}
    			stdSelectCourse(chead,select, stdNo);
    			}
    			break;
    		
    		}
    		
    		cflag = 1;
    	}
    	system("cls");
    	goodbye();
    }
    
    当然自己水平有限,写的不好,还有很多bug没有完善,希望大家见谅,仅仅供大家参考,希望吐槽。
    展开全文
  • 学生管理系统源代码 C++编写的源代码 采用数据结构的链表 详细
  • C++编写的学生管理系统,已经通过编译并能成功运行,希望你们支持
  • 学生管理系统 c++ 文件操作 数据库

    千次阅读 2020-07-09 14:46:55
    (c++学生管理系统____大一期末评测) ----------->整个类设计的框架图: --------->简单的说明一下思路: 对于整个学生管理系统的数据保存,使用的是文件进行保存。通过文件操作读入数据后,使用二叉树进行保存...

    (c++学生管理系统____大一期末评测)

    ----------->整个类设计的框架图:
    在这里插入图片描述
    --------->简单的说明一下思路:
    对于整个学生管理系统的数据保存,使用的是文件进行保存。通过文件操作读入数据后,使用二叉树进行保存学生的数据,这样非常便利与后面的一系列增,删,改,查操作。
    访问对象我设计了三个类游客,学生,管理员。游客是初级访问类只能实现一些基础操作,学生类和管理员类是其派生类,各自其特有的功能,如学生进行选课操作,管理员进行增,删,改,查操作。管理员类的访问权限最高,我将其设计为学生信息的友元类,可以直接对数据进行操作。

    ---------->成品的大致界面如下:
    主界面:
    在这里插入图片描述
    管理员模式
    在这里插入图片描述
    学生模式
    在这里插入图片描述
    查看成绩
    在这里插入图片描述
    默认是以学号的大小顺序进行排名,可以自行根据成绩选择各种排名方式。这里我使用的是二叉树结构进行存储数据的,所以只需进行中序遍历即可获得排名

    /*************根据学生学号插入*******************************/
    BtreeStu* StuInfor::insert(BtreeStu* Bt,Infor* temp) {
    	if (!Bt) {
    		BtreeStu* Tmp = new BtreeStu(temp);
    		Bt = Tmp;
    	}
    	else
    		if (Bt->inf->_stunum > temp->_stunum)
    			Bt->left = insert(Bt->left, temp);
    		else
    			Bt->right = insert(Bt->right, temp);
    	return Bt;
    }
    /*************根据每一门科目的成绩进行插入*******************************/
    BtreeStu* StuInfor::insert(BtreeStu* Bt, Infor* temp, int kind) {
    	if (!Bt) {
    		BtreeStu* Tmp = new BtreeStu(temp);
    		Bt = Tmp;
    	}
    	else
    		if (Bt->inf->_score[kind] < temp->_score[kind])
    			Bt->left = insert(Bt->left, temp, kind);
    		else if (Bt->inf->_score[kind] > temp->_score[kind])
    			Bt->right = insert(Bt->right, temp, kind);
    		else
    			if(Bt->inf->_stunum>temp->_stunum)
    				Bt->left = insert(Bt->left, temp, kind);
    			else
    				Bt->right = insert(Bt->right, temp, kind);
    	return Bt;
    }
    

    根据学号查询成绩
    在这里插入图片描述
    根据学号修改成绩
    在这里插入图片描述
    添加学生信息
    在这里插入图片描述
    整个学生管理系统的大致功能基本就简单实现了,代码的细节部分就不多说了。如果想对上面的功能和一些用户界面进行修改也是很容易的,我提供了很多接口,非常便于操作.

    class Interface {
    public:
    	static void main_Interface();
    	static void Teacher_Interface();
    	static void Student_Interface();
    	static void Check_Interface();
    	static void Insert_Interface();
    	static void Stderr_Interface();
    	static void Score_Interface();
    	static void Vistor_Interface();
    	static void InStunum_Interface();
    	static void modify_Interface();
    };
    void Interface::main_Interface() {
    	cout
    		<< "\t\t\t***************************************************\n"
    		<< "\t\t\t*                                                 *\n"
    		<< "\t\t\t+              学生信息管理系统                   +\n"
    		<< "\t\t\t*                                                 *\n"
    		<< "\t\t\t***************************************************\n"
    		<< "\t\t\t*        +----------------------------+           *\n"
    		<< "\t\t\t*        |       1.教师模式           |           *\n"
    		<< "\t\t\t*         ----------------------------            *\n"
    		<< "\t\t\t*        |       2.学生模式           |           *\n"
    		<< "\t\t\t*         ----------------------------            *\n"
    		<< "\t\t\t*        |       3.游客模式           |           *\n"
    		<< "\t\t\t*         ----------------------------            *\n"
    		<< "\t\t\t*        |       4.退出程序           |           *\n"
    		<< "\t\t\t*        +----------------------------+           *\n"
    		<< "\t\t\t*                                                 *\n"
    		<< "\t\t\t***************************************************\n";
    }
    
    void Interface::Teacher_Interface() {
    	cout
    		<< "\t\t\t****************************************************************\n"
    		<< "\t\t\t*                      管理员模式                              *\n"
    		<< "\t\t\t****************************************************************\n"
    		<< "\t\t\t+----------------------------+---------------------------------+\n"
    		<< "\t\t\t|      1.查看排名            |           2.查询学生            |\n"
    		<< "\t\t\t+----------------------------+---------------------------------+\n"
    		<< "\t\t\t|      3.添加学生信息        |           4.删除学生信息        |\n"
    		<< "\t\t\t+----------------------------+---------------------------------+\n"
    		<< "\t\t\t|      5.修改成绩            |           6.返回上一级          |\n"
    		<< "\t\t\t+----------------------------+---------------------------------+\n";
    }
    

    这是整个图形用户的界面,可以自行根据Interface类提供的接口进行修改

    class Visitor {
    public:
    	void Check_rank(StuInfor& Stu) {
    		Stu.check();
    	}
    	void SearchInfor(StuInfor& Stu) {
    		Stu.searchfor();
    	}
    };
    
    class Teacher:public Visitor {
    private:
    	StuInfor* stuInf;
    	//std::string account_num;
    	//std::string password;
    public:
    	Teacher(StuInfor* temp) :stuInf(temp) {}
    	void Insert();
    	void Delete();
    	void Modify();
    };
    
    class Student: public Visitor {
    private:
    	//std::string account_num;
    	//std::string password;
    public:
    	/***学生特有的事情***/
    	/*****暂时没有想到*****/
    };
    

    这是三个访问对象的设计,我没实现太多功能只有一些基本的增,删,改,查。本来是想要设计通过账号,和密码的方式进行登录的,但是用文件读取的方式去保存这些东西太烦了,因为已经有一个读取学生数据的文件操作了,所以我想学完数据库以后再来进行这些操作,随便为学生类提供一个选课的操作。
    废话不多说了,想要源码的可以点击下面的链接
    学生管理系统——源码

    展开全文
  • 学生管理系统c++程序

    2009-05-21 20:35:30
    c++程序设计——学生管理系统,支持的下载
  • 学生管理系统C++实现

    2010-12-02 11:53:05
    包括了管理系统的几大模块:增加,查询,修改,删除。 用户登录名和密码可查看原程序。 用户:wanchunyang 密码:1234 还包括了一些算法如队列……
  • 设计任务是根据给定学生资料产生评估结果。 假设学生分为两类:本科生course work student和研究生research student。 学生类的信息包括姓名、ID、类别。 对于本科生,其信息还包括该生在这学期选课数量、所选课程已...
  • 学生管理系统C++

    2007-06-20 12:16:46
    就是一个由C++编辑的窗口化的应用程序。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,383
精华内容 14,953
关键字:

学生管理系统c++

c++ 订阅