高分求C++程序设计、题目:高校学籍管理系统。在VC6.0下编译、求原创!15+高分追加!求详解!求无错误!

2025-03-04 06:02:29
推荐回答(4个)
回答1:

这个有点大呀... 我原来用C++写过,但是没有用到面向对象的思想... 学号、姓名、系别、班级和所选科目还有各科成绩都有... 包括增删改查...
要不发你看看吧,说不定可以给你一点帮助...
这个是精简版的。。。

#include
#include
#include
#include
#define INIT_SIZE 10
#define INCRE_SIZE 10
#define SUBJECT_NUM 3
#define LEN 3

void show_Start();

void show_Table();

void addRecord();

void Info_delete();
void deleteRecord();
void delete_Num(int);
void delete_Name(char tarName[]);

void Info_modify();
void modifyRecord();
void modify_Num(int);
void modify_Name(char[]);

void Info_query();
void queryRecord();
void query_Num(int);
void query_Name(char[]);

void display();

void quit();

void menu_CMD();

char *subject[SUBJECT_NUM] = {"高代","数分","C语言"};

struct STUDENT
{
int num;
char name[20];
char sex;
float score[SUBJECT_NUM];
};

//struct STUDENT stu[LEN + 1];

//STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);

int static stuNum = 0;
//先暂时定义三个学生吧...

STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);;

int main()
{
//record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);
//STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);

/*
record[1].num = 1001;
strcpy(record[1].name,"Jason");
record[1].sex = 'M';
record[1].score[0] = 85.0;
record[1].score[1] = 90.0;
record[1].score[2] = 95.0;

record[2].num = 1002;
strcpy(record[2].name,"Jerry");
record[2].sex = 'M';
record[2].score[0] = 85.0;
record[2].score[1] = 90.0;
record[2].score[2] = 95.0;

record[3].num = 1003;
strcpy(record[3].name,"Jessie");
record[3].sex = 'F';
record[3].score[0] = 85.0;
record[3].score[1] = 90.0;
record[3].score[2] = 95.0;
*/

/*
Info_modify();
int key;
cout<<"请输入您的选择 : ";
cin>>key;

if(key == 1)
{
int targetNum;
cout<<"请输入您欲修改的学生的学号 : ";
cin>>targetNum;

modify_Num(targetNum);
cout<
display();
}

if(key == 2)
{
char targetName[20];
cout<<"请输入您欲修改学生的姓名 : ";
cin>>targetName;

modify_Name(targetName);
cout<
display();
}

if(key == 3)
{
exit(0);
}
*/

show_Start();

menu_CMD();

return 0;

}

//修改完后还应该显示
void show_Start()
{
//cout< cout<<" **************************************** "< cout<<" 这是一个 "< cout<<" 学生成绩管理系统 "< cout<<" 可以对学生成绩进行管理 "< cout<<" 欢迎大家使用 "< cout<<" Made by Jason "< cout<<" **************************************** "<}

// 显示表头信息,即是 : 学号,姓名,性别,高代,数分,C语言.
void show_Table()
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别";
cout<<"\t"< cout<}

