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

📄 modify.cpp

📁 学生成绩管理系统。实现学生的添加 删除和各科成绩管理。
💻 CPP
字号:
#include "main.h"
extern bool saved;
extern char currentfile[128];

//================= ChangeCourseCoefficient ====================
FuncRunResult changecoursecoefficient(int x)
{
	cout<<"设置 "<<s.GetCourseName(x,true)<<" 课程的学分(0 为放弃):"<<flush;
	int coe=0;

	if (cin>>coe && coe>0)
	{
		cin.ignore();
		s.SetCourseCoefficient(x,coe,true);
		cout<<"更改成功。"<<flush;
		saved=false;
		sleep(333);
		return FRR_SUCCEED;
	}
	else
	{
		return FRR_SKIP;
	}
}

//================= ChangeCourseName ====================
FuncRunResult changecoursename(int x)
{
	cout<<"将课程 "<<s.GetCourseName(x,true)<<" 的名称改为(直接回车为放弃):"<<flush;
	char str[512]={0};
	cin.getline(str,512);
	if (str[0]==0) return FRR_SKIP;
	s.SetCourseName(x,str,true);
	cout<<"更改成功。"<<flush;
	saved=false;
	sleep(333);
	return FRR_SUCCEED;
}

//================= ChangeCoursePos ====================
int changecoursepos(int x)
{
	int i;
	for (i=0; i<s.GetCourseCount(); i++) cout<<setw(s.GetColumnWidth(i,true)-(i==0?4:2))<<'('<<i+1<<')';
	cout<<'\n';
	for (i=0; i<s.GetCourseCount(); i++) cout<<setw(s.GetColumnWidth(i,true))<<s.GetCourseName(i,true);

	cout<<"\n\n将 "<<s.GetCourseName(x,true)<<" 的位置放到第几列?(1-"<<s.GetCourseCount()<<",0 为放弃) "<<flush;
	int pos=0;

	if (cin>>pos && pos>0 && pos<=s.GetCourseCount())
	{
		cin.ignore();
		pos--;
		int* sortarray=s.CourseSort(), tmp=sortarray[x], i;
		if (pos>x) for (i=x; i<=pos-1; i++) sortarray[i]=sortarray[i+1];
		if (pos<x) for (i=x-1; i>=pos; i--) sortarray[i+1]=sortarray[i];
		sortarray[pos]=tmp;

		cout<<"更改成功。"<<flush;
		saved=false;
		sleep(333);
		return pos;
	}
	else
	{
		cin.ignore();
		return -1;
	}
}

//================= ChangeNumberName ====================
FuncRunResult changenumbername(int x, int y)
{
	cout<<"将"<<(x==-2?"学号":"姓名")<<"改为(直接回车为放弃):"<<flush;
	char str[512]={0};
	cin.getline(str,512);
	if (str[0]==0) return FRR_SKIP;
	if (x==-2) s.SetStuNum(y,str,true); else s.SetStuName(y,str,true);
	saved=false;
	cout<<"更改成功。"<<flush;
	sleep(333);
	return FRR_SUCCEED;
}

//================= ContinuousChange ====================
void continuouschange(int startx, int starty, int& endx, int& endy)
{
	int x=startx, y=starty;
	bool exit=false;
	char ss[32]={0}, *sss=NULL;
	double ns=0.0;

	showheader();
	cout<<"连续输入学生信息:\n\n要跳过某项,请直接回车;\n要返回主界面,请在输入成绩是输入任一字母并回车。\n\n有效成绩的输入范围是 0.00 到 999.99,\n另外 -1 表示缺考,-2 表示未选该课(在计算平均分和平均积点时会特殊考虑),\n超出这个范围的输入将被忽略。\n\n";

	for (; !exit; x++)
	{
		exit=false;
		if (s.GetCourseCount()==x)	{ x=-2; y++; } else;
		if (s.GetStudentCount()==y)	{ y=s.GetStudentCount()-1; break; } else;

		cout<< s.GetStuName(y,true) << " (" << s.GetStuNum(y,true) << ") 的 ";

		if (x==-2)
		{
			cout<<"学号 要改成什么?";
			cin.getline(ss,32);
			if (ss[0]!=0) { s.SetStuNum(y,ss,true); saved=false; }
		}
		else if (x==-1)
		{
			cout<<"姓名 要改成什么?";
			cin.getline(ss,32);
			if (ss[0]!=0) { s.SetStuName(y,ss,true); saved=false; }
		}
		else
		{
			cout<< s.GetCourseName(x,true) << " 成绩是 " << s.GetScore(y,x,true,true) << " ,要改它为多少?";
			cin.getline(ss,64);
			if (ss[0]!=0)
			{
				ns=strtod(ss,&sss);
				if (ss==sss) break;
				s.SetScore(y,x,ns,true,true);
				saved=false;
			}
		}
	}

	endx=0; endy=starty;
}

//================= DelCourse ====================
FuncRunResult delcourse(int x)
{
	cout<<"真的要删除 "<<s.GetCourseName(x,true)<<" 课程吗?Y/N "<<flush;
	int ch=scankey(0,0,'Y','y','N','n',KEY_ESC,0);

	if (ch=='y')
	{
		cout<<'y'<<endl;
		s.DelCourse(x,true);
		cout<<"删除成功。"<<flush;
		saved=false;
		sleep(333);
		return FRR_SUCCEED;
	}
	else
	{
		return FRR_SKIP;
	}
}

//================= DelStudent ====================
FuncRunResult delstudent(int y)
{
	cout<<"真的要删除这位学生吗?Y/N "<<flush;
	int ch=scankey(0,0,'Y','y','N','n',KEY_ESC,0);

	if (ch=='y')
	{
		cout<<'y'<<endl;
		s.DelStudent(y,true);
		cout<<"删除成功。"<<flush;
		saved=false;
		sleep(333);
		return FRR_SUCCEED;
	}
	else
	{
		return FRR_SKIP;
	}
}

⌨️ 快捷键说明

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