C语言编程课程设计.docx

上传人:b****3 文档编号:26816543 上传时间:2023-06-23 格式:DOCX 页数:17 大小:380.53KB
下载 相关 举报
C语言编程课程设计.docx_第1页
第1页 / 共17页
C语言编程课程设计.docx_第2页
第2页 / 共17页
C语言编程课程设计.docx_第3页
第3页 / 共17页
C语言编程课程设计.docx_第4页
第4页 / 共17页
C语言编程课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言编程课程设计.docx

《C语言编程课程设计.docx》由会员分享,可在线阅读,更多相关《C语言编程课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

C语言编程课程设计.docx

C语言编程课程设计

三江学院

SANJIANGUNIVERSITY

 

综合程序设计与实践

指导书

(2012年6-7月)

题目:

开发一个简单的学籍管理程序

所属学院:

电子信息工程学院

学号:

12010091010

姓名:

刘夫兴

班级:

110091A

指导教师:

杨丽萍老师

综合程序设计与实践

指导书

一.题目:

开发一个简单的学籍管理程序。

二.内容包括:

1.建立一个学生信息单链表

2.输出链表中的学生信息

3.在链表中查找某个学生信息

4.在链表中插入一个学生结点信息

5.在链表中删除一个学生结点

6.退出该管理系统

三.任务

1.设计一个菜单驱动程序(仿照课程设计之一),由老师提供并完成了功能1.—2.。

2.在这个管理系统中加入三个模块,即查找模块、插入模块和删除模块。

使程序能正确运行。

四.提供能使程序能正确运行的源程序清单。

源程序清单,如下:

#include

#include

#include

#include

typedefstructnode

{

intnum;

charname[20];

charsex[8];

charcla[20];

charpro[20];

charadress[10];

structnode*next;

}STD;

#defineLENsizeof(STD)

#defineNEW(STD*)malloc(LEN)

intmenu_select();

STD*head1,*head2;

intn=0;

voidcreat1(void)/*追加法建表*/

