if(p1->grades[j]>p1->grades[j+1])
{
t=p1->grades[j];
p1->grades[j]=p1->grades[j+1];
p1->grades[j+1]=t;
}
p1->ave=(p1->ave-(p1->grades[0]+p1->grades[9]))/8;//去掉一个最高分,去掉一个这一低分,得出最后的平均分
2、文件操作
包括了文件的写入和读取两个方面。
运用指针程序文件的写入操作,用于保存录入的数据,也用于保存所修改的数据。
例如下段程序。
voidsave()//将数据保存到文件
{
FILE*fp;
S_MESSAGE*p1;//=(S_MESSAGE*)malloc(LEN);
p1=head;
fp=fopen("参赛选手名单.txt","w");
fprintf(fp,"--------|--------\n");
fprintf(fp,"编号|姓名\n");
while(p1!
=NULL)
{
fprintf(fp,"--------|--------\n");
fprintf(fp,"%-9d%-6s\n",p1->num,p1->name);
p1=p1->next;
}
fprintf(fp,"--------|--------\n");
fclose(fp);
printf("\n\t文件已将保存到\"参赛选手名单.txt\"");
}
3、关于删除算法
实现从系统中删除某位同学的相关信息的算法稍微复杂一些,其实质是对数组某个或某些元素的删除操作。
对数组元素的删除操作完成后,再将数组写入到文件中,就完整地实现了“删除”。
voiddel()
{
S_MESSAGE*node;//=(S_MESSAGE*)malloc(LEN);
S_MESSAGE*p1;
intcheck=0;//用来进行判断,是否找到了要删除的信息
longdel_num;
printf("\n请输入要删除的选手的编号:
");
scanf("%d",&del_num);
if(head==NULL&&tail==NULL)
{
printf("\n当前信息记录为空,删除失败!
\n");
}
else
{
node=head;
p1=head;
while(node!
=NULL)
{
if(node->num==del_num)
{
printf("\n--------要删除的选手信息--------\n");
printf("--------|--------\n");
printf("编号|姓名\n");
printf("--------|--------\n");
printf("%-9d%-6s\n",node->num,node->name);//在这里找到了要删除的选手信息
printf("--------|--------\n");
check=1;//找到要删除的信息,赋为真
if(node==head&&head->next==NULL)//是头结点,并且只有一个结点
{
head=NULL;
tail=head;
free(node);
printf("\n--------删除信息成功--------\n");//删除唯一的节点
}
elseif(node==head&&head->next!
=NULL)//删除头节点
{
node=head;
head=head->next;
free(node);
printf("\n--------删除信息成功--------\n");//头节点删除成功
n=n-1;
}
elseif(node->next!
=NULL)//删除中间节点
{
p1->next=node->next;
free(node);
printf("\n--------删除信息成功--------\n");//中间节点删除成功
n=n-1;
}
elseif(node->next==NULL)//删除尾节点
{
p1->next=NULL;
tail=p1;
free(node);
printf("\n--------删除信息成功--------\n");//尾节点删除成功
n=n-1;
}
getchar();
return;
}
else
{
p1=node;
node=node->next;
}
}
}
if(head!
=NULL&&check==0)
{
printf("\n对不起,你要删除的选手信息不存在!
\n");
}
getchar();
五、个人总结
自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在谢老师的辛勤指导下,终于游逆而解。
对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
六、参考文献
(参考的书籍或互联网资源)
[1]谭浩强.C程序设计.北京:
清华大学出版社,2005
[2]网络资源加密程序
七、源程序
/*密码:
123456只有密码输入正确,才能进入plus程序.*/
#include
#include
#include
#include
#include
#defineLENsizeof(S_MESSAGE)
#defineN7
typedefstructsonger//定义选手信息链表结构
{
longnum;//选手编号
charname[20];//选手姓名
floatgrades[N];//选手成绩
doubleave;//平均成绩
structsonger*next;//链表的结点,next是指针变量,指向结构体变量
}S_MESSAGE;
S_MESSAGE*head;//定义链表的头指针