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

上传人:b****2 文档编号:18452148 上传时间:2023-08-18 格式:DOCX 页数:47 大小:956.97KB
下载 相关 举报
昆明理工大学程序设计语言课程设计.docx_第1页
第1页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第2页
第2页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第3页
第3页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第4页
第4页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第5页
第5页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第6页
第6页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第7页
第7页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第8页
第8页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第9页
第9页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第10页
第10页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第11页
第11页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第12页
第12页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第13页
第13页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第14页
第14页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第15页
第15页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第16页
第16页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第17页
第17页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第18页
第18页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第19页
第19页 / 共47页
昆明理工大学程序设计语言课程设计.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

昆明理工大学程序设计语言课程设计.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万年历的程序流程图:

主要程序流程图:

Memu-slect()=1

Printf(“输入年月日计算星期”)

开始

Memu-slect()=2

Memu-slect()=3

Memu-slect()=4

Printf(“输入年月日计算星期”)

Printf(“输入年月日计算星期”)

Printf(“输入年月日计算星期”)

结束

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

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

3.3通讯录的设计流程图:

程序结构:

通讯录菜单

初始化信息

查找通讯人

更新通讯人

添加通讯人

删除通讯人

打印通讯录

退出

通讯录

在尾部添加此人信息

开始

添加人信息

添加结束

调用print函数显示通讯录

开始

选择6

显示结束

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;

if(leap==1&&month>2)

sum++;

S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7;

switch(S)

{

case1:

printf("星期一\n");break;

case2:

printf("星期二\n");break;

case3:

printf("星期三\n");break;

case4:

printf("星期四\n");break;

case5:

printf("星期五\n");break;

case6:

printf("星期六\n");break;

case0:

printf("星期日\n");break;

}

}

voidg()

{inti,j=1,k=1,a,b,month,year;

printf("\n输入年月:

\n");

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

while

(1)

{

if(month>12||month<1)

{

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

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

}

elsebreak;

}

b=days_month(month,year);

a=firstday(month,year);

printf("*************************************\n");

printf("SunMonTueWedThuFriSat\n");

if(a==7)

{for(i=1;i<=b;i++)

{printf("%4d",i);

if(i%7==0)

{printf("\n");

}

}

}

if(a!

=7)

{while(j<=4*a)

{printf("");

j++;

}

for(i=1;i<=b;i++)

{printf("%4d",i);

if(i==7*k-a)

{printf("\n");

k++;

}

}

}

printf("\n*************************************\n");

printf("\n");}

intleap(intyear)

{if(year%4==0&&year%100!

=0||year%400==0)

return1;

elsereturn0;

}

intdays_month(intmonth,intyear)

{

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

return31;

if(month==4||month==6||month==9||month==11)

return30;

if(month==2&&leap(year)==1)return29;

elsereturn28;

}

intfirstday(intmonth,intyear)

{intW;

W=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;

returnW;

}

voidh()

{inti,j=1,k=1,a,b,month,year,g;

printf("\n输入任意年:

\n");

scanf("%d",&year);

for(g=0;g<=11;g++)

{

month=g+1;

b=days_month(month,year);

a=firstday(month,year);

printf("%d月\n",month);

printf("*************************************\n");

printf("SunMonTueWedThuFriSat\n");

if(a==7)

{for(i=1;i<=b;i++)

{printf("%4d",i);

if(i%7==0)

{printf("\n");

}

}

}

j=1;

k=1;

if(a!

=7)

{while(j<=4*a)

{printf("");

j++;

}

for(i=1;i<=b;i++)

{printf("%4d",i);

if(i==7*k-a)

{printf("\n");

k++;

}

}

}

printf("\n*************************************\n");

printf("\n");

}

}

voidmain()

{

for(;;){

switch(menu_select()){

case1:

printf("输入年月日计算星期几\n");f();

break;

case2:

printf("打印任意日历\n");g();

break;

case3:

printf("打印任意年历\n");h();

break;

case4:

printf("谢谢使用!

\n");

exit(0);

}

}

}

intmenu_select()

{

charS;

intcn;

printf("1.输入年月日计算星期几\n");

printf("2.打印任意月历\n");

printf("3.打印任意年历\n");

printf("4.谢谢使用!

\n");

printf("input1-4:

\n");

do{

S=getchar();

cn=(int)S-48;

}while(cn<0||cn>6);

returncn;

}

4.3通讯录的程序源代码:

#include

#include

#include

typedefstructnode

{

charname[20];

chartelephone[20];

charstreet[20];

charcity[20];

charprovince[20];

charpostnumber[20];

structnode*next;

}Node,*linklist;

linklistH;

voidprint(linklistL)

{

Node*a;

a=L->next;

while(a!

=NULL)

{

printf("----------------------------------------------------------------------\n");/*格式*/

printf("姓名电话街道城市省邮政编码\n");

printf("----------------------------------------------------------------------\n");

printf("%-12s%-12s%-12s%-12s%-12s%-12s\n",a->name,a->telephone,a->street,a->city,a->province,a->postnumber);

printf("----------------------------------------------------------------------\n");

a=a->next;}

printf("\n");

}

linklistCreate()

{

linklistL;

Node*s,*r;

charname[20],telephone[20],street[20],city[20],province[20],postnumber[20];

inti;

intflag=1;

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

L->next=NULL;

r=L;

while(flag)

{

loop:

printf("请按格式输入通讯人信息,例如:

姓名电话街道城市省邮编");

printf("\n");

scanf("%s%s%s%s%s%s",&name,&telephone,&street,&city,&province,&postnumber);

if(name[0]!

='$')

{

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

strcpy(s->name,name);

strcpy(s->telephone,telephone);

strcpy(s->street,street);

strcpy(s->city,city);

strcpy(s->province,province);

strcpy(s->postnumber,postnumber);

for(i=0;i<=19;i++)

{

if(telephone[i]=='\0')

break;

if((48<=telephone[i]&&telephone[i]<=57)!

=1)

{

printf("电话号码输入格式出错请重新输入\n");

gotoloop;

}

}

for(i=0;i<=19;i++)

{

if(postnumber[i]=='\0')

break;

if((48<=postnumber[i]&&postnumber[i]<=57)!

=1)

{

printf("邮编输入格式出错请重新输入\n");

gotoloop;

}

}

r->next=s;

r=s;

}

else

{

flag=0;

r->next=NULL;

}

}

returnL;

}

voidDelete(linklistL)

{

Node*p,*s;

intk;

chara[20];

p=L;

k=0;

printf("请输入你要更改的通讯人姓名");

printf("\n");

scanf("%s",&a);

while

(1)

{

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

{

printf("%s-%s-%s-%s-%s-%s",p->name,p->telephone,p->street,p->city,p->province,p->postnumber);

s->next=s->next->next;

fre

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2