{STD*p1,*p2;

system("CLS");

head1=NULL;

p1=(STD*)malloc(LEN);

p2=p1;

printf("建表方法1追加法建表!

\n");

printf("请依次输入:

\n学号姓名性别班级专业籍贯(注:

若输入学号为0,则退出建表!

)\n");

scanf("%d%s%s%s%s%s",&p1->num,p1->name,p1->sex,p1->cla,p1->pro,p1->adress);

while(p1->num!

=0)

{n++;

if(n==1)

head1=p1;

else

p2->next=p1;

p2=p1;

p1=(STD*)malloc(LEN);

scanf("%d%s%s%s%s%s",&p1->num,p1->name,p1->sex,p1->cla,p1->pro,p1->adress);

}

free(p1);p2->next=NULL;

scanf("%*c");

printf("按回车键继续!

\n");

getchar();

system("CLS");

return;

}

voidcreat2(void)/*插入法建表*/

{STD*p1;

head2=NULL;

system("CLS");

p1=(STD*)malloc(LEN);

printf("建表方法2插入法建表!

\n");

printf("请依次输入:

学号姓名性别班级专业籍贯(注:

若输入学号为0,则退出建表!

)\n");

scanf("%d%s%s%s%s%s",&p1->num,p1->name,p1->sex,p1->cla,p1->pro,p1->adress);

while(p1->num!

=0)

{p1->next=head2;

head2=p1;

p1=(STD*)malloc(LEN);

scanf("%d%s%s%s%s%s",&p1->num,p1->name,p1->sex,p1->cla,p1->pro,p1->adress);

}

scanf("%*c");

printf("按回车键继续!

\n");

getchar();

system("CLS");

free(p1);

return;

}

voidsearch(structnode*head,char*x)/*查找函数*/

{STD*p,*q;

if(head==NULL)

printf("Thisisaemptylist.");/*空链表情况*/

else

p=head;

while(strcmp(x,p->name)!

=0&&p->next!

=NULL)

{q=p;

p=p->next;

}/*q指针尾随p指针向表尾移动*/

if(strcmp(x,p->name)==0)

{printf("查询信息:

\t学号:

%d姓名:

%s性别:

%s班级:

%s专业:

%s籍贯:

%s\n",p->num,p->name,p->sex,p->cla,p->pro,p->adress);

}

else

printf("Notfound.");

}

STD*delnode(structnode*head,char*x)/*删除函数*/

{STD*p,*q;

staticstructnode*h;

if(head==NULL)

{printf("Thisisaemptylist.");/*空链表情况*/

returnhead;

}

p=head;

while(strcmp(x,p->name)!

=0&&p->next!

=NULL)

{q=p;p=p->next;}/*q指针尾随p指针向表尾移动*/

if(strcmp(x,p->name)==0)

{if(p==head)

head=p->next;/*删除头结点*/

else

q->next=p->next;/*删除中间或尾结点*/

free(p);/*释放被删除的结点*/

}

else

printf("Notfound.");/*未找到指定的结点*/

h=head;

returnh;

}

STD*insert(structnode*head,structnode*p0,char*x)/*插入函数*/

{STD*p,*q;

staticstructnode*h;

if(head==NULL)

{head=p0;/*空表时,插入结点*/

p0->next=NULL;

}

else

{p=head;

while(strcmp(x,p->name)!

=0&&p->next!

=NULL)

{q=p;p=q->next;}

if(strcmp(x,p->name)==0)

{if(p==head)

head=p0;/*在表头插入结点*/

else

q->next=p0;/*在表中间插入结点*/

p0->next=p;

}

else

{p->next=p0;/*在表尾插入结点*/

p0->next=NULL;

}

}

h=head;

returnh;

}

voidprint(STD*head)/*输出函数*/

{STD*p;

p=head;

while(p!

=NULL)

{printf("学号:

%d姓名:

%s性别:

%s班级:

%s专业:

%s籍贯:

%s\n",p->num,p->name,p->sex,p->cla,p->pro,p->adress);

p=p->next;

}

printf("\n");

printf("链表已空!

\n");

scanf("%*c");

printf("按回车键继续!

\n");

getchar();

system("CLS");

}

voidhandle_menu1()

{inth;

STD*add,*head=NULL;

charname[20];

for(;;)

{

h=menu_select();

switch(h)

{case1:

creat1();/*进入追加法建表*/

head=head1;

break;

case2:

creat2();/*进入插入法建表*/

head=head2;

break;

case3:

printf("追加法建表的学籍信息:

\n");

print(head1);/*进入追加法链表的结果*/

break;

case4:

printf("插入法建表的学籍信息:

\n");

print(head2);/*进入插入法链表的结果*/

break;

case5:

printf("请输入查询姓名:

\t");

scanf("%s",name);

search(head,name);

printf("\n");

break;

case6:

add=NEW;

printf("***输入插入学生的信息***\n");

printf("请您依次输入:

\n学号姓名性别班级专业籍贯\n");

scanf("%d%s%s%s%s%s",&add->num,add->name,add->sex,add->cla,add->pro,add->adress);

add->next=NULL;

printf("***确定插入位置***\n");

printf("在指定学生姓名的信息前插入(注:

如未找到该学生,则默认将信息插入到尾部)\n");

printf("姓名:

\t");

scanf("%s",name);

head=insert(head,add,name);

printf("插入后的学籍信息:

\n");

print(head);

break;

case7:

printf("请您输入要删除学生信息的姓名:

\t");

scanf("%s",name);

head=delnode(head,name);

printf("删除后的学生信息:

\n");

print(head);

break;

case8:

printf("学籍管理系统的信息:

\n");

print(head);

break;

case9:

printf("亲爱的用户,感谢您的使用,再见!

\n");

return;

}

}

}

intmenu_select()/*菜单选择函数*/

{

intcn;

printf("≮≮学籍管理系统≯≯\n");

for(;;)

{

printf("\n****〈*菜单*〉****\n");

printf("\t1.追加法建表\n");

printf("\t2.插入法建表\n");

printf("\t3.输出追加法建表的信息\n");

printf("\t4.输出插入法建表的信息\n");

printf("\t5.查询学生信息\n");

printf("\t6.插入学生信息\n");

printf("\t7.删除学生信息\n");

printf("\t8.输出学籍管理系统的信息\n");

printf("\t9.退出程序\n");

printf("\n");

printf("亲爱的用户,您好!

\n请根据菜单栏,按需要选择菜单1-9:

\t");

scanf("%d",&cn);printf("\n");

if(cn<1||cn>9)

printf("\n\t输入错误,重选1-9:

");

else

break;

}

returncn;

}

voidmain()/*主函数*/

{

handle_menu1();

}

五、调试后使程序能正确运行并应使画面整齐美观。

调试运行并截图如下:

图一~图七(按照菜单栏顺序,逐一调试运行并截图,其中菜单2、4与菜单1、3类似,在此不再重复截图)

图一、菜单1.追加法建表,输入学生信息

图二、菜单3.输出追加法建表结果的学生信息

图三、菜单5.查询学生信息

图四、菜单6.插入学生信息

图五、菜单7.删除学生信息

图六、菜单8.输出现存的学籍管理系统的信息

图七、菜单9.退出程序

 

六.小结(收获体会)

不积跬步、无以至千里

两周的课程设计生活在不知不觉间已经结束了,真是意犹未尽呀!

整整两个多星期的日子里,我沉浸在编程的乐趣里,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

可以说,我对C语言是情有独钟,打心眼里喜欢它。

从去年一年的C语言学习中我也收获了许多快乐,并且在努力学习的情况下,顺利地通过过了全国及江苏省计算机二级考试,这更让我从中找到了自信。

因此,当得知本学期末有C语言课程设计时,当时我心里就乐了。

回顾起此次课程设计,我感慨颇多。

虽然偶尔会遇到一些伤脑筋的问题,但总的来说,这个过程充满了兴奋与喜悦!

首先,兴奋来自于第一次在充分掌握了基本理论知识后,能成功地将其运用到实践中去;而快乐来自于自己掌握了基本实践技能后,还能够帮助其他同学解决困难。

其中,在实训中让我感触最深的就是这么一个道理:

不积跬步,无以至千里!

本次课程设计的题目是:

开发一个简单的学籍管理程序,是由杨老师全程指导的。

我们的进程是按照模块化进行的,有新建链表、查询、删除、插入等模块,每次课堂上,杨老师首先对相关模块的理论知识做一个精讲,然后留给我们充足的时间进行编程调试。

当我们有不懂得地方,杨老师还会不厌其烦的讲解。

通过这种学习方式,我充分理解了理论与实际相结合的重要性,只有理论知识是远远不够的,唯有把所学的理论知识与实践相结合起来,从实践中得出结论,才算是真正的学习与应用。

同时,我也感到了想要学好C语言还有很长一段路要走,要想真正掌握好编程技术一定要付出更多的努力,当然基本的C语言知识一定要学好,而不是只知道皮毛而已。

对于今后的学习我觉得要做好以下几点:

1.加深对课堂讲授内容的理解

课堂上要老师讲授许多关于c语言的语法规则,听起来有点枯燥无味,也不容易记住,死记硬背是不可取的。

课后通过多次上机练习,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定;

2.熟悉程序开发环境

一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行; 

3.学会上机调试程序,学会自己找出问题的关键并解决;

因为程序编写完后,往往会出现许多意想不到的错误,这就要发挥调试的重要作用,学会从调试中找到错误,也是学习的一个重要环节!

最后,我觉得模块化的编程理念充分体现了“不积跬步,无以至千里”的哲理所在,任何一个小模块都对整个程序能否正确运行起决定性作用。

因此,从这两周的课程设计中,我深刻体会到了:

不论是编程还是做其它事情,我们都需要一定的耐心,从基本做起,一步一脚印踏实地走好每一步,只有这样才能走向成功大道。

在此,衷心地感谢杨老师在这两周给予我们的帮助,让我能在程序设计过程中走的更快、更远!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1