昆明理工大学 程序设计语言课程设计.docx

上传人:b****5 文档编号:2913461 上传时间:2022-11-16 格式:DOCX 页数:42 大小:945.30KB
下载 相关 举报
昆明理工大学 程序设计语言课程设计.docx_第1页
第1页 / 共42页
昆明理工大学 程序设计语言课程设计.docx_第2页
第2页 / 共42页
昆明理工大学 程序设计语言课程设计.docx_第3页
第3页 / 共42页
昆明理工大学 程序设计语言课程设计.docx_第4页
第4页 / 共42页
昆明理工大学 程序设计语言课程设计.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

昆明理工大学 程序设计语言课程设计.docx

《昆明理工大学 程序设计语言课程设计.docx》由会员分享,可在线阅读,更多相关《昆明理工大学 程序设计语言课程设计.docx(42页珍藏版)》请在冰豆网上搜索。

昆明理工大学 程序设计语言课程设计.docx

昆明理工大学程序设计语言课程设计

课程设计

课程名称:

程序设计语言课程设计

设计题目:

万年历的设计

通讯录的设计

学院:

信息工程与自动化学院

专业:

计算机科学与技术

年级:

2012级

学生姓名:

邹华宇(201210405204)

*********************************

日期:

2013年7月9日

教务处制

1、课程设计目的和要求………………………………………………1

1.1课程设计的目的………………………………………………1

1.2课程设计的要求………………………………………………1

2、课程设计的内容……………………………………………………2

2.1基础程序设计…………………………………………………2

2.2万年历的设计…………………………………………………2

2.3通讯录的设计…………………………………………………2

3、解决问题的思路和方法……………………………………………4

3.1基础程序设计思路……………………………………………4

3.2万年历的设计思路……………………………………………4

3.3通讯录的设计思路……………………………………………7

4、程序实现………………………………………………………………9

4.1基础程序设计源代码…………………………………………9

4.2万年历的程序源代码………………………………………12

4.3通讯录的程序源代码………………………………………16

5、结果展示和程序分析………………………………………………23

5.1基础程序的运行结果及分析………………………………23

5.2万年历的运行结果及分析…………………………………25

5.3通讯录的运行结果及分析…………………………………29

6、总结与体会…………………………………………………………34

1、课程设计目的和要求

1.1课程设计的目的:

(1)复习、巩固C语言的基础知识,掌握C语言的编程技巧和上机调试程序的方法,进一步加深对C语言的理解和掌握。

(2)为学生提供了一个既动手又动脑,独立实践的机会,掌握通过程序设计语言解决实际问题的方法、步骤,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。

提高学生适应实际,实践编程的能力。

(3)培养学生在项目开发中团队合作精神、创新意识及能力。

1.2课程设计的要求:

