成绩记录簿程序设计
1.具体要求:
制作一个系统制作一个系统实现对学生成绩的管理功能,可以对学生信息及成绩信息进行录入、修改、删除等。
2.基本功能:
(1)增加、修改、删除一个学生及成绩信息。
(2)显示学生成绩。
(3)按条件显示学生资料(条件有学号、姓名等)。
(4)按条件显示班级最高分数以及对应的学生姓名(条件有课程名)
(5)计算所有学生的平均成绩。
3. 有了整体设计这一框架,我们逐步进行设计
(1)设计界面
利用 cout 输出一些符号组合成界面,然后利用while循环主界面和switch、case语句进行对功能选择的实现,构成了主函数。
int main()
{
meau2();
int num =0 ;
while ( num != 9)
{
cout << " " << endl;
cout << " ●●●●●●●●●●●●●●●●●●●●●●●● " << endl;
cout << " $$ $$ " << endl;
cout << " $$ ****************************************** $$ " << endl;
cout << " $$ 学生成绩管理系统 $$ " << endl;
cout << " $$ ★1 成绩录入 ★ $$ " << endl;
cout << " $$ ★2 显示学生成绩信息 ★ $$ " << endl;
cout << " $$ ★3 输入您想查找的学生条件 ★ $$ " << endl;
cout << " $$ ★4 增加一个学生及成绩信息 ★ $$ " << endl;
cout << " $$ ★5 修改一个学生及成绩信息 ★ $$ " << endl;
cout << " $$ ★6 删除一个学生及成绩信息 ★ $$ " << endl;
cout << " $$ ★7 按条件进行成绩排序 ★ $$ " << endl;
cout << " $$ ★8 计算所有学生的平均成绩 ★ $$ " << endl;
cout << " $$ ★9 退出系统 ★ $$ " << endl;
cout << " $$ $$ " << endl;
cout << " $$ ****************************************** $$ " << endl;
cout << " ●●●●●●●●●●●●●●●●●●●●●●●● " << endl;
cout << " --------------------------------------------- " << endl;
cout << " 友情提示:在开始操作前,请先录入信息,按1进入 " << endl;
cout << " 行成绩的录入,然后进行操作(*^__^*)(*^__^*) " << endl;
system("color 0A");
student c;
cout << "请输入一个数字进行选择:" << endl;
cin >> num;
switch (num)
{
case 1: system("cls");
c.Newlist(); break;
case 2: system("cls");
c.xianshi(); break;
case 3: system("cls");
c.check(); break;
case 4: system("cls");
c.zengjia(); break;
case 5: system("cls");
c.xiugai(); break;
case 6: system("cls");
c.shanchu(); break;
case 7: system("cls");
c.paixu(); break;
case 8: system("cls");
c.pingjun(); break;
case 9: system("cls");
c.meau1(); break;
default: cout << "请选择序号:" << endl;
}
}
return 0;
}
(2)定义为一个学生类
class student { //定义一个学生类//
public:
//student(){}
student(double i = 0, string n = "#", int a = 0, int b = 0, int c = 0);
string name;
int num;
int zcj;
int sx;
int yy;
void Newlist();
void xianshi();
void zengjia();
void shanchu();
void xiugai();
void paixu();
void pingjun();
void check();
void meau1();
然后进行构造函数
//void meau2();
};
student::student(double i, string n, int a, int b, int c)
{
num = i;
name = n;
zcj = a;
sx = b;
yy = c;
}
(3)新建学生信息
//
void student::Newlist()
{
cout << "请输入学生人数";
cin >> n;
ofstream outfile("stu.dat", ios::out); //定义文件流对象,打开磁盘文件"stu.dat"
if (! outfile) //如果打开失败,outfile返回0值
{
cerr << "打开失败" << endl;
abort();
}
for (int i = 0; i < n; i++)
{
cout << "请输入学生学号" << endl;
cin >> stu[i].num;
cout << "输入学生姓名" << endl;
cin >> stu[i].name;
cout << "输入数学成绩" << endl;
cin >> stu[i].sx;
cout << "输入英语成绩" << endl;
cin >> stu[i].yy;
stu[i].zcj = stu[i].sx + stu[i].yy;
//cout<<"输入学生总成绩"< //cin>>stu[i].zcj; } outfile.close(); //关闭磁盘文件 cout << "学生信息已经建立"; } // void student::xianshi() { int i; cout << "所有学生的信息为:" << endl; cout << "学号 姓名 数学成绩 英语成绩 总成绩 " << endl; cout << "--------------------------------------------------------------------" << endl; //ofstream outfile("stu.dat",ios::out); //定义文件流对象,打开磁盘文件"stu.dat" //if(! outfile) //如果打开失败,outfile返回0值 //{ //cerr<<"打开失败"< //abort(); //} for (i = 0; i < n; i++) { cout << stu[i].num << 't' << ' ' << stu[i].name << 't' << stu[i].sx << 't' << stu[i].yy << 't' << stu[i].zcj << endl; } } (4)增加学生信息 // void student::zengjia() { cout << "请输入学生学号" << endl; cin >> stu[n].num; cout << "输入学生姓名" << endl; cin >> stu[n].name; cout << "输入数学成绩" << endl; cin >> stu[n].sx; cout << "输入英语成绩" << endl; cin >> stu[n].yy; stu[n].zcj = stu[n].yy + stu[n].sx; n++; } (5)删除学生信息 // void student::shanchu() { int a, b, p; cout << "请输入要删除学生的学号" << endl; cin >> a; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) //查找学生 { if (stu[j].num == a) { b = 1; p = j; } } if (b == 1) { for (int i = p; i < n; i++) stu[i] = stu[i + 1]; n--; cout << "已删除此学生" << endl; } else cout << "没有此学生" << endl; } (6)修改学生信息 // void student::xiugai() { int a, b, p; cout << "请输入需要修改学生的学号" << endl; cin >> a; for (int j = 0; j < n; j++) { if (stu[j].num == a) { b = 1; p = j; } } if (b == 1) { cout << "请输入新的学生学号" << endl; cin >> stu[p].num; cout << "输入学生姓名" << endl; cin >> stu[p].name; cout << "输入数学成绩" << endl; cin >> stu[p].sx; cout << "输入英语成绩" << endl; cin >> stu[p].yy; stu[p].zcj = stu[p].yy + stu[p].sx; cout << "已修改为此学生" << endl; } else cout << "没有此学生" << endl; } (7)课程成绩排序 // void student::paixu() { int c, choice, m, j, k, p; student temp; cout << "***************请选择成绩统计课程 ***************" << endl; cout << " ★1 数 学 ★ " << endl; cout << " ★2 英 语 ★ " << endl; cout << " ★3 总成绩 ★ " << endl; cin >> c; switch (c) { case 1: cout << "*******************************************" << endl; cout << " ★1 降序排列★ " << endl; cout << " ★2 升序排列★ " << endl; //数学成绩排序 cin >> choice; if (choice == 2) { for (m = 0; m < n - 1; m++) //选择排序法 { k = m; for (j = m + 1; j < n; j++) if (stu[j].sx < stu[k].sx) k = j; if (k != m) { temp = stu[k]; stu[k] = stu[m]; stu[m] = temp; } } } else if (choice == 1) { for (m = 0; m < n - 1; m++) { k = m; for (j = m + 1; j < n; j++) if (stu[j].sx > stu[k].sx) k = j; if (k != m) { temp = stu[k]; stu[k] = stu[m]; stu[m] = temp; } } } cout << " 学生学号 姓名 数学成绩 " << endl; for (p = 0; p < n; p++) cout << 't' << stu[p].num << 't' << stu[p].name << 't' << 't' << stu[p].sx << endl; break; case 2: cout << "*******************************************" << endl; cout << " ★1 降序排列★ " << endl; cout << " ★2 升序排列★ " << endl; //英语成绩排序 cin >> choice; if (choice == 2) { for (m = 0; m < n - 1; m++) { k = m; for (j = m + 1; j < n; j++) if (stu[j].yy < stu[k].yy) k = j; if (k != m) { temp = stu[k]; stu[k] = stu[m]; stu[m] = temp; } } } else if (choice == 1) { for (m = 0; m < n - 1; m++) { k = m; for (j = m + 1; j < n; j++) if (stu[j].yy > stu[k].yy) k = j; if (k != m) { temp = stu[k]; stu[k] = stu[m]; stu[m] = temp; } } } cout << " 学生学号" << 't' << "姓名" << 't' << "总成绩" << endl; for (p = 0; p < n; p++) cout << 't' << stu[p].num << 't' << stu[p].name << 't' << stu[p].yy << endl; break; case 3: cout << "*******************************************" << endl; cout << " ★1 降序排列★ " << endl; cout << " ★2 升序排列★ " << endl; //总成绩排序 cin >> choice; if (choice == 2) { for (m = 0; m < n - 1; m++) { k = m; for (j = m + 1; j < n; j++) if (stu[j].zcj < stu[k].zcj) k = j; if (k != m) { temp = stu[k]; stu[k] = stu[m]; stu[m] = temp; } } } else if (choice == 1) { for (m = 0; m < n - 1; m++) { k = m; for (j = m + 1; j < n; j++) if (stu[j].zcj > stu[k].zcj) k = j; if (k != m) { temp = stu[k]; stu[k] = stu[m]; stu[m] = temp; } } } cout << " 学生学号" << 't' << "姓名" << 't' << "总成绩" << endl; for (p = 0; p < n; p++) cout << 't' << stu[p].num << 't' << stu[p].name << 't' << stu[p].zcj << endl; } } (8)求平均成绩 // void student::pingjun() { float sum = 0; float ave; int i; for (i = 0; i < n; i++) { sum += stu[i].zcj; } ave = sum / n; cout << "所有学生的平均成绩为:" << ave << endl; } (9)学生成绩查询 // void student::check() { void Check1(); void Check2(); int c; cout << " ◤ ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ ◥ " << endl; cout << " ☆ ☆ " << endl; cout << " ☆ ***********请选择查询方式*********** ☆ " << endl; cout << " ☆ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ☆ " << endl; cout << " ☆ ● 1 按姓名查询 ☆ " << endl; cout << " ☆ ● 2 按学号查询 ☆ " << endl; cout << " ☆ ● 3 返回上一级 ☆ " << endl; cout << " ☆ ☆ " << endl; cout << " ◣ ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ ◢ " << endl; cin >> c; switch (c) { case 1: Check1(); break; case 2: Check2(); break; case 3: return; default: cout << "请选择序号进行操作:" << endl; } } void Check1() //按姓名查找 { int b, p; string a; cout << "请输入要需要查找学生的姓名" << endl; cin >> a; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { if (stu[j].name == a) { b = 1; p = j; } } if (b == 1) { cout << "学号, 姓名, 数学, 英语, 总成绩" << endl; cout << stu[p].num << 't' << stu[p].name << 't' << stu[p].sx << 't' << stu[p].yy << 't' << stu[p].zcj << endl; } else cout << "没有此学生" << endl; } void Check2() //按学号查找 { int a, b, p; cout << "请输入要需要查找学生的学号" << endl; cin >> a; for (int j = 0; j < n; j++) { if (stu[j].num == a) { b = 1; p = j; } } if (b == 1) { cout << "学号, 姓名, 数学, 英语,总成绩" << endl; cout << stu[p].num << 't' << stu[p].name << 't' << stu[p].sx << 't' << stu[p].yy << 't' << stu[p].zcj << endl; } else cout << "没有此学生" << endl; } (10)退出界面 void student::meau1() { cout << endl; cout << " ▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽ " << endl; cout << " △ △ " << endl; cout << " △ △ " << endl; cout << " △ ※ 感谢使用 ※ △ " << endl; cout << " △ ' : ` △ " << endl; cout << " △ .-----: △ " << endl; cout << " △ .' `. △ " << endl; cout << " △ , / (o) ` △ " << endl; cout << " △ \`._/ ,__) △ " << endl; cout << " △ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ △ " << endl; cout << " △ △ " << endl; cout << " △△△△△△△△△△△△△△△△△△△△△△△△ " << endl; } (11)进入界面 void meau2() { cout << endl; cout << endl; cout << endl; cout << endl; cout << endl; cout << endl; cout << " △▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△ " << endl; cout << " ◆ ◆ " << endl; cout << " ◆ ◆ " << endl; cout << " ◆ ◆ " << endl; cout << " ◆ ★ 欢迎进入成绩管理系统 ★ ◆ " << endl; cout << " ◆ ◆ " << endl; cout << " ◆ ◆ " << endl; cout << " ◆ ◆ " << endl; cout << " △▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△ " << endl; srand((unsigned)time(NULL)); char stu[20] = {0}; int m = 0; union utype { int i; char ch; float a; } temp; temp.i = 266; printf("%dn", temp.ch); while (m != 10) { int a = rand() % 8; system(stu); Sleep(500); m++; } }