void menu_CMD()
{
int key;
while(1)
{
cout<<"1. 增加学生信息"< cout<<"2. 删除学生信息"< cout<<"3. 修改学生信息"< cout<<"4. 查询学生信息"< cout<<"5. 显示学生信息"< cout<<"6. 退出"< cout<<"请输入您的选择 : ";
cin>>key;
while(1)
{
if((key < 1)||(key > 6))
{
int key;
cout<<"您的输入有误,请重新输入!"< cout<<"请选(1 - 5) : ";
cin>>key;
}
else
{
break;
}
}
switch(key)
{
case 1:
addRecord();
break;
case 2:
deleteRecord();
break;
case 3:
modifyRecord();
break;
case 4:
queryRecord();
break;
case 5:
display();
break;
case 6:
quit();
break;
}

}
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

//增加学生信息
void addRecord()
{

if(stuNum == 0)
{
cout<<"原来没有记录,现在建立新表!"< stuNum++;
}
else
{
cout<<"现在在当前表的末尾添加新的信息!"< stuNum++;
}

//如果数组空间不够,重新申请空间
if(stuNum > INIT_SIZE)
{
cout<<"内存空间不够,现在重新申请新的内存空间!"< record = (STUDENT*)realloc(record,(INIT_SIZE + INCRE_SIZE)*sizeof(STUDENT));
cout<<"空间申请完成!"< }

cout<<"您现在要添加一组新的信息,您确定吗?"< cout<<"请输入您的选择(Y/N) : ";
char choi;
cin>>choi;
if((choi == 'Y')||(choi == 'y'))
{
cout<<"请输入学号 : ";
cin>>record[stuNum].num;
cout<<"请输入姓名 : ";
cin>>record[stuNum].name;
cout<<"请输入性别(M为男,F为女) : ";
cin>>record[stuNum].sex;

int i;
for(i = 0;i < SUBJECT_NUM;i++)
{
cout<<"请输入"< cin>>record[stuNum].score[i];
}
}

if((choi == 'N')||(choi == 'n'))
{
cout<<"退出添加新学生信息!"< cout< }

cout<<"现在已经有"< cout<}

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//删除信息 晚上完成...

//显示deleteRecord的表头信息
void Info_delete()
{
cout<<"请输入删除方式 : "< cout<<"1. 按学号删除"< cout<<"2. 按姓名删除"< cout<<"3. 退出删除"<}

//删除学生的信息,包含两个子函数
void deleteRecord()
{
int key;
cout< Info_delete();
cout<<"请输入您的选择 : ";
cin>>key;

if(key == 1)
{
int targetNum;
cout<<"请输入您欲删除学生的学号 : ";
cin>>targetNum;

//按学号删除
delete_Num(targetNum);
cout< }

if(key == 2)
{
char targetName[20];
cout<<"请输入您欲删除学生的姓名 : ";
cin>>targetName;

//按姓名删除
delete_Name(targetName);
cout< }

if(key == 3)
{
while(1)
{
menu_CMD();

}
}
}

//按学号删除学生信息
//只用完成删除操作,而不必输出. 输出的操作可以在主菜单中进行

void delete_Num(int tarNum)
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(record[i].num == tarNum)
{
//删除还要分两种情况讨论
//1. 欲删除的学生信息是最后一位
//2. 欲删除的学生信息不是最后一位

//第一种情况,欲删除的学生是最后一位
if(i = stuNum)
{
cout<<"您所要删除的学生信息是 : "< show_Table();
cout< < cout<
cout< show_Table();
for(int i = 1;i <= stuNum - 1;i++)
{
cout< for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"< }
cout< }
//显示信息应该放在后面
/*
stuNum--;
cout<<"现在还剩下"< cout< */
}

//2.第二种情况,欲删除的学生不是最后一位
if(i != stuNum)
{

cout<<"您所要删除的学生信信息是 : "< show_Table();
cout< <
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}

//接着完成输出

cout< cout<<"删除后学生信息表为 : "< show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout< for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"< }
cout< }
/*
stuNum--;
cout<<"现在还剩下"< cout< */
}

stuNum--;
cout<<"现在还是剩下"< cout< }
}
}

/*

//方法同上
void delete_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(strcmp(record[i].name,tarName) == 0)
{
//删除还要分两种情况讨论
//1. 欲删除的学生信息是最后一位
//2. 欲删除的学生信息不是最后一位

//第一种情况 : 欲删除学生是最后一位
if(i = stuNum)
{
cout<<"您所要删除的学生信息是 : "< show_Table();
cout< < cout<
cout< show_Table();
for(int i = 1;i <= stuNum - 1;i++)
{
cout< for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"< }
cout< }
}

//第二种情况 : 欲删除学生不是最后一位
if(i != stuNum)
{

cout<<"您所要删除的学生信信息是 : "< show_Table();
cout< <
//整体往前 前移一位
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}
cout<
//接着完成输出
cout<<"删除后学生信息表为 : "< show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout< for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"< }
cout< }

cout< }
}

}

}

*/

void delete_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{

//删除还要分两种情况讨论
//1. 欲删除的学生信息是最后一位
//2. 欲删除的学生信息不是最后一位

//当欲删除的学生是最后一位,直接输出前面LEN-1位学生的信息

if(strcmp(record[i].name,tarName) == 0)
{
if(i == stuNum)
{
cout<<"您所要删除的学生信息是 : "< show_Table();
cout< <
cout<
cout<<"删除后学生信息表为 : "< show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout< for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"< }
cout< }
/*
stuNum--;
cout<<"现在还剩下"< cout< */
}

//当欲删的学生不是最后一位,整体往前前移一位
if(i != stuNum)
{
cout<<"您所要删除的学生信息是 : "<
show_Table();
cout< cout< cout<
//整体往前前移一位
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}

//然后输出
cout< cout<<"删除后学生信息表为 : "<
show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout< for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"< }
cout< }
/*
stuNum--;
cout<<"现在还剩下"< cout< */
}