(1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;

(2)系统设计要实用,编程简练,可用,功能全面

(3)说明书、流程图要清楚

(4)记录设计情况(备查,也为编写设计说明书作好准备);

(5)要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。

(6)设计上交内容:

设计报告一份(按格式书写);源程序盘一张(能编译成可执行文件并能正常运行,可一个班交一张光盘)。

2、课程设计的内容

2.1基础程序设计

本设计部分主要完成与链表操作相关的基本运算,其中包含:

链表的建立、链表的输出、链表的插入、链表的删除等运算。

2.2万年历的设计:

要求:

  模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。

当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。

当系统日期变到下一月时,系统自动翻页到下一月。

2.3通讯录设计

制作一个通讯录程序,该程序具有查找、添加、修改、删除功能。

通讯录包括:

姓名,电话,街道,城市,省,邮编等。

模块设计参考:

   第一个模块——主函数main()的功能是:

根据选单的选项调用各函数,并完成相应的功能。

  第二个模块——Menu()的功能是:

显示英文提示选单。

   第三个模块——Quit()的功能是:

退出选单。

   第四个模块——Create()的功能是:

创建新的通讯录。

   第五个模块——Add()的功能是:

在通讯录的末尾,写入新的信息,并返回选单。

   第六个模块——Find()的功能是:

查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。

   第七个模块——Alter()的功能是:

修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

   第八个模块——Delete()的功能是:

删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。

   第九个模块——List()的功能是:

显示通讯录中的所有记录。

 

3、解决问题的思路和方法

3.1基础程序设计思路

用尾插法完成新建链表,反复调用menu()函数使用菜单,调用各个子函数实现对链表的初始化,删除,输出等操作。

3.2万年历的程序流程图:

主要程序流程图:

具体对于月份和年份的程序图如下:

上图为计算星期方法上图为打印日历程序图

3.3通讯录的设计流程图:

程序结构:

4、程序实现:

4.1基础程序设计的源代码:

#include

#include

typedefstructnode

{

chardata;

structnode*next;

}Node,*linklist;

linklistH;

voidprint(linklistL)

{

Node*a;

a=L->next;

while(a!

=NULL)

{

printf("%c->",a->data);

a=a->next;}

printf("\n");

}

linklistCreateFromTail()

{

linklistL;

Node*s,*r;

charc;

intflag=1;

L=(linklist)malloc(sizeof(Node));

L->next=NULL;

r=L;

while(flag)

{

c=getchar();

if(c!

='$')

{

s=(Node*)malloc(sizeof(Node));

s->data=c;

r->next=s;

r=s;

}

else

{

flag=0;

r->next=NULL;

}

}

returnL;

}

intDelList(linklistL,inti)

{

Node*p,*r;

intk;

p=L;

k=0;

printf("未删除时的链表");

print(L);

while(p->next!

=NULL&&k

{

p=p->next;

k=k+1;

}

if(k!

=i-1)

{

printf("删除节点的位置i不合理!

");

return0;

}

r=p->next;

p->next=p->next->next;

free(r);

return1;

}

intInsList(linklistL,inti,chare)

{

Node*p,*s;

intk;

p=L;

k=0;

printf("未插入时的链表:

");

print(L);

printf("\n");

while(p!

=NULL&&k

{

p=p->next;

k=k+1;

}

if(k!

=i-1)

{

printf("插入节点的位置i不合理!

");

return0;

}

s=(Node*)malloc(sizeof(Node));

s->data=e;

s->next=p->next;

p->next=s;

return1;

}

voidmenu()

{

charch,e;

inti,j;

do

{

printf("\t\t######################\n");

printf("\t\t1.初始化链表\n");

printf("\t\t2.插入链表\n");

printf("\t\t3.删除链表\n");

printf("\t\t4.输出链表\n");

printf("\t\t5.退出系统\n");

printf("\t\t######################\n");

printf("请输入1-5的数据\n");

scanf("\n%2c",&ch);}

while(ch>'5'||ch<'1');

switch(ch)

{

case'1':

H=CreateFromTail();

print(H);

break;

case'2':

scanf("%d_%c",&i,&e);

InsList(H,i,e);

printf("插入后的链表:

");

print(H);

break;

case'3':

scanf("%d",&j);

DelList(H,j);

printf("删除后的链表");

print(H);

break;

case'4':

printf("输出链表为");

print(H);

break;

case'5':

exit(0);

}

}

voidmain()

{

do

{

menu();

}

while

(1);

}

4.2万年历的设计的程序源代码:

#include

#include

#include

voidf()

{

intday,month,year,sum,leap,S;

printf("\n请输入年月日\n");

scanf("%d%d%d",&year,&month,&day);

while

(1)

{

if((month>12||month<1)||(day>31||day<1))

{

printf("输入错误,重新输入");

scanf("%d%d%d",&year,&month,&day);

}

elsebreak;

}

switch(month)

{

case1:

sum=0;break;

case2:

sum=31;break;

case3:

sum=59;break;

case4:

sum=90;break;

case5:

sum=120;break;

case6:

sum=151;break;

case7:

sum=181;break;

case8:

sum=212;break;

case9:

sum=243;break;

case10:

sum=273;break;

case11:

sum=304;break;

case12:

sum=334;break;

default:

printf("dataerror");break;

}

sum=sum+day;

if(year%400==0||(year%4==0&&year%100!

=0))

leap=1;

elseleap=0;

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

当前位置:首页 > 表格模板 > 调查报告

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

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