#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<
// 显示表头信息,即是 : 学号,姓名,性别,高代,数分,C语言.
void show_Table()
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别";
cout<<"\t"<
void menu_CMD()
{
int key;
while(1)
{
cout<<"1. 增加学生信息"<
cin>>key;
while(1)
{
if((key < 1)||(key > 6))
{
int key;
cout<<"您的输入有误,请重新输入!"<
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<<"原来没有记录,现在建立新表!"<
}
else
{
cout<<"现在在当前表的末尾添加新的信息!"<
}
//如果数组空间不够,重新申请空间
if(stuNum > INIT_SIZE)
{
cout<<"内存空间不够,现在重新申请新的内存空间!"<
cout<<"空间申请完成!"<
cout<<"您现在要添加一组新的信息,您确定吗?"<
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<<"请输入"<
}
}
if((choi == 'N')||(choi == 'n'))
{
cout<<"退出添加新学生信息!"<
cout<<"现在已经有"<
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//删除信息 晚上完成...
//显示deleteRecord的表头信息
void Info_delete()
{
cout<<"请输入删除方式 : "<
//删除学生的信息,包含两个子函数
void deleteRecord()
{
int key;
cout<
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<<"您所要删除的学生信息是 : "<
cout<
cout<
for(int i = 1;i <= stuNum - 1;i++)
{
cout<
{
cout<<"\t"<
cout<
//显示信息应该放在后面
/*
stuNum--;
cout<<"现在还剩下"<
}
//2.第二种情况,欲删除的学生不是最后一位
if(i != stuNum)
{
cout<<"您所要删除的学生信信息是 : "<
cout<
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}
//接着完成输出
cout<
for(int i = 1;i <= stuNum-1;i++)
{
cout<
{
cout<<"\t"<
cout<
/*
stuNum--;
cout<<"现在还剩下"<
}
stuNum--;
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<<"您所要删除的学生信息是 : "<
cout<
cout<
for(int i = 1;i <= stuNum - 1;i++)
{
cout<
{
cout<<"\t"<
cout<
}
//第二种情况 : 欲删除学生不是最后一位
if(i != stuNum)
{
cout<<"您所要删除的学生信信息是 : "<
cout<
//整体往前 前移一位
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}
cout<
//接着完成输出
cout<<"删除后学生信息表为 : "<
for(int i = 1;i <= stuNum-1;i++)
{
cout<
{
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<<"您所要删除的学生信息是 : "<
cout<
cout<
cout<<"删除后学生信息表为 : "<
for(int i = 1;i <= stuNum-1;i++)
{
cout<
{
cout<<"\t"<
cout<
/*
stuNum--;
cout<<"现在还剩下"<
}
//当欲删的学生不是最后一位,整体往前前移一位
if(i != stuNum)
{
cout<<"您所要删除的学生信息是 : "<
show_Table();
cout<
//整体往前前移一位
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}
//然后输出
cout<
show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout<
{
cout<<"\t"<
cout<
/*
stuNum--;
cout<<"现在还剩下"<
}
stuNum--;
cout<<"现在还剩下"<
}
}
/*****************************************************************************
******************************************************************************/
//显示modifyRecord的表头信息
void Info_modify()
{
cout<<"请输入修改方式 : "<
//查询学生的成绩,当然里面包括两个子函数
void modifyRecord()
{
int key;
cout<
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<
cin>>record[i].num;
cout<<"请输入该学生的姓名 : ";
cin>>record[i].name;
cout<<"请输入该学生的性别 : ";
cin>>record[i].sex;
cout<<"请输入"<
cout<<"请输入"<
cout<<"请输入"<
}
}
}
//按姓名修改
void modify_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(strcmp(record[i].name,tarName) == 0)
{
cout<
cin>>record[i].num;
cout<<"请输入该学生的姓名 : ";
cin>>record[i].name;
cout<<"请输入该学生的性别 : ";
cin>>record[i].sex;
cout<<"请输入"<
cout<<"请输入"<
cout<<"请输入"<
}
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//显示queryRecord的表头信息
void Info_query()
{
cout<<"请输入查询方式 : "<
//查询学生信息queryRecord
void queryRecord()
{
int key;
cout<
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<
}
}
//按姓名查询
void query_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(strcmp(record[i].name,tarName) == 0)
{
cout<<"该学生的信息如下 : "<
show_Table();
cout<
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//先显示所有学生的信息吧
//显示record里所有学生的成绩
void display()
{
show_Table();
int i,j;
for(i = 1;i <= stuNum;i++)
{
//cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别";
cout<
{
cout<<"\t"<
cout<
cout<
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//退出
void quit()
{
char choi;
cout<<"您确定要退出吗?"<
cin>>choi;
if((choi == 'Y')||(choi == 'y'))
{
cout<<"现在退出学生信息管理系统"<
}
//如果不是退出,则接着退回到主界面
else
{
cout<
}
}
这个是原创的... 在C-Free 4.0里跑过,可以正常运行
你可以试着跑一下,如果有什么问题可以和我联系
不知道你要实现什么样的功能,下面的你可以参考一下。
#include
#include
void input(); //声明7个函数
void output();
void paixu();
void chazhao();
void charu();
void shanchu();
void tongji();
struct Student //结构体
{
int num;
char name[12];
float math;
float eng;
float com;
float sum;
float ave;
};
Student x[30];
int N=0;
void main()
{
int m;
do
{ //开场效果
cout<
switch(m)
{
case 1: input();break; //选择七个函数。。
case 2: output();break;
case 3: paixu();break;
case 4: chazhao();break;
case 5: charu();break;
case 6: shanchu();break;
case 7: tongji();break;
case 8: cout<<"谢谢使用!"<
}while(m!=8);
}
void input() //输入信息
{
char m;
do
{
int n=0;int z=N,t=0;
do{
t=0;
cout<<"请输入学号!"<
for( n=0;n
{
cout<<"该学号已存在!!"<
break;
}
}while(t==1);
cout<<"请输入姓名"<
do
{
cout<<"请输入数学成绩(0--100)"<
}while(x[N].math<0||x[N].math>100);
do
{
cout<<"请输入英语成绩(0--100)"<
}while(x[N].eng<0||x[N].eng>100);
do
{
cout<<"请输入计算机成绩"<
}while(x[N].com<0||x[N].com>100);
x[N].sum=x[N].math+x[N].eng+x[N].com;
x[N].ave=x[N].sum/3;
cout<<"是否继续输入?(继续请输入y,结束输入其他)"<
N++;
}while(m=='y');
}
void output() //输出信息
{
int m;
if(N>0)
{
cout<
else
cout<<"未输入任何信息!!"<
void paixu() //排序
{
if(N>0)
{
for(int k=0;k
Student max;
if(x[m].sum
max=x[m+1];
x[m+1]=x[m];
x[m]=max;
}
}
}
else
cout<<"未输入任何信息!!"<
void chazhao() //查找
{
int n;
if(N>0)
{
cout<<"请输入要查找学生的学号!"<
for(int m=0;m
{
cout<
break;
}
if(x[m].num!=n)
cout<<"该学号不存在!!"<
else
cout<<"未输入任何信息!!"<
void charu() //插入
{
char n;
do
{
cout<<"请输入学号!"<
cout<<"请输入姓名"<
do
{
cout<<"请输入数学成绩(0--100)"<
}while(x[N].math<0||x[N].math>100);
do
{
cout<<"请输入英语成绩(0--100)"<
}while(x[N].eng<0||x[N].eng>100);
do
{
cout<<"请输入计算机成绩"<
}while(x[N].com<0||x[N].com>100);
x[N].sum=x[N].math+x[N].eng+x[N].com;
x[N].ave=x[N].sum/3;
N++;
cout<<"是否继续输入?(继续,输入y,否则输入其他)"<
}while(n=='y');
}
void shanchu() //删除
{
if(N>0)
{
cout<<"请输入要删除学生的学号!"<
cin>>n;
for(int m=0;m
{
for(int k=m;k<=N+1;k++)
x[k]=x[k+1];
N--;
t=1;
}
if(t==0)
cout<<"该学号不存在!!"<
else
cout<<"未输入任何信息!!"<
void tongji() //统计
{
if(N>0)
{
int n,a=0,b=0,c=0,d=0,e=0,f=0;
for(int m=0;m
n=(int)x[m].ave/10;
switch(n)
{
case 10: a++;break;
case 9: b++;break;
case 8: c++;break;
case 7: d++;break;
case 6: e++;break;
default: f++;
}
}
cout<<"分数段 100"<<" 90--100"<<" 80--90 "<<" 70--80 "<<" 60--70 "<<" 60以下 "<
else
cout<<"未输入任何信息!!"<
可以依靠Baiduhi提醒我们
有机会能够处理你所遇到的工作
具体的要求也能够提醒我们
学生信息管理**C++源代码
ES:\\B72C884B60A53CB7BF95C26F5594474A