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

📄 源程序[anank].cpp

📁 学生成绩管理系统
💻 CPP
字号:
#include <fstream>
#include <iostream>
#include <iomanip>

using namespace std ;

class Student
{
public:
	Student() ;
public:
	char No[10] ;
	char Name[20] ;
	char Sex[3] ;
	int Math ;
	int English ;
	int Program ;
	int PE ;
} ;

Student::Student()						/* Constructor Of Student */
{
	for (int i=0; i<9; i++)
		No[i] = 'N' ;
	for (i=0; i<19; i++)
		Name[i] = 'N' ;
	for (i=0; i<2; i++)
		Sex[i] = 'N' ;
	Math = 0 ;
	English = 0 ;
	Program = 0 ;
	PE = 0 ;
}



Student student[200] ;						/* 建立200个学生信息		*/

void Init() ;								/* 加载文件信息				*/
void Main_Print() ;							/* 主界面打印函数			*/
void Search() ;								/* 查询学生信息函数			*/
void Read_All() ;							/* 函数-读取全部信息		*/
void Read_Math() ;							/* 函数-读取数学文件		*/
void Read_English() ;						/* 函数-读取英语文件		*/
void Read_Program() ;						/* 函数-读取程序文件		*/
void Read_PE() ;							/* 函数-读取体育文件		*/
void Insert() ;								/* 函数--插入学生信息		*/

int main()
{
	Init() ;
	Main_Print() ;
	return 0 ;
}

void Init()
{
	FILE* infile = fopen( "Stu.DAT", "r" ) ;
	if ( infile==NULL )
	{
		cout << "原始数据文件不存在,现在将要新建..." << endl << endl ;
		FILE* outfile = fopen( "Stu.DAT", "w" ) ;
		if ( outfile != NULL )
		{
			ofstream outfile1 ;
			outfile1.open( "Stu.DAT", ios::out ) ;
			for (int i=0; i<200; i++)
			{
				outfile1<< student[i].No << endl 
						<< student[i].Name << endl
						<< student[i].Sex << endl
						<< student[i].Math << endl
						<< student[i].English << endl
						<< student[i].Program << endl
						<< student[i].PE << endl ;
						
			}
			cout << "原始数据文件新建成功..." << endl << endl ;
		}
	}
	ifstream InFile ;
	InFile.open( "Stu.DAT", ios::in ) ;
	if ( InFile == NULL )
	{
		cout << "打开数据文件时出现异常,现在要退出程序..." << endl << endl ;
		exit(1) ;
	}
	else
	{
		for ( int i=0; i<200; i++ )
		{
			InFile >> student[i].No ;
			InFile >> student[i].Name ;
			InFile >> student[i].Sex ;
			InFile >> student[i].Math ;
			InFile >> student[i].English ;
			InFile >> student[i].Program ;
			InFile >> student[i].PE ;
		}
		cout << "加载数据成功..." << endl << endl ;
	}
}


void Main_Print()
{
	int Select = 0 ;
	cout << "----------------学生学籍管理程序----------------" << endl << endl 
		 << " 1 : 查询学生信息 " << endl << endl 
		 << " 2 : 读取全部学生信息 " << endl << endl 
		 << " 3 : 打印数学成绩文件 " << endl << endl 
		 << " 4 : 打印英语成绩文件 " << endl << endl 
		 << " 5 : 打印程序成绩文件 " << endl << endl
		 << " 6 : 打印体育成绩文件 " << endl << endl
		 << " 7 : 增添学生信息     " ;
	cin >> Select ;
	cout << endl ;
	switch (Select)
	{
	case 1:		Search() ;			break ;
	case 2:		Read_All() ;		break ;
	case 3:		Read_Math() ;		break ;
	case 4:		Read_English() ;	break ;
	case 5:		Read_Program() ;	break ;
	case 6:		Read_PE()		;	break ;
	case 7:		Insert()		;	break ;
	default:
		cout << "您的选择不正确,请重新选择!" << endl << endl ;
		Main_Print() ;
		break ;
	}
}

void Search_By_No()
{
	int flag = 0 ;
	char str[10] = "\0" ;
	cout << "-----------------------学号查询---------------------------" << endl << endl ;
	cout << "请输入要查询的学号  :" ;
	cin >> str ;
	cout << endl ;
	for ( int i=0; i<200; i++ )
	{
		if ( strcmp(student[i].No, str) == 0 )
		{
			flag = 1 ;
			cout << "找到该学生信息,信息如下:" << endl
				 << "-----------------------------" << endl
				 << "	 学号	:" << student[i].No << endl
				 << "	 姓名	:" << student[i].Name << endl
				 << "	 性别	:" << student[i].Sex << endl
				 << "	 数学	:" << student[i].Math << endl
				 << "	 英语	:" << student[i].English << endl
				 << "	 程序	:" << student[i].Program << endl
				 << "	 体育	:" << student[i].PE << endl 
				 << "-----------------------------" << endl ;
		}
		if ( flag==0 )
			if ( i==199 )
				if ( strcmp(student[199].No, str) != 0 )
					cout << "无此学生信息..." << endl << endl ;
	}
	Search() ;
}

