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

📄 student.cpp

📁 简单学生管理系统
💻 CPP
字号:
// Student.cpp: implementation of the Student class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "学生管理系统.h"
#include "Student.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Student::Student()
{
	head = NULL;
	tail = NULL;
}

Student::~Student()
{

}

void Student::CreateStudent(char name1[],char id1[],char sex1[],char politic1[],char addr1[],char bir1[],float mark1,float mark2,float mark3,float mark4,float mark5)
{
	StudentInfo * p;
	StudentInfo * q = head;

	while(q)
	{
		if(!strcmp(q->id,id1))
		{
			AfxMessageBox("该学号已存在");
			return;                                    //若学号已存在则显示提示信息并返回
		}
		q=q->next;
	}

	p = (StudentInfo *)malloc(sizeof(StudentInfo));

	if(!p)
	{
		AfxMessageBox("内存分配失败!");         
		return;
	}
	
	strcpy(p->name,name1);
	strcpy(p->id,id1);
	strcpy(p->sex,sex1);
	strcpy(p->address,addr1);
	strcpy(p->birthday,bir1);
	strcpy(p->politicalface,politic1);

	p->mark[0] = mark1;
	p->mark[1] = mark2;
	p->mark[2] = mark3;
	p->mark[3] = mark4;
	p->mark[4] = mark5;

	if(head==NULL)							   //将新建的学生置于双向链表的结尾
	{
		head=tail=p;                           
		p->prior=p->next=NULL;
	}
	
	else
	{
		p->prior=tail;
		tail->next=p;
		tail=p;
		tail->next=NULL;
	}
}

void Student::DeleteStudent(char id1[])
{
	StudentInfo * r = head;

	while(r)
	{
		if(!strcmp(r->id,id1))       //找到该学号
		{
			if(r->prior)                 
			{
				if(r->next)
				{
					r->next->prior=r->prior;      //不在表头和表尾时删除该结点
					r->prior->next=r->next;
				}
				else
				{
					r->prior->next=NULL;          //在表尾时的删除
					tail=r->prior;
				}
			}
			else
			{
				if(r->next)
				{
					r->next->prior=NULL;          //在表头时的删除
					head=r->next;
				}
				else
				{
					head=tail=NULL;
				}
			}
			AfxMessageBox("删除成功!");
			return;
		}
		r=r->next;
	}
	AfxMessageBox("该学号不存在!");
}

void Student::SaveData()
{
	fstream file;
	StudentInfo * p;

	file.open("Student.bin",ios::out|ios::binary);

	for(p = head;p != NULL;p = p->next)
	{
		file.write((char *)p,sizeof(StudentInfo));
	}

	file.close();
}

void Student::ReadFile()
{
	StudentInfo * p;

	head = NULL;
	tail = NULL;

	fstream file;
	file.open("Student.bin",ios::in|ios::binary);

	file.seekg(0,ios::end);

	if(file.tellg == 0)
	{
		AfxMessageBox("学生信息记录为空!");
		return;
	}

	long length1=file.tellg();               //获取文件长度
	
	long length2=sizeof(StudentInfo);            //结点长度
	
	long length;
	
	length=length1/length2;                  //帐号条数
	
	file.seekg(0,ios::beg);
	
	while(length>0)                          //按条读取账号
	{
		p = (StudentInfo *)malloc(sizeof(StudentInfo));
		
		file.read((char *)p,sizeof(StudentInfo));
		
		if(head==NULL)
		{
			head=p;
			tail=p;
			head->prior=NULL;
			head->next=NULL;
		}
		
		else
		{
			tail->next=p;
			p->prior=tail;
			tail=p;
			tail->next=NULL;
		}
		length--;
	}
	
	file.close();
}

void Student::ChangeInformation(char name1[],char id1[],char sex1[],char politic1[],char addr1[],char bir1[],float mark1,float mark2,float mark3,float mark4,float mark5)
{
	StudentInfo * p = head;

	while(p)
	{
		if(!strcmp(p->name,name1)&&!strcmp(p->id,id1))   //找到该学生
		{
			strcpy(p->name,name1);
			strcpy(p->id,id1);
			strcpy(p->sex,sex1);
			strcpy(p->address,addr1);
			strcpy(p->birthday,bir1);
			strcpy(p->politicalface,politic1);
			
			p->mark[0] = mark1;
			p->mark[1] = mark2;
			p->mark[2] = mark3;
			p->mark[3] = mark4;
			p->mark[4] = mark5;

			return;
		}
		p = p->next;
	}
	AfxMessageBox("该学号不存在!");
}

void Student::ShowStudent(char id1[],CListCtrl * pListCtrl)
{
	StudentInfo * p;
	int row = 0;
	CString mn[5];

	pListCtrl->DeleteAllItems();

	for(p = head;p != NULL;p = p->next)
	{
		if(strcmp(p->id,id1)==0)
		{
			pListCtrl->InsertItem(row,"asd");
			pListCtrl->SetItemText(row,0,p->name);
			pListCtrl->SetItemText(row,1,p->id);
			pListCtrl->SetItemText(row,2,p->sex);
			pListCtrl->SetItemText(row,3,p->birthday);
			pListCtrl->SetItemText(row,4,p->politicalface);
			pListCtrl->SetItemText(row,5,p->address);

			mn[0].Format("%0.0f",p->mark[0]);
			pListCtrl->SetItemText(row,6,mn[0]);
			mn[1].Format("%0.0f",p->mark[1]);
			pListCtrl->SetItemText(row,7,mn[1]);
			mn[2].Format("%0.0f",p->mark[2]);
			pListCtrl->SetItemText(row,8,mn[2]);
			mn[3].Format("%0.0f",p->mark[3]);
			pListCtrl->SetItemText(row,9,mn[3]);
			mn[4].Format("%0.0f",p->mark[4]);
			pListCtrl->SetItemText(row,10,mn[4]);

			AfxMessageBox("找到该学号!");
			return;                                    //找到则返回
		}	
		else
			continue;
	}
	AfxMessageBox("该学号不存在!");
}

void Student::ShowAll(CListCtrl* pListCtrl)
{
	StudentInfo * p;
	int row = 0;
	CString mn[5];

	pListCtrl->DeleteAllItems();

	for(p = head;p != NULL;p = p->next)
	{
		pListCtrl->InsertItem(row,"asd");
		pListCtrl->SetItemText(row,0,p->name);
		pListCtrl->SetItemText(row,1,p->id);
		pListCtrl->SetItemText(row,2,p->sex);
		pListCtrl->SetItemText(row,3,p->birthday);
		pListCtrl->SetItemText(row,4,p->politicalface);
		pListCtrl->SetItemText(row,5,p->address);
		
		mn[0].Format("%0.0f",p->mark[0]);
		pListCtrl->SetItemText(row,6,mn[0]);
		mn[1].Format("%0.0f",p->mark[1]);
		pListCtrl->SetItemText(row,7,mn[1]);
		mn[2].Format("%0.0f",p->mark[2]);
		pListCtrl->SetItemText(row,8,mn[2]);
		mn[3].Format("%0.0f",p->mark[3]);
		pListCtrl->SetItemText(row,9,mn[3]);
		mn[4].Format("%0.0f",p->mark[4]);
		pListCtrl->SetItemText(row,10,mn[4]);
		
		row++;
	}
}

void Student::Shaixuan(char politic1[],CListCtrl * pListCtrl)
{
	StudentInfo * p = head;
	int row = 0;
	CString mn[5];

	pListCtrl->DeleteAllItems();
	
	for(p = head;p != NULL;p = p->next)
	{
		if(strcmp(p->politicalface,politic1)==0)
		{
			pListCtrl->InsertItem(row,"asd");
			pListCtrl->SetItemText(row,0,p->name);
			pListCtrl->SetItemText(row,1,p->id);
			pListCtrl->SetItemText(row,2,p->sex);
			pListCtrl->SetItemText(row,3,p->birthday);
			pListCtrl->SetItemText(row,4,p->politicalface);
			pListCtrl->SetItemText(row,5,p->address);
			
			mn[0].Format("%0.0f",p->mark[0]);
			pListCtrl->SetItemText(row,6,mn[0]);
			mn[1].Format("%0.0f",p->mark[1]);
			pListCtrl->SetItemText(row,7,mn[1]);
			mn[2].Format("%0.0f",p->mark[2]);
			pListCtrl->SetItemText(row,8,mn[2]);
			mn[3].Format("%0.0f",p->mark[3]);
			pListCtrl->SetItemText(row,9,mn[3]);
			mn[4].Format("%0.0f",p->mark[4]);
			pListCtrl->SetItemText(row,10,mn[4]);
			continue;                                 
		}	
		else
			continue;
		row++;
	}
}

⌨️ 快捷键说明

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