
这是本人基本学完C语言时做的一个课程设计,希望能够帮到大家(设计要求如上图片)。
怎么说呢?这个也是我第一次写课程设计,准确来说,对于第一次确实时有难度的。
现在我要分享我写这个课程设计的一些心得分享给大家。
第一步:首先我们一拿到需求,肯定是要先想好这个题目的一些需求思路,并且做出一个思维导图肯定是更好的。
其实做出了思维导图,我们只需要按着一个一个的需求来写相关代码,就不会觉得难度那么大了。这也算是用到了大化小的一个逻辑思维了(我记得这个方法好像是有个名字的,但是我现在不太记得了)。
话不多说,我们直接上思维导图:

现在我们已经有思维导图了,那么直接不用多说了(其实我感觉算是思路还是比较清晰的哈)。
我们现在需要做的第一步,那就是学生的基本信息的录入。
那么这个时候,我们有面临的问题就是:如何存储学生的基本信息
我们有两种选择:一种是利用结构体数组,另外一种就是用链表(链表相对于数组来说是难度较大的)。
这里我做的时候,是选择了用链表,因为考虑到我们后面还有删除,修改的操作,用数组来说,这里的操作就不如链表便捷了。
第二步:那就是写代码啦!
①.我们直接上代码:(这一段代码我们是对学生信息的基本录入)
struct Student* pEnd, *pNew;
struct Student* pHead=NULL;
int iCount;//全局变量来表示链表长度
struct Student* Create()//我们创建一个链表,来录入信息
{
/*struct Student* pHead=NULL;//初始化链表头指针为空
struct Student* pEnd, *pNew;*/
iCount=0;//初始化链表长度;
pEnd=pNew=(struct Student*)malloc(sizeof(struct Student));
// printf("请输入学生信息:\n");
scanf("%ld", &pNew->num);
scanf("%s", &pNew->name);
scanf("%s", &pNew->sex);
scanf("%d", &pNew->birthday.year);
scanf("%d", &pNew->birthday.month);
scanf("%d", &pNew->birthday.day);
scanf("%s", &pNew->bz);
while(1/*pNew->num!=0*/)//如果学号为零,就停止输入;
{
iCount++;//iCount自增,表示链表中节点增加,同时也表示,学生的人数;
if(iCount==1)
{
pNew->pNext=pHead;//使得头指针为空;
pEnd=pNew;//跟踪加入新的节点 ;
pHead=pNew;//头指针指向首节点 ;
}
else
{
pNew->pNext=NULL;//新节点的指针头为空
pEnd->pNext=pNew;//原来的尾节点指向新的节点
pEnd=pNew; //pEnd指向新的节点
}
pNew=(struct Student*)malloc(sizeof(struct Student));//在此分配节点内存空间
scanf("%ld", &pNew->num);
scanf("%s", &pNew->name);
scanf("%s", &pNew->sex);
scanf("%d", &pNew->birthday.year);
s

1654

被折叠的 条评论
为什么被折叠?



