C语言源代码.docx
- 文档编号:25394867
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:15
- 大小:16.32KB
C语言源代码.docx
《C语言源代码.docx》由会员分享,可在线阅读,更多相关《C语言源代码.docx(15页珍藏版)》请在冰豆网上搜索。
C语言源代码
源文件
#include
#include
#include
#include
#defineNULL0
#defineLENsizeof(structstudent)
structstudent
{charname[20];
longintnum;
intEnglish[4];
intMath;
intcom[30];
intave;
structstudent*next;
};//定义一个结构题
intTOTAL_NUM=0;//学生总数
structstudent*head=NULL;
voidwelcome();//欢迎界面
voidmainmenu();//主界面
voidrecord();//记录数据
voidinsert(structstudent*stu);//插入数据
voiddisplay(structstudent*stu);//显示一个学生的信息
voiddisplayAll();//显示所有学生的信息
voidquery_by_num();//按学号查询学生信息
voidreadData();//读取文件里学生的信息
voidwriteData();//向文件写入学生信息
voidfreeAll();//清空链表内容
voiddel();//删除学生信息
voidchange();//更改学生信息
voiddevise(structstudent*p);//选择更改内容
intmain(void)
{welcome();
//显示主菜单
mainmenu();
return0;
}
//显示欢迎信息
voidwelcome()
{
printf("+----------------------------------------------------+\n");
printf("||\n");
printf("|欢迎使用计算机科学与技术2班学生信息管理系统|\n");
printf("||\n");
printf("+----------------------------------------------------+\n");
}
//系统主菜单
voidmainmenu()
{intchoice;
choice=-1;
readData();
printf("\n温馨提示:
为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
do
{
printf("\n\n\n");
printf("\t\t\t--------------------------------------------\n");
printf("\t\t\t+计算机科学与技术2班学生信息管理系统|\n");
printf("\t\t\t--------------------------------------------\n");
printf("\t\t\t+[1]----录入学生信息|\n");
printf("\t\t\t+[2]----浏览学生信息|\n");
printf("\t\t\t+[3]----查询学生信息|\n");
printf("\t\t\t+[4]----删除学生信息|\n");
printf("\t\t\t+[5]----修改学生信息|\n");
printf("\t\t\t+[0]----退出系统|\n");
printf("\t\t\t+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|\n");
printf("\t\t\t--------------------------------------------\n");
printf("请输入您的选择:
");
scanf("%d",&choice);
switch(choice)
{
case0:
writeData();
freeAll();
exit(0);
case1:
record();
break;
case2:
displayAll();
break;
case3:
query_by_num();
break;
case4:
del();
break;
case5:
change();
break;
default:
printf("\n无效选项!
");
break;
}
}
while(choice!
=0);
}
//录入学生信息
voidrecord()
{structstudent*p0;
p0=(structstudent*)malloc(LEN);
printf("请输入学生的姓名:
");
scanf("%s",p0->name);
printf("请输入学生的学号:
");
scanf("%ld",&p0->num);
printf("请输入学生的英语分数:
");
scanf("%ld",p0->English);
printf("请输入学生的数学分数:
");
scanf("%d",&p0->Math);
printf("请输入学生的计算机分数:
");
scanf("%ld",p0->com);
printf("请输入学生的平均分:
");
scanf("%ld",&p0->ave);
insert(p0);
printf("该学生的信息为:
\n");
printf("-------------------------------------------------------------------------------\n");
printf("姓名\t学号\t\t英语分数\t数学分数\t计算机分数\t\t平均分\n");
display(p0);
}
voidinsert(structstudent*stu)
{
structstudent*p0,*p1,*p2;
p1=head;
p0=stu;
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
else
{
while((p0->num>p1->num)&&(p1->next!
=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(head==p1)
head=p0;
else
p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
TOTAL_NUM++;
}
voiddisplay(structstudent*p)
{
printf("%s\t%ld\t%d\t%ld\t%ld\t\t%ld\n",p->name,p->num,p->English,p->Math,p->com,p->ave);
}
//浏览学生信息
voiddisplayAll()
{
structstudent*p;
printf("学生总数:
%d\n",TOTAL_NUM);
p=head;
if(head!
=NULL)
{
printf("\n姓名\t学号\t\t英语分数\t数学分数\t计算机分数\t\t平均分\n");
printf("-------------------------------------------------------------------------------\n");
do
{
display(p);
p=p->next;
}
while(p!
=NULL);
}
printf("\n");
}
//按学号查询学生信息
voidquery_by_num()
{
intnum;
structstudent*p1;
printf("请输入学生的学号:
");
scanf("%ld",&num);
if(head==NULL)
{
printf("无学生记录!
\n");
return;
}
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
p1=p1->next;
if(num==p1->num)
{
printf("姓名\t学号\t\t英语分数\t数学分数\t计算机分数\t\t平均分\n");
printf("-------------------------------------------------------------------------------\n");
display(p1);
}
else
printf("没有该学生记录,请核对!
");
}
//写入文件
voidwriteData()
{
FILE*fp;//文件指针
structstudent*p;
fp=fopen("1.txt","w");
if(!
fp)
{
printf("文件打开错误!
");
return;
}
fprintf(fp,"%d\n",TOTAL_NUM);
for(p=head;p!
=NULL;p=p->next)
{
fprintf(fp,"%s\t%ld\t%ld\t%d\t%ld\t%ld\n",p->name,p->num,p->English,p->Math,p->com,p->ave);
}
fclose(fp);
}
voidfreeAll()
{
structstudent*p1,*p2;
p1=p2=head;
while(p1)
{
p2=p1->next;
free(p1);
p1=p2;
}
}
//读取文件
voidreadData()
{
FILE*fp;//文件指针
structstudent*p1,*p2;
fp=fopen("1.txt","r");
if(!
fp)
{
printf("文件打开错误!
");
return;
}
fscanf(fp,"%d\n",&TOTAL_NUM);
head=p1=p2=(structstudent*)malloc(LEN);
fscanf(fp,"%s\t%ld\t%ld\t%d\t%ld\t%ld\n",p1->name,&p1->num,p1->English,&p1->Math,p1->com,&p1->ave);
while(!
feof(fp))
{
p1=(structstudent*)malloc(LEN);
fscanf(fp,"%s\t%ld\t%ld\t%d\t%ld\t%ld\n",p1->name,&p1->num,p1->English,&p1->Math,p1->com,&p1->ave);
p2->next=p1;
p2=p1;
}
p2->next=NULL;
fclose(fp);
}
//删除学生信息
voiddel()
{
structstudent*p1,*p2;
longintnum;
if(head==NULL)
{
printf("无学生记录!
\n");
return;
}
printf("请输入您要删除的学生的学号:
");
scanf("%ld",&num);
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(p1==head)
head=p1->next;
elsep2->next=p1->next;
free(p1);
TOTAL_NUM--;
}
else
printf("没有该学生记录,请核对!
\n");
}
//修改学生信息
voidchange()
{
structstudent*p1,*p2;
longintnum;
if(head==NULL)
{
printf("无学生记录!
\n");
return;
}
printf("请输入您要修改的学生的学号:
");
scanf("%ld",&num);
p1=head;
while(num!
=p1->num&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
devise(p1);
else
printf("没有该学生记录,请核对!
\n");
}
voiddevise(structstudent*p)
{
intchoice;
choice=-1;
do
{
printf("请选择您要修改的学生的信息内容:
\n");
printf("+----------------------+\n");
printf("|姓名请按1|\n");
printf("|学号请按2|\n");
printf("|英语分数请按3|\n");
printf("|数学分数请按4|\n");
printf("|计算机分数请按5|\n");
printf("|平均分请按6|\n");
printf("|取消请按0|\n");
printf("+----------------------+\n");
printf("请输入您的选择:
");
scanf("%d",&choice);
switch(choice)
{
case0:
return;
case1:
printf("请输入新姓名:
");
scanf("%s",p->name);
break;
case2:
printf("请输入新学号:
");
scanf("%d",&p->num);
break;
case3:
printf("请输入新英语分数:
");
scanf("%s",p->English);
break;
case4:
printf("请输入新数学分数:
");
scanf("%s",&p->Math);
break;
case5:
printf("请输入新计算机分数:
");
scanf("%s",p->com);
break;
case6:
printf("请输入新平均分:
");
scanf("%lf",&p->ave);
break;
default:
printf("\n无效选项!
");
break;
}
}
while(choice!
=0);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)