void Search_By_Name()
{	
	int flag = 0 ;
	char str[20] = "\0" ;
	cout << "-----------------------姓名查询---------------------------" << endl << endl ;
	cout << "请输入要查询的姓名  :" ;
	cin >> str ;
	cout << endl ;
	for ( int i=0; i<200; i++ )
	{
		if ( strcmp(student[i].Name, str) == 0 )
		{
			flag = 1 ;
			cout << "找到该学生信息,信息如下:" << endl
				 << "-----------------------------" << endl
				 << "	 学号	:" << student[i].No << endl
				 << "	 姓名	:" << student[i].Name << endl
				 << "	 性别	:" << student[i].Sex << endl
				 << "	 数学	:" << student[i].Math << endl
				 << "	 英语	:" << student[i].English << endl
				 << "	 程序	:" << student[i].Program << endl
				 << "	 体育	:" << student[i].PE << endl 
				 << "-----------------------------" << endl ;
		}
		if ( flag==0 )
			if ( i==199 )
				if ( strcmp(student[199].No, str) != 0 )
					cout << "无此学生信息..." << endl << endl ;
	}
	Search() ;
}

void Search()
{
	int Select = 0 ;
	cout << "-----------------------学生查询------------------------" << endl << endl ;
	cout << "请选择要查询的依据 :" << endl << endl 
		 << "<1> 根据学号查询" << endl << endl 
		 << "<2> 根据姓名查询 <退出请按0> " ; 
	cin >> Select ;
	cout << endl ;
	switch (Select)
	{
	case 0:		Main_Print() ;			break ;
	case 1:		Search_By_No() ;		break ;
	case 2:		Search_By_Name() ;		break ;
	default:	
		cout << "您的输入不正确,请重新输入!" << endl << endl ;
		Search() ;
		break ;
	}
	Main_Print() ;
}

void Read_All()
{
	cout << "-----------------------全部信息------------------------" << endl << endl ;
	cout << setw(10) << setiosflags(ios::left) << "学号" 
		 << setw(20) << setiosflags(ios::left) << "姓名" 
		 << setw(10) << setiosflags(ios::left) << "性别" 
		 << setw(8) << setiosflags(ios::left) << "数学" 
		 << setw(8) << setiosflags(ios::left) << "英语" 
		 << setw(8) << setiosflags(ios::left) << "程序" 
		 << setw(8) << setiosflags(ios::left) << "体育" 
		 << setw(8) << setiosflags(ios::left) << "平均" << endl ;
	for ( int i=0; i<200; i++ )
	{
		if ( strcmp(student[i].No, "NNNNNNNNN") != 0 )
			cout<< setw(10) << setiosflags(ios::left) << student[i].No
				<< setw(20) << setiosflags(ios::left) << student[i].Name
		 		<< setw(10) << setiosflags(ios::left) << student[i].Sex
				<< setw(8) << setiosflags(ios::left) << student[i].Math 
				<< setw(8) << setiosflags(ios::left) << student[i].English
				<< setw(8) << setiosflags(ios::left) << student[i].Program
				<< setw(8) << setiosflags(ios::left) << student[i].PE 
				<< setw(8) << setiosflags(ios::left) << (student[i].Math+student[i].English+student[i].Program+student[i].PE)/4 ;
		else
			break ;
	}
	cout << "------------------------------------------------------" << endl << endl ;
	Main_Print() ;
	
}

void Read_Math()
{
	cout << "-----------------------数学打印------------------------" << endl << endl ;
	ofstream outfile ;
	outfile.open( "Math.txt", ios::out ) ;
	if ( outfile==NULL )
	{
		cout << "I/O异常,系统将退出程序..." << endl << endl ;
		exit(1) ;
	}
	else
	{
		outfile << setw(10) << setiosflags(ios::left) << "学号"
				<< setw(20) << setiosflags(ios::left) << "姓名"
				<< setw(10) << setiosflags(ios::left) << "性别"
				<< setw(10) << setiosflags(ios::left) << "数学" << endl ;
		for ( int i=0; i<200; i++ )
		{
			if ( strcmp(student[i].No, "NNNNNNNNN") != 0 )
			{
				outfile << setw(10) << setiosflags(ios::left) << student[i].No
						<< setw(20) << setiosflags(ios::left) << student[i].Name 
						<< setw(10) << setiosflags(ios::left) << student[i].Sex 
						<< setw(10) << setiosflags(ios::left) << student[i].Math << endl ;
			}
			else
				break ;
		}
		cout << "打印结束..." << endl << endl 
			 << "--------------------------------------------------" << endl << endl ;
	}
	Main_Print() ;
}