stuNum--;
cout<<"现在还剩下"< cout< }
}
}

/*****************************************************************************
******************************************************************************/

//显示modifyRecord的表头信息
void Info_modify()
{
cout<<"请输入修改方式 : "< cout<<"1. 按学号修改"< cout<<"2. 按姓名修改"< cout<<"3. 退出修改"<}

//查询学生的成绩,当然里面包括两个子函数
void modifyRecord()
{
int key;
cout< Info_modify();
cout<<"请输入您的选择 : ";
cin>>key;

//按学号修改
if(key == 1)
{
int targetNum;
cout<<"请输入您欲修改的学生的学号 : ";
cin>>targetNum;

modify_Num(targetNum);
cout<
//display();
}

//按姓名修改
if(key == 2)
{
char targetName[20];
cout<<"请输入您欲修改学生的姓名 : ";
cin>>targetName;

modify_Name(targetName);
cout<
//display();
}

//退出修改
if(key == 3)
{
while(1)
{
menu_CMD();
}
}
}

//按学号修改
void modify_Num(int tarNum)
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(record[i].num == tarNum)
{
cout< cout<<"请输入该学生的学号 : ";
cin>>record[i].num;
cout<<"请输入该学生的姓名 : ";
cin>>record[i].name;
cout<<"请输入该学生的性别 : ";
cin>>record[i].sex;
cout<<"请输入"< cin>>record[i].score[0];
cout<<"请输入"< cin>>record[i].score[1];
cout<<"请输入"< cin>>record[i].score[2];
}
}
}

//按姓名修改
void modify_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(strcmp(record[i].name,tarName) == 0)
{
cout< cout<<"请输入该学生的学号 : ";
cin>>record[i].num;
cout<<"请输入该学生的姓名 : ";
cin>>record[i].name;
cout<<"请输入该学生的性别 : ";
cin>>record[i].sex;
cout<<"请输入"< cin>>record[i].score[0];
cout<<"请输入"< cin>>record[i].score[1];
cout<<"请输入"< cin>>record[i].score[2];
}
}
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

//显示queryRecord的表头信息
void Info_query()
{
cout<<"请输入查询方式 : "< cout<<"1. 按学号查询"< cout<<"2. 按姓名查询"< cout<<"3. 退出查询"<}

//查询学生信息queryRecord
void queryRecord()
{
int key;
cout< Info_query();
cout<<"请输入您的选择 : ";
cin>>key;

if(key == 1)
{
int targetNum;
cout<<"请输入您欲查询学生的学号 : ";
cin>>targetNum;

query_Num(targetNum);
cout< }

if(key == 2)
{
char targetName[20];
cout<<"请输入您欲查询学生的学号 : ";
cin>>targetName;

query_Name(targetName);
cout< }

//退出查询,退回到主菜单吧...
if(key == 3)
{
while(1)
{
menu_CMD();
}
}
}

//按学号查询
void query_Num(int tarNum)
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(record[i].num == tarNum)
{
//如果表中有该学生信息的话,仅用输出该学生的信息即可.
//输出该学生的信息
cout<<"该学生的信息如下 : "<
//显示表头信息
show_Table();

//显示该学生具体的信息
cout< cout<<"\t"< cout< }
}
}

//按姓名查询
void query_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(strcmp(record[i].name,tarName) == 0)
{
cout<<"该学生的信息如下 : "<
show_Table();

cout< cout<<"\t"< cout< }
}
}

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

//先显示所有学生的信息吧
//显示record里所有学生的成绩
void display()
{
show_Table();
int i,j;
for(i = 1;i <= stuNum;i++)
{
//cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别";
cout< for(j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"< }
cout< }
cout<}

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

//退出
void quit()
{
char choi;
cout<<"您确定要退出吗?"< cout<<"请输入您的选择(Y/N) : ";
cin>>choi;
if((choi == 'Y')||(choi == 'y'))
{
cout<<"现在退出学生信息管理系统"< exit(0);
}
//如果不是退出,则接着退回到主界面
else
{
cout< menu_CMD();
}

}

不知道对你有没有一点帮助... 呵呵...

回答2:

可以通过Baidu Hi告知我们
有机会可能完成你所面临的任务
同样的要求也可能告知我们
高分求C++程序**、题目:高校学籍管理**。在VC*.0下...
ES:\\5BF4D996A3B5DD2518F6B5F3C8475953

回答3:

这么庞大的一个程序,恐怕不是给点分就能解决问题的。
如有需要,我有偿提供!

回答4:

这个不是很难得
自己好好实现吧