c语言成绩管理系统源代码+流程图.docx
- 文档编号:24758265
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:16
- 大小:103.47KB
c语言成绩管理系统源代码+流程图.docx
《c语言成绩管理系统源代码+流程图.docx》由会员分享,可在线阅读,更多相关《c语言成绩管理系统源代码+流程图.docx(16页珍藏版)》请在冰豆网上搜索。
c语言成绩管理系统源代码+流程图
#include
#include
#include
voidfrist_print()
{
printf("\t\t********************************\n\n");//欢迎信息
printf("\t\t\t欢迎进入学生成绩系统\n");
printf("\t\t\t\t\t\t\t\t此程序合作完成由");
printf("\n\t\t\t\t\t\t\t\t****\n");
printf("\t\t\t\t\t\t\t\t****\n");
printf("\t\t\t\t\t\t\t\t***\n");
printf("\t\t\t\t\t\t\t\t*王杨*\n");
printf("\t\t\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t\t\t*李淼鑫*\n");
printf("\t\t\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t\t\t*孙天顺*\n");
printf("\t\t\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t\t\t*\n");
}
//***********************************************************************************************************************************************************************************
voidmenu()
{
printf("\n\t\t***********************************\n");//管理菜单
printf("\n\t\t==========1.录入学生成绩===========\n\t\t+\n");
printf("\t\t==========2.显示学生成绩===========\n\t\t+\n");
printf("\t\t==========3.查询学生成绩===========\n\t\t+\n");
printf("\t\t==========4.添加学生成绩===========\n\t\t+\n");
printf("\t\t==========5.修改学生成绩===========\n\t\t+\n");
printf("\t\t==========6.删除学生成绩===========\n\t\t+\n");
printf("\t\t==========7.清空页面===========\n\t\t+\n");
printf("\t\t==========8.退出系统===========\n");
printf("\n\t\t***********************************\n");
printf("pleasechoise1--8:
\t");
putchar(10);
}
//***********************************************************************************************************************************************************************************
structMM//结构体定义变量
{
charnum[20];
charname[10];
floatsco,sco2,sco3,sco4;
intmany;
}mm;
//***********************************************************************************************************************************************************************************
voidscanf_1()//第一次输入信息并保存在文件中
{
charch;
FILE*fp;
if((fp=fopen("dd.dat","wb+"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
do
{
printf("请输入学生的--编号:
\t");
getchar();
gets(mm.num);
printf("姓名:
\t");
gets(mm.name);
printf("总成绩:
\t");
scanf("%f",&mm.sco);
printf("平时成绩:
\t");
scanf("%f",&mm.sco2);
printf("作业成绩:
\t");
scanf("%f",&mm.sco3);
printf("考试成绩:
\t");
scanf("%f",&mm.sco4);
printf("学号:
\t");
scanf("%d",&mm.many);
if(fwrite(&mm,sizeof(structMM),1,fp)!
=1)
{
printf("filewriteerror\n");
exit(0);
}
printf("是否继续输入yorn?
\t");
getchar();
ch=getchar();
}while(ch=='y'||ch=='Y');
fclose(fp);
}
//***********************************************************************************************************************************************************************************
voidfind()//查询成绩的信息
{inta,b=0;
charch[20];
FILE*fp;
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
printf("请输入要查询的成绩的方式\n\t1.编号2.姓名:
\n\t请选择1or2\t");
scanf("%d",&a);
if(a==1)
{getchar();
printf("请输入学生的编号:
\t");
gets(ch);
while(fread(&mm,sizeof(structMM),1,fp)==1)
if(strcmp(mm.num,ch)==0)
{
b++;
printf("编号\t姓名\t成绩\t\t学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.sco,mm.many);
}
if(b==0)printf("对不起!
没有找到相关信息:
\n");
}
elseif(a==2)
{printf("请输入学生的姓名:
\t");
getchar();
gets(ch);
while(fread(&mm,sizeof(structMM),1,fp)==1)
if(strcmp(mm.name,ch)==0)
{
b++;
printf("编号\t姓名\t成绩\t\t学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.sco,mm.many);
}
if(b==0)printf("inputerror!
\n");
}
fclose(fp);
}
//***********************************************************************************************************************************************************************************
voidscanf_2()//第二次输入信息并保存在文件中
{
charch;
FILE*fp;
if((fp=fopen("dd.dat","ab"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
do
{
printf("请输入要添加成绩的--编号:
\t");
getchar();
gets(mm.num);
printf("姓名:
\t");
gets(mm.name);
printf("成绩:
\t");
scanf("%f",&mm.sco);
printf("学号:
\t");
scanf("%d",&mm.many);
if(fwrite(&mm,sizeof(structMM),1,fp)!
=1)
{
printf("filewriteerror\n");
exit(0);
}
printf("是否继续输入yorn?
\t");
getchar();
ch=getchar();
}while(ch=='y'||ch=='Y');
fclose(fp);
}
//***********************************************************************************************************************************************************************************
voidprint()//输出文档中的信息
{
FILE*fp;
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
printf("编号\t姓名\t成绩\t\t学号\n");
while(fread(&mm,sizeof(structMM),1,fp)==1)
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.sco,mm.many);
fclose(fp);
}
//***********************************************************************************************************************************************************************************
voidchange()
{//修改信息的函数,定义另一个文件,把要修改的信息放到该文件中
structXX//然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名
{//把原来的文件移除;
charnum[20];
charname[10];
floatsco;
intmany;
}xx;
FILE*fp2;
inta,b=0,c=0,n=0;
charch[20],ck;
FILE*fp;
do{
if((fp=fopen("dd.dat","rb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
if((fp2=fopen("temp.dat","wb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
printf("请输入要修改成绩的编号:
\t");
scanf("%s",ch);
n++;
while(fread(&mm,sizeof(structMM),1,fp)==1)
{
if((strcmp(mm.num,ch)==0))
{
b++;//b的值如果一直没有改变说明,没有找到相关的信息;
printf("编号\t姓名\t成绩\t\t学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.sco,mm.many);
getchar();
printf("请输入成绩的新编号:
\t");
gets(xx.num);
printf("请输入成绩的新姓名:
\t");
gets(xx.name);
printf("请输入成绩的新成绩:
\t");
scanf("%f",&xx.sco);
printf("请输入成绩新学号:
\t");
scanf("%d",&xx.many);
getchar();
fwrite(&xx,sizeof(structXX),1,fp2);
}
if(strcmp(mm.num,ch)!
=0)
fwrite(&mm,sizeof(structMM),1,fp2);
}
if(b==0)
{
printf("\t没有找到相关信息!
\n");
getchar();
}
rewind(fp);//如果要继续修改的话,要把标记返回到文件的开头;
printf("是否继续修改?
enter'y'or'n'\t");
ck=getchar();
fclose(fp);
fclose(fp2);
remove("dd.dat");
rename("temp.dat","dd.dat");
}while(ck=='y'||ck=='Y');
if(b!
=0)//如果没有找到相关信息就不能输出
printf("\t修改成功:
\n");
}
//***********************************************************************************************************************************************************************************
voiddel()
{//删除函数(和修改很相似)
FILE*fp2;
inta,b=0,c=0,n=0;
charch[20],ck;
FILE*fp;
do{
if((fp=fopen("dd.dat","rb"))==NULL)//判断以读二进制的方式打开文件dd.dat,文件句柄保存到fp,fp是否为空如果为空,就是打开文件失败,否则打开文件成功
{
printf("cannotopenfile\n");
exit(0);
}
if((fp2=fopen("temp.dat","wb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
printf("请输入要删除成绩的编号:
\t");
scanf("%s",ch);
n++;
while(fread(&mm,sizeof(structMM),1,fp)==1)//fread()成功的返回值就是参数里读取的数据块个数,这里就是1;sizeof中是每一项的长度,
{
if((strcmp(mm.num,ch)==0))//设这两个字符串为str1,str2,若str1==str2,则返回零;若str1
{
b++;//b的值如果一直没有改变说明,没有找到相关的信息;
printf("编号\t姓名\t成绩\t\t学号\n");
printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.sco,mm.many);
}
elseif(strcmp(mm.num,ch)!
=0)
fwrite(&mm,sizeof(structMM),1,fp2);//是向fp2指向的文件中写m中的内容,sizeof中是每一项的长度,后面的1是指写1个长度
}
if(b==0)
{
printf("\t没有找到相关信息!
\n");
getchar();
}
rewind(fp);
getchar();
getchar();
printf("删除成功!
");
getchar();//如果要继续修改的话,要把标记返回到文件的开头;
printf("是否继续删除?
enter'y'or'n'\t");
ck=getchar();
fclose(fp);
fclose(fp2);
remove("dd.dat");
rename("temp.dat","dd.dat");
}while(ck=='y'||ck=='Y');
if(b!
=0)//如果没有找到相关信息就不能输出
printf("\t保存成功:
\n");
}
//**************************************************************************************************************************************************************************************************
voidmyexit()
{
inta;
charch;
printf("\t是否确定退出?
请选择yorn:
");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')exit(0);
else
menu();
}
//***********************************************************************************************************************************************************************************
intmain()
{
inta;
frist_print();
menu();
while
(1)
{
scanf("%d",&a);
if(a==1)
scanf_1();
elseif(a==2)
print();
elseif(a==3)
find();
elseif(a==4)
scanf_2();
elseif(a==5)
change();
elseif(a==6)
del();
elseif(a==7)
system("cls");
elseif(a==8)
myexit();
elseprintf("输入错误!
!
!
请重新输入:
\t");
printf("\t按任意键继续!
\n");
getchar();
menu();
}
getchar();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 成绩管理系统 源代码 流程图