void Read_English()
{
	cout << "-----------------------英语打印------------------------" << endl << endl ;
	ofstream outfile ;
	outfile.open( "English.txt", ios::out ) ;
	if ( outfile==NULL )
	{
		cout << "I/O异常,系统将退出程序..." << endl << endl ;
		exit(1) ;
	}
	else
	{
		outfile << setw(10) << setiosflags(ios::left) << "学号"
				<< setw(20) << setiosflags(ios::left) << "姓名"
				<< setw(10) << setiosflags(ios::left) << "性别"
				<< setw(10) << setiosflags(ios::left) << "英语" << endl ;
		for ( int i=0; i<200; i++ )
		{
			if ( strcmp(student[i].No, "NNNNNNNNN") != 0 )
			{
				outfile << setw(10) << setiosflags(ios::left) << student[i].No
						<< setw(20) << setiosflags(ios::left) << student[i].Name 
						<< setw(10) << setiosflags(ios::left) << student[i].Sex 
						<< setw(10) << setiosflags(ios::left) << student[i].English << endl ;
			}
			else
				break ;
		}
		cout << "打印结束..." << endl << endl
			 << "--------------------------------------------------" << endl << endl ;
	}
	Main_Print() ;
}

void Read_Program()
{
	cout << "-----------------------程序打印------------------------" << endl << endl ;
	ofstream outfile ;
	outfile.open( "Program.txt", ios::out ) ;
	if ( outfile==NULL )
	{
		cout << "I/O异常,系统将退出程序..." << endl << endl ;
		exit(1) ;
	}
	else
	{
		outfile << setw(10) << setiosflags(ios::left) << "学号"
				<< setw(20) << setiosflags(ios::left) << "姓名"
				<< setw(10) << setiosflags(ios::left) << "性别"
				<< setw(10) << setiosflags(ios::left) << "程序" << endl ;
		for ( int i=0; i<200; i++ )
		{
			if ( strcmp(student[i].No, "NNNNNNNNN") != 0 )
			{
				outfile << setw(10) << setiosflags(ios::left) << student[i].No
						<< setw(20) << setiosflags(ios::left) << student[i].Name 
						<< setw(10) << setiosflags(ios::left) << student[i].Sex 
						<< setw(10) << setiosflags(ios::left) << student[i].Program << endl ;
			}
			else
				break ;
		}
		cout << "打印结束..." << endl << endl
			 << "-------------------------------------------------" << endl << endl ;
	}
	Main_Print() ;
}

void Read_PE()
{
	cout << "-----------------------体育打印------------------------" << endl << endl ;
	ofstream outfile ;
	outfile.open( "PE.txt", ios::out ) ;
	if ( outfile==NULL )
	{
		cout << "I/O异常,系统将退出程序..." << endl << endl ;
		exit(1) ;
	}
	else
	{
		outfile << setw(10) << setiosflags(ios::left) << "学号"
				<< setw(20) << setiosflags(ios::left) << "姓名"
				<< setw(10) << setiosflags(ios::left) << "性别"
				<< setw(10) << setiosflags(ios::left) << "体育" << endl ;
		for ( int i=0; i<200; i++ )
		{
			if ( strcmp(student[i].No, "NNNNNNNNN") != 0 )
			{
				outfile << setw(10) << setiosflags(ios::left) << student[i].No
						<< setw(20) << setiosflags(ios::left) << student[i].Name 
						<< setw(10) << setiosflags(ios::left) << student[i].Sex 
						<< setw(10) << setiosflags(ios::left) << student[i].PE << endl ;
			}
			else
				break ;
		}
		cout << "打印结束..." << endl << endl ;
		cout << "-------------------------------------------------" << endl << endl ;
	}
	Main_Print() ;
}

void Insert()
{
	int i = 0 ;
	cout << "-------------插入学生信息------------" << endl << endl ;
	while (true)
	{
		for ( i=0; i<200; i++)
			if ( strcmp(student[i].No, "NNNNNNNNN") == 0 )
				break ;
		cout << "学号	:" ;	cin >> student[i].No ;
		cout << "姓名	:" ;	cin >> student[i].Name ;
		cout << "性别	:" ;	cin >> student[i].Sex ;
		cout << "数学	:" ;	cin >> student[i].Math ;
		cout << "英语	:" ;	cin >> student[i].English ;
		cout << "程序	:" ;	cin >> student[i].Program ;
		cout << "体育	:" ;	cin >> student[i].PE ;
		/**********更新数据到磁盘***********/
		ofstream outfile1 ;
		outfile1.open( "Stu.DAT", ios::out ) ;
		for (int i=0; i<200; i++)
		{
			outfile1<< student[i].No << endl 
					<< student[i].Name << endl
					<< student[i].Sex << endl
					<< student[i].Math << endl
					<< student[i].English << endl
					<< student[i].Program << endl
					<< student[i].PE << endl ;
					
		}
		/**********更新数据到磁盘***********/
		cout << endl ;
		cout << "一条记录已经输入完成,是否还想继续插入记录?(Y/N)  " ;
		char c = 0 ;
		cin >> c ;
		cout << endl ;
		if (c=='N'||c=='n')
			break ;
	}
	Main_Print() ;
} /* Insert */

⌨️ 快捷键说明

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