c语言学生档案管理系统.docx
- 文档编号:2571550
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:25
- 大小:17.64KB
c语言学生档案管理系统.docx
《c语言学生档案管理系统.docx》由会员分享,可在线阅读,更多相关《c语言学生档案管理系统.docx(25页珍藏版)》请在冰点文库上搜索。
c语言学生档案管理系统
#include
#include
#include
#defineNULL0
structstudent
{
charstudent_ID[10];
charname[10];
chartelephone[12];
structstudent*next;
};
structcourse
{
charstudent_ID[10];
charcourse_ID[10];
intscore;
structcourse*next;
};
intscount=0,ccount=0;
structstudent*head_s=NULL;
structcourse*head_c=NULL;
structcourse*add_score()
{
charcho;
charstudent_ID[10];
charcourse_ID[10];
intscore;
structcourse*p1,*p2,*p;
do
{
printf("inputthedate:
student_ID,course_ID,score\n");
scanf("%s%s%d",student_ID,course_ID,&score);
p1=p2=(structcourse*)malloc(sizeof(structcourse));
strcpy(p2->student_ID,student_ID);
strcpy(p2->course_ID,course_ID);
p2->score=score;
p2->next=NULL;
p1=head_c;
if(head_c==0)head_c=p2,p2->next=NULL;
else
{
while((strcmp(p2->student_ID,p1->student_ID)>0)&&(p1->next!
=NULL))
{
p=p1;
p1=p1->next;
}
if(strcmp(p2->student_ID,p1->student_ID)<0)
{
if(head_c==p1)head_c=p2;
elsep->next=p2;
p2->next=p1;
}
else
{
p1->next=p2;p2->next=NULL;
}
}
ccount++;
printf("是否退出?
(Y\N)\n");
getchar();
scanf("%c",&cho);
}
while(cho!
='n'&&cho!
='N');
return(head_c);
}
structstudent*add_info()
{
charstudent_ID[10];
charname[10];
chartelephone[12];
charcho;
structstudent*p1,*p2,*p;
do
{
printf("inputthedate:
student_ID,name,telephone\n");
scanf("%s%s%s",student_ID,name,telephone);
p1=p2=(structstudent*)malloc(sizeof(structstudent));
strcpy(p2->student_ID,student_ID);
strcpy(p2->name,name);
strcpy(p2->telephone,telephone);
p2->next=NULL;
p1=head_s;
if(head_s==0)head_s=p2,p2->next=NULL;
else
{
while((strcmp(p2->student_ID,p1->student_ID)>0)&&(p1->next!
=NULL))
{
p=p1;
p1=p1->next;
}
if(strcmp(p2->student_ID,p1->student_ID)<0)
{
if(head_s==p1)head_s=p2;
elsep->next=p2;
p2->next=p1;
}
else
{
p1->next=p2;p2->next=NULL;
}
}
scount++;
getchar();
printf("是否退出?
(Y/N)\n");
scanf("%c",&cho);
}
while(cho!
='n'&&cho!
='N');
return(head_s);
}
voidadd()
{
intcho;
do
{
printf("-------增加学生档案信息--------\n");
printf("1.增加学生基本信息\n2.增加学生成绩\n0.退出\n");
printf("\n请选择:
");
scanf("%d",&cho);
switch(cho)
{
case1:
head_s=add_info();break;
case2:
head_c=add_score();break;
case0:
;break;
}
}
while(cho!
=0);
}
voidprint_c()
{
structcourse*p;
printf("\nNow,These%drecordsare:
\n",ccount);
p=head_c;
if(head_c!
=NULL)
do
{
printf("%s%s%d\n",p->student_ID,p->course_ID,p->score);
p=p->next;
}
while(p!
=NULL);
}
voidprint_s()
{
structstudent*p;
printf("\nNow,These%drecordsare:
\n",scount);
p=head_s;
if(head_s!
=NULL)
do
{
printf("%s%s%s\n",p->student_ID,p->name,p->telephone);
p=p->next;
}
while(p!
=NULL);
}
voidprint()
{
intcho;
do
{
printf("-------打印学生档案信息--------\n");
printf("1.打印学生基本信息\n2.打印学生成绩\n0.退出\n");
printf("\n请选择:
");
scanf("%d",&cho);
switch(cho)
{
case1:
print_s();break;
case2:
print_c();break;
case0:
;break;
}
}
while(cho!
=0);
}
voidinit()
{
FILE*fp1,*fp2;
structstudent*p1,*p2;
structcourse*p3,*p4;
structstud
{
charstudent_ID[10];
charname[10];
chartelephone[12];
}stu;
structcour
{
charstudent_ID[10];
charcourse_ID[10];
intscore;
}cou;
if((fp1=fopen("E:
\\jiguiyang\\basic_info.dat","rb"))==NULL)
printf("没有学生信息数据,请添加学生信息!
\n");
else
{
fread(&stu,sizeof(structstud),1,fp1);
while(!
feof(fp1))
{
p2=(structstudent*)malloc(sizeof(structstudent));
strcpy(p2->student_ID,stu.student_ID);
strcpy(p2->name,stu.name);
strcpy(p2->telephone,stu.telephone);
p2->next=NULL;
if(head_s==0)
head_s=p2,p1=head_s;
else
p1->next=p2,p1=p1->next;
scount++;
fread(&stu,sizeof(structstud),1,fp1);
}
fclose(fp1);
}
if((fp2=fopen("E:
\\jiguiyang\\score.dat","rb"))==NULL)
printf("没有学生成绩,请添加学生成绩!
\n");
else
{
fread(&cou,sizeof(structcour),1,fp2);
while(!
feof(fp2))
{
p4=(structcourse*)malloc(sizeof(structcourse));
strcpy(p4->student_ID,cou.student_ID);
strcpy(p4->course_ID,cou.course_ID);
p4->score=cou.score;
p4->next=NULL;
if(head_c==0)
head_c=p4,p3=head_c;
else
p3->next=p4,p3=p3->next;
ccount++;
fread(&cou,sizeof(structcour),1,fp2);
}
fclose(fp2);
}
}
voidsave()
{
structstud
{
charstudent_ID[10];
charname[10];
chartelephone[12];
}stu;
structcour
{
charstudent_ID[10];
charcourse_ID[10];
intscore;
}cou;
FILE*fp1,*fp2;
structstudent*p1;
structcourse*p2;
if((fp1=fopen("E:
\\jiguiyang\\basic_info.dat","wb"))==NULL)
printf("没有学生信息数据,请添加学生信息!
\n");
else
{
p1=head_s;
if(head_s!
=NULL)
do
{
strcpy(stu.student_ID,p1->student_ID);
strcpy(stu.name,p1->name);
strcpy(stu.telephone,p1->telephone);
fwrite(&stu,sizeof(structstud),1,fp1);
p1=p1->next;
}
while(p1!
=NULL);
fclose(fp1);
}
if((fp2=fopen("E:
\\jiguiyang\\score.dat","wb"))==NULL)
printf("没有学生成绩,请添加学生成绩!
\n");
else
{
p2=head_c;
if(head_c!
=NULL)
do
{
strcpy(cou.student_ID,p2->student_ID);
strcpy(cou.course_ID,p2->course_ID);
cou.score=p2->score;
fwrite(&cou,sizeof(structcour),1,fp2);
p2=p2->next;
}
while(p2!
=NULL);
fclose(fp2);
}
}
structstudent*alter_info()
{
structstudent*p1;
charstudent_ID[10];
charname[10];
chartelephone[12];
voidsave();
charcho;
if(head_s==NULL)
{
printf("没有%s号学生基本信息!
\n",student_ID);
returnhead_s;
}
do
{
printf("请输入要修改学生的学号:
");
scanf("%s",student_ID);
getchar();
p1=head_s;
while(strcmp(student_ID,p1->student_ID)!
=0&&(p1->next)!
=NULL)
{
p1=p1->next;
}
if(strcmp(student_ID,p1->student_ID)==0)
{
printf("%s号学生的基本信息为:
",student_ID);
printf("%s%s%s",p1->student_ID,p1->name,p1->telephone);
getchar();
printf("是否修改姓名?
(Y/N)\n");
cho=getchar();
if(cho=='Y'||cho=='y')
{
printf("请输入修改后的姓名:
\n");
scanf("%s",name);
strcpy(p1->name,name);
}
getchar();
printf("是否修改电话号码?
(Y/N)\n");
cho=getchar();
if(cho=='Y'||cho=='y')
{
printf("请输入修改后的电话号码:
\n");
scanf("%s",telephone);
strcpy(p1->telephone,telephone);
}
printf("信息已修改,修改后%s号学生的基本信息为:
\n",student_ID);
printf("%s%s%s",p1->student_ID,p1->name,p1->telephone);
getchar();
}
else
{
printf("没有%s号学生信息\n",student_ID);
}
getchar();
printf("是否继续?
(Y/N)\n");
cho=getchar();
}while(cho=='y'||cho=='Y');
save();
returnhead_s;
}
structcourse*alter_score()
{
voidsave();
structcourse*p1;
charstudent_ID[10];
charcourse[10];
intscore;
charcho;
if(head_c==NULL)
{
printf("没有%s号学生基本信息!
\n",student_ID);
}
do
{
printf("请输入要修改学生的学号:
");
scanf("%s",student_ID);
getchar();
p1=head_c;
while(strcmp(student_ID,p1->student_ID)!
=0&&(p1->next)!
=NULL)
{
p1=p1->next;
}
if(strcmp(student_ID,p1->student_ID)==0)
{
printf("%s号学生的基本信息为:
",student_ID);
printf("%s%s%d",student_ID,course,score);
getchar();
printf("是否修改课程?
(Y/N)\n");
cho=getchar();
if(cho=='Y'||cho=='y')
{
printf("请输入修改后的课程:
\n");
scanf("%s",course);
strcpy(course,course);
}
getchar();
printf("是否修改成绩?
(Y/N)\n");
cho=getchar();
if(cho=='Y'||cho=='y')
{
printf("请输入修改后的成绩:
\n");
scanf("%d",&score);
p1->score=score;
}
printf("信息已修改,修改后%s号学生的基本信息为:
\n",student_ID);
printf("%s%s%d",student_ID,course,score);
getchar();
}
else
{
printf("没有%s号学生信息\n",student_ID);
}
getchar();
printf("是否继续?
(Y/N)\n");
cho=getchar();
}
while(cho=='y'||cho=='Y');
save();
returnhead_c;
}
voidquery_s()
{
charn;
do
{
charstudent_ID[10];
structstudent*p1;
printf("inputthedate:
student_ID\n");
scanf("%s",student_ID);
p1=head_s;
while((strcmp(p1->student_ID,student_ID)!
=0)&&(p1->next!
=NULL))
{
p1=p1->next;
}
if(strcmp(p1->student_ID,student_ID)==0)
{
printf("%s号学生的基本信息:
%s,%s,%s\n",student_ID,p1->student_ID,p1->name,p1->telephone);
}
else
{
if(strcmp(p1->student_ID,student_ID)!
=0)
{
printf("没有%s号学生的基本信息!
\n",student_ID);
}
}
getchar();
printf("是否继续?
输y继续");
n=getchar();
}
while(n=='y'||n=='Y');
}
voidquery_c()
{
charn;
do
{
charstudent_ID[10];
structcourse*p1;
printf("inputthedate:
student_ID\n");
scanf("%s",student_ID);
p1=head_c;
while((strcmp(p1->student_ID,student_ID)!
=0)&&(p1->next!
=NULL))
{
p1=p1->next;
}
if(strcmp(p1->student_ID,student_ID)==0)
{
printf("%s号学生的成绩:
%s,%s,%d\n",student_ID,p1->student_ID,p1->course_ID,p1->score);
}
else
{
if(strcmp(p1->student_ID,student_ID)!
=0)
{
printf("没有%s号学生的成绩!
\n",student_ID);
}
}
getchar();
printf("是否继续?
输y继续");
n=getchar();
}
while(n=='y'||'Y');
}
voidalter()
{
intcho;
do
{
printf("-------修改学生档案信息--------\n");
printf("1.修改学生基本信息\n2.修改学生成绩信息\n0.退出\n");
printf("\n请选择:
");
scanf("%d",&cho);
switch(cho)
{
case1:
alter_info();break;
case2:
alter_score();break;
case0:
;break;
}
}while(cho!
=0);
}
voiddelet_info()
{
charstudent_ID[10];
charn;
structstudent*p,*p1;
voidsave();
do
{
printf("请输入要删除的学生学号:
");
scanf("%s",student_ID);
p1=p=head_s;
while(strcmp(student_ID,p->student_ID)!
=0&&p->next!
=NULL)
{
p1=p;
p=p->next;
}
if(strcmp(student_ID,p->student_ID)!
=0)
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 档案管理系统