c语言程序设计 学生信息管理系统

2024-10-30 21:43:50
推荐回答(3个)
回答1:

C ++的就有。
# include
# include
# include
# include
# include
//*****定义一个学生原子的的数据结构*****//
struct stuatom
{
char *name;
int id;
char sex;
float math, eng, comp, totll, aver;
void show();
void setup();
};

//*********定义一系列对学生的操作**********//
class student
{
private:
stuatom ob[100];
int stulen;
public:
student();
void input();
void order();
void save();
void Query();
void read();
void add();
void del();

};

//********对学生数据的初始化(类的构造函数)**********//
student::student()
{
//用for循环对全部数组中的数据初始化
for(int i=0;i<100;i++)
{
ob[i].math=ob[i].eng=ob[i].comp =ob[i].totll =ob[i].aver =0;
ob[i].id =0;
ob[i].sex =' ';
ob[i].name =NULL;
}
this->stulen =0;
}

//********输入学生的数据,并判断是否在规定数据域内*******//
void stuatom::setup()
{
char n[20]; char s;
int b;

//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
do {
cout<<" 学号: ";
cin>>b;
if(b>1020||b<1001)
cout<<"Bad data input!!"< }while (b<1001||b>1020);

id=b;

//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
do{
name=new char[strlen(n)+1];
cout<<" 姓名: ";
cin>>n;
if( strlen(n)>6 || strlen(n)<4 )
cout<<"Bad data input!!"< }while ( strlen(n)>6 && strlen(n)<4 );

strcpy(name,n);
cout<<" 性别(m/f):" ;
cin>>s;

//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (s!='m' && s!='f')
{
cout<<"Bad data input!!"< cout<<" 性别(m/f):";
cin>>s;
}

sex=s;
float m, e, co;
cout<<" 数学: ";
cin>>m;

//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (m<0 || m>100)
{
cout<<"Bad data input!!"< cout<<" 数学: ";
cin>>m;
}

math=m;
cout<<" 英语: ";
cin>>e;

//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (e<0 || e>100)
{
cout<<"Bad data input!!"< cout<<" 英语: ";
cin>>e;
}

eng=e;
cout<<" 计算机: ";
cin>>co;

//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (co<0 || co>100)
{
cout<<"Bad data input!!"< cout<<" 计算机: ";
cin>>co;
}

comp=co;
totll=math+eng+comp;
aver=(math+eng+comp)/3;
}

//*******按照规定格式把该学生的数据显示在屏幕上******//
void stuatom::show()
{
cout.setf(ios::left);
cout.width(6);
cout<<""< cout.width(8);
cout< cout.width(10);
cout< cout.width(9);
cout< cout.width(9);
cout< cout.width(11);
cout< cout.width(10);
cout< }

//**************输入学生的数据***********************//
void student::input()
{
int n;
cout< cin>>n;
int j;

//通过循环输入要求输入学生个数的学生的数据。
for(j=0; j {
cout<<" 输入学生信息 "< ob[j].setup();
}

this->stulen=n; //学生个数赋值

//学生数据显示格式
system("cls");
cout< cout<
//通过循环输出所有学生数据。
for(j=0; j {
ob[j].show();
}

cout< cout<<" 是否保存? (Y/N): ";
char Y;
cin>>Y;
system("cls");
}

//**************按照一定格式显示所要查询学生的信息。**************//
void student::Query()
{
int x , i;
cout< cin>>x;
cout< for(i=0;i<=this->stulen ;i++)
{ if (x==ob[i].id)
{
cout.setf(ios::left);
cout.width(6);
cout<<""< cout.width(8);
cout< cout.width(10);
cout< cout.width(9);
cout< cout.width(9);
cout< cout.width(11);
cout< cout.width(10);
cout< }
}
getchar();
}
//*******************保存学生数据**************************//
void student::save()
{
int i;
ofstream outfile;
outfile.open("list.txt",ios::trunc);
if(!outfile)
{
cout<<"Cannot open output file!\n,";
}

//通过循环把所有的学生数据保存在list.txt里边。
for(i=0; istulen; i++)
{
outfile< ob[i].math<<" "< }
outfile.close();
}

//*************显示所有学生数据*********************//
void student::read()
{
int i;
system("cls");
cout< cout<
for(i=0; istulen; i++)
{
ob[i].show();
}
getchar();
}
//*******************一个学生的数据****************//
void student::add()
{
int i, d=this->stulen ;
cout<<"输入要添加学生的信息:"< ob[d].setup();
cout< cout<
for(i=0; i<=d; i++)
{
ob[i].show();
}

ofstream fout("list.txt",ios::app);

if(!fout)
{
cout<<"Cannot open output file!\n,";
}

//把添加的学生数据添加到list.txt里边去。
fout< ob[d].math<<" "<
fout.close();
getchar();
}

//*********************删除指定名字学生的数据*******************//
void student::del()
{
int i,p; char x[8];
cout<<" 输入要删除学生名字:"< cin>>x;

//通过for循环查找要删除学生的姓名
for(i=0; i {
if(strcmp(ob[i].name,x)==0)
{
p=i;
cout< cout< break;
}
else
continue;
}

cout< cout<
//删除了之后,应该把后面的数据往前移,把要删除的数据覆盖,并且学生长度减1
stulen--;
for(i;i {
ob[i]=ob[i+1];
}
this->read ();

cout<<" 删除成功!"< getchar();
}
//***********把学生成绩排序******************//
void student::order()
{
int k,j;
float t; char n[20];

//排序算法。
for(j = 0; j<=(2-1); j++)
{
for(k=1; k<=(2-j); k++)
{
if(ob[k].totll < ob[k + 1].totll)
{
t = ob[k].totll;
ob[k].totll = ob[k+1].totll;
ob[k+1].totll = t;
strcpy(n, ob[k].name);
strcpy(ob[k].name, ob[k+1].name);
strcpy(ob[k+1].name, n);
}

cout<<" 成绩排名:"< cout<<" 姓名 总成绩 名次"< for(k=0; k<=stulen; k++)
{
cout<<" ";
cout.setf(ios::left);
cout.width(9);
cout< cout.width(9);
cout< }
getchar();
}
}
}

//********************选择菜单。*****************//
void menu()
{
cout<<"\n\n";
cout<<"------------------ 学生成绩系统 -----------------"< cout<<"\t\t1.录入与保存学生信息.\n";
cout<<"\t\t2.读取学生信息.\n";
cout<<"\t\t3.删除学生信息.\n";
cout<<"\t\t4.追加学生信息.\n";
cout<<"\t\t5.查询学生信息.\n";
cout<<"\t\t6.显示成绩名次.\n";
cout<<"\t\t7.退出系统......\n\n\n";
cout<<"\t\t请选择功能项: ";
}

//---------------------------------------------------------------------------------------
void main()
{
student a;
while(1)
{

int SEL;
system("cls");
menu();
cin>>SEL;
switch(SEL)
{
case 1:
system("cls"); a.input();a.save();break;
case 2:
system("cls"); a.read(); break;
case 3:
system("cls"); a.del(); break;
case 4:
system("cls"); a.add();break;
case 5:
system("cls"); a.Query();break;
case 6:
system("cls"); a.order();break;
case 7:
cout< getchar();
exit(0);
default:
cout<<"Bad input!!\n";
break;
}
}
}

回答2:

这个题目我做过不太难,给你个做好的你认为对你帮助大吗?
还是自己查查资料吧,应该能做出来,你对自己没信心吗?

回答3:

网上可以搜出来很多的,如果想要自己写,不知道你的水平如何。
像这样的东西最好自己写。

如果是想学的话。不然,没必要做了。