求学生信息管理系统源程序?

 我来答
灵逸清秋
2011-06-21 · 超过21用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:43.9万
展开全部
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include <windows.h>
using namespace std;
typedef struct students
{
int xuehao;
char name[8];
char xingbie[4];
char nianji[20];
char dizhi[80];
char dianhua[16];
float yuwen;
float shuxue;
float yingyu;
float zongfen;
struct students *next;
}stu;
stu *bulidline()
{
stu *head,*p,*q;
stu a;
head=(stu*)malloc(sizeof(stu));//开辟新空间
if(head==NULL)return 0;
FILE *fp=fopen("d:\\students.txt","r");
q=head;
do
{
fscanf(fp,"%d %s %s %s %s %s %f %f %f\n",&a.xuehao,a.name,a.xingbie,a.nianji,a.dizhi,a.dianhua,&a.yuwen,&a.shuxue,&a.yingyu);
p=(stu *)malloc(sizeof(stu));
p->xuehao=a.xuehao;
strcpy(p->name,a.name);
strcpy(p->xingbie,a.xingbie);
strcpy(p->nianji,a.nianji);
strcpy(p->dizhi,a.dizhi);
strcpy(p->dianhua,a.dianhua);
p->yuwen=a.yuwen;
p->shuxue=a.shuxue;
p->yingyu=a.yingyu;
p->zongfen=a.yuwen+a.shuxue+a.yingyu;
q->next=p;
q=p;
}while(!feof(fp));
p->next=NULL;
fclose(fp);
return head;
}
void chaxun(stu *head)
{
stu *q,*p;
q=head;
int xuehao,r=0,i=0;
while(1)
{
loop2: cout<<"\t\t\t请输入查询学生学号:"<<endl;
cout<<"\t\t\t";cin>>xuehao;
system("cls");
p=q->next;
for(p;p!=NULL;p=p->next)
{
if(p->xuehao==xuehao)
{
cout<<"\t\t\t学号:"<<p->xuehao<<endl<<"\t\t\t姓名:"<<p->name<<endl<<"\t\t\t性别:"<<p->xingbie<<endl<<"\t\t\t年级:"<<p->nianji<<endl<<"\t\t\t家庭住址:"<<p->dizhi<<endl<<"\t\t\t联系电话:"<<p->dianhua<<endl<<"\t\t\t语文:"<<p->yuwen<<endl<<"\t\t\t数学:"<<p->shuxue<<endl<<"\t\t\t英语:"<<p->yingyu<<endl<<"\t\t\t总分:"<<p->zongfen<<endl;
i=1;
break;
}
else i=0;
}
if(i==0)
{
cout<<"\t\t\t该生信息不存在或输入错误,请重新输入!"<<endl;
goto loop2;
}
loop: cout<<"\t\t\t下一步:"<<endl;
cout<<"\t\t\t1、查询下一个;2、结束"<<endl;
cout<<"\t\t\t";cin>>r;
system("cls");
if(r==2)return;
if(r!=1)
{
cout<<"\t\t\t输入有误,请重新输入!"<<endl;
goto loop;
}
}
}
int insert(stu *head,stu *std)
{
stu *p,*q,*s;
s=(stu *)malloc(sizeof(stu));
q=head;
p=head->next;
while(p!=NULL)
{
q=p;
p=p->next;
}
q->next=s;
s->next=p;
s->xuehao=std->xuehao;
strcpy(s->name,std->name);
strcpy(s->xingbie,std->xingbie);
strcpy(s->nianji,std->nianji);
strcpy(s->dizhi,std->dizhi);
strcpy(s->dianhua,std->dianhua);
s->yuwen=std->yuwen;
s->shuxue=std->shuxue;
s->yingyu=std->yingyu;
s->zongfen=std->yuwen+std->shuxue+std->yingyu;
return 0;
}
int xiugai(stu *head)
{
stu *q,*p;
q=head;
int xuehao,r=0,j=0;
while(1)
{
int i=0;
cout<<"\t\t\t请输入要修改信息学生学号:"<<endl;
cout<<"\t\t\t";cin>>xuehao;
system("cls");
p=q->next;
for(p;p!=NULL;p=p->next)
{
if(p->xuehao==xuehao)
{
cout<<"\t\t\t学号:"<<p->xuehao<<endl;
cout<<"\t\t\t姓名:"<<p->name<<endl;
cout<<"\t\t\t性别:"<<p->xingbie<<endl;
cout<<"\t\t\t班级:"<<p->nianji<<endl;
loop: cout<<"\t\t\t家庭住址:"<<p->dizhi<<endl;
cout<<"\t\t\t请输入新住址:";
cin>>p->dizhi;
system("cls");
cout<<"\t\t\t联系电话:"<<p->dianhua<<endl;
cout<<"\t\t\t请输入新联系电话:";
cin>>p->dianhua;
system("cls");
cout<<"\t\t\t语文:"<<p->yuwen<<endl;
cout<<"\t\t\t请输入新成绩:";
cin>>p->yuwen;
system("cls");
cout<<"\t\t\t数学:"<<p->shuxue<<endl;
cout<<"\t\t\t请输入新成绩:";
cin>>p->shuxue;
system("cls");
cout<<"\t\t\t英语:"<<p->yingyu<<endl;
cout<<"\t\t\t请输入新成绩:";
cin>>p->yingyu;
system("cls");
loop2: cout<<"\t\t\t是否确认修改?"<<endl;
cout<<"\t\t\t1、是;2、重新输入;3、返回"<<endl;
cout<<"\t\t\t";
cin>>r;
system("cls");
if(r==2)goto loop;
else if(r==3)return 0;
else if(r!=1)
{
cout<<"选择错误,请重新选择!"<<endl;
goto loop2;
}
i=1;
break;
}
else i=0;
}
if(i==0)
{
cout<<"\t\t\t输入错误!"<<endl;
return 0;
}

loop3: cout<<"\t\t\t修改下一个?"<<endl;
cout<<"\t\t\t1、是;2否"<<endl;
cout<<"\t\t\t";cin>>j;system("cls");
if(j==2)return 0;
else if(j!=1)
{
cout<<"\t\t\t输入有误,请重新输入!"<<endl;
goto loop3;
}
}
}
int shanchu(stu *head)
{
stu *p,*q;
int xuehao;
while(1)
{
int i=0,r=0;
cout<<"\t\t\t请输入要删除的学生学号:";
cin>>xuehao;
system("cls");
q=head;
p=q->next;
while(p!=NULL&&p->xuehao!=xuehao)
{
q=p;
p=p->next;

}
cout<<"\t\t\t学号:"<<p->xuehao<<endl<<"\t\t\t姓名:"<<p->name<<endl<<"\t\t\t性别:"<<p->xingbie<<endl<<"\t\t\t年级:"<<p->nianji<<endl<<"\t\t\t家庭住址:"<<p->dizhi<<endl<<"\t\t\t联系电话:"<<p->dianhua<<endl<<"\t\t\t语文:"<<p->yuwen<<endl<<"\t\t\t数学:"<<p->shuxue<<endl<<"\t\t\t英语:"<<p->yingyu<<endl<<"\t\t\t总分:"<<p->zongfen<<endl;
while(1)
{
cout<<"\t\t\t是否确认删除?"<<endl;
cout<<"\t\t\t1、是;2、否"<<endl;
cout<<"\t\t\t";
cin>>r;system("cls");
if(r==1)break;
else if(r==2)return 0;
else
cout<<"\t\t\t输入有误,请重新选择!"<<endl;
}
if(p!=NULL)
{
q->next=p->next;
cout<<"\t\t\t删除成功!"<<endl;
}
else
cout<<"\t\t\t该生信息记录不存在!";
loop: cout<<"\t\t\t是否继续先删除?"<<endl;
cout<<"\t\t\t1、是;2否"<<endl;
cout<<"\t\t\t";cin>>i;system("cls");
if(i==2)return 0;
else if(i!=1)
{
cout<<"\t\t\t输入有误,请重新选择!"<<endl;
goto loop;
}
}
}
int liulan(stu *head)
{
stu *p;
int i=1;
p=head->next;
for(p;p!=NULL;p=p->next)
{
cout<<"\t\t第"<<i<<"名:";
cout<<" 学号:"<<p->xuehao<<endl<<"\t\t\t姓名:"<<p->name<<endl<<"\t\t\t性别:"<<p->xingbie<<endl<<"\t\t\t年级:"<<p->nianji<<endl<<"\t\t\t家庭住址:"<<p->dizhi<<endl<<"\t\t\t联系电话:"<<p->dianhua<<endl<<"\t\t\t语文:"<<p->yuwen<<endl<<"\t\t\t数学:"<<p->shuxue<<endl<<"\t\t\t英语:"<<p->yingyu<<endl<<"\t\t\t总分:"<<p->zongfen<<endl;
cout<<"\n\n\n";
i=i+1;
}
return 0;
}
int paixu(stu *head)
{
stu *p,*q;
stu a;
float l;
q=p=head->next;
for(p;p!=NULL;p=p->next)
for(q=p->next;q!=NULL;q=q->next)
if(p->zongfen<q->zongfen)
{
a.xuehao=p->xuehao;
strcpy(a.name,p->name);
strcpy(a.xingbie,p->xingbie);
strcpy(a.nianji,p->nianji);
strcpy(a.dizhi,p->dizhi);
strcpy(a.dianhua,p->dianhua);
a.yuwen=p->yuwen;
a.shuxue=p->shuxue;
a.yingyu=p->yingyu;
l=p->zongfen;

p->xuehao=q->xuehao;
strcpy(p->name,q->name);
strcpy(p->xingbie,q->xingbie);
strcpy(p->nianji,q->nianji);
strcpy(p->dizhi,q->dizhi);
strcpy(p->dianhua,q->dianhua);
p->yuwen=q->yuwen;
p->shuxue=q->shuxue;
p->yingyu=q->yingyu;
p->zongfen=q->zongfen;

q->xuehao=a.xuehao;
strcpy(q->name,a.name);
strcpy(q->xingbie,a.xingbie);
strcpy(q->nianji,a.nianji);
strcpy(q->dizhi,a.dizhi);
strcpy(q->dianhua,a.dianhua);
q->yuwen=a.yuwen;
q->shuxue=a.shuxue;
q->yingyu=a.yingyu;
q->zongfen=l;
}

return 0;
}
int xiufu(stu *head)
{
stu *p;
FILE*qf=fopen("d:\\students.txt","w");
for(p=head->next;p!=NULL;p=p->next)
fprintf(qf,"%d %s %s %s %s %s %f %f %f\n",p->xuehao,p->name,p->xingbie,p->nianji,p->dizhi,p->dianhua,p->yuwen,p->shuxue,p->yingyu);
fclose(qf);
return 0;
}
int main()
{
stu *head;
stu s;
int r=0,i=0;

head=bulidline();cout<<"\t\t\t欢迎登陆学生信息管理系统!"<<"\n\n\n"<<endl;
paixu(head);
while(1)
{

lop1: cout<<"\t\t\t请选择您要进行的操作:\n"<<endl;
cout<<"\t\t\t1、成绩查询"<<endl<<"\t\t\t2、增加新学生信息"<<endl;
cout<<"\t\t\t3、修改学生信息"<<endl;
cout<<"\t\t\t4、浏览学生信息"<<endl;
cout<<"\t\t\t5、删除学生信息记录"<<endl;
cout<<endl<<"\t\t\t";cin>>r;system("cls");
if(r>5||r<1)
{
cout<<"\t\t\t输入错误,请重新选择!"<<endl;
goto lop1;
}
switch(r)
{
case 1:chaxun(head);break;
case 2:while(1)
{
int i,k;
cout<<"\t\t\t请依照提示输入相应信息!"<<endl;
cout<<"\t\t\t学号:";
cin>>s.xuehao;system("cls");
cout<<endl<<"\t\t\t姓名:";
cin>>s.name;system("cls");
cout<<endl<<"\t\t\t性别:";
cin>>s.xingbie;system("cls");
cout<<endl<<"\t\t\t年级:";
cin>>s.nianji;system("cls");
cout<<endl<<"\t\t\t家庭住址:";
cin>>s.dizhi;system("cls");
cout<<endl<<"\t\t\t联系电话:";
cin>>s.dianhua;system("cls");
cout<<endl<<"\t\t\t语文:";
cin>>s.yuwen;system("cls");
cout<<endl<<"\t\t\t数学:";
;cin>>s.shuxue;system("cls");
cout<<endl<<"\t\t\t英语:";
;cin>>s.yingyu;system("cls");
insert(head,&s);
while(1)
{
cout<<"\t\t\t添加完成,是否继续增加?"<<endl<<"\t\t\t1、是;2、否"<<endl;
cout<<"\t\t\t";cin>>i;system("cls");
if(i==1)break;
else if(i==2)
{
k=1;
break;
}
else if(i!=1)cout<<"\t\t\t输入有误,请重新选择!"<<endl;
}
if(k==1)break;
};
xiufu(head);
paixu(head);
break;
case 3:xiugai(head);paixu(head);xiufu(head);break;
case 4:liulan(head);break;
case 5:shanchu(head);
xiufu(head);
paixu(head);
break;
}
lop: cout<<"\t\t\t是否结束程序?"<<endl;
cout<<"\t\t\t1、是;2、否"<<endl;
cout<<"\t\t\t";cin>>i;system("cls");
if(i==1)break;
else if(i!=2)
{
cout<<"\t\t\t输入错误,请重新选择!"<<endl;
goto lop;
}
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式