综合性设计性实验报告模版.docx
《综合性设计性实验报告模版.docx》由会员分享,可在线阅读,更多相关《综合性设计性实验报告模版.docx(35页珍藏版)》请在冰豆网上搜索。
综合性设计性实验报告模版
计算机与信息技术学院综合性、设计性实验报告
专业:
通信工程年级/班级:
20112011—2012学年第一学期
课程名称
C程序设计
指导教师
王鲜芳
本组成员
学号姓名
1108224015王源标1108224043董俊明
实验地点
215
实验时间
2011.12.8
下午:
2:
30-4:
20
项目名称
使用函数设计菜单趣味程序
实验类型
综合性/设计性
试验项目简介:
设计一个含有多项菜单项的菜单程序,其下包含子菜单。
菜单形式如下:
(一)
1.星座查询
2.排位查询
3.星期查询
4.天支查询
5.娱乐工具(包含子菜单)
6.退出程序
这是菜单的结构图:
(二)用函数实现各模块功能
(三)每种操作后返回主菜单
一、实验目的:
程序和指令的思想是计算机系统中最基本的概念。
通过设计菜单程序,进一步了解计算机工作原理,更好的理解和应用计算机;掌握用计算机处理问题;培养分析问题解决问题的能力;具有编制程序的初步能力。
即使将来不是计算机专业人员,由于学过程序设计,理解软件生产特点和生产过程,就能与程序开发人员更好的沟通与合作。
通过本次实验可以掌握更多的计算机C语言的程序的设计,菜单的设计会包含很多的知识,例如基本的计算机知识,基本计C语言知识以及函数的应用,指针的认识以及应用,还会包含结构体的应用,在与同学的合作中提高合作精神,有易于以后的发展,在实验中采用多种函数的调用,加入一些自己的独立思想,本实验拟在设计一个比较实用、有趣的菜单程序,锻炼学生分析问题、解决问题、应用程序设计语言基本知识的能力。
故此次菜单的程序设计是对同学们学的好与坏的重要考察。
二、总体设计(设计原理、设计方案及流程等)
使用多种函数对所需的程序进行编译,如使用指针、结构体、多种简单程序等等对主程序进行编译,先画出小程序的流程图,在一个一个编写,最后将他们进行组合,完成主程序。
实验仪器或设备:
学校的机房,和个人计算机。
三、实验步骤(包括主要步骤、代码分析等)
实验分以下阶段完成
一:
完成程序的主框架设计
二:
根据流程图做出相应的程序(包含主函数、子函数)
三:
完成设计后进行调试、编译、组建,改正,得出运行结果。
以下是程序的结构图:
!
!
!
详细设计,进行调试,验证其正确性;
主程序内容:
#include
#include
#include
#include
#include
#include
voidhongxin(intx);
voidkongge(intx);
voidjiemianshouyu();
voidhuanhang(inty);
voidprint_caidan();
voidxuanzemoshi();
voidsanjiao1(intx);
voidsanjiao2(intx);
voidmima();
voidxinxing();
voidmain()
{
hongxin(80);
huanhang(3);
kongge(11);
printf("河南师范大学2011级计科院通信工程");
huanhang(3);
hongxin(80);
huanhang
(2);
kongge(15);
hongxin(3);
printf("本程序制作人:
董俊明*&*王源标");
hongxin(3);
huanhang
(2);
xinxing();
mima();
}
voidzhuyunxing()
{
huanhang
(2);
getchar();
jiemianshouyu();
huanhang
(1);
kongge(25);
printf("主菜单程序\n");
huanhang
(1);
hongxin(80);
print_caidan();
hongxin(80);
kongge(25);
printf("\n");
printf("现在进入选择模式");
getchar();
xuanzemoshi();
}
voidjiemianshouyu()
{
voidprint_star();
voidprint_huanying();
print_star();
printf("\n");
printf("\n");
print_huanying();
printf("\n");
printf("\n");
print_star();
}
voidprint_star()
{
for(inti=0;i<80;i++)
{
if(i%2==0)putchar(003);
elseputchar(004);
}
}
voidprint_huanying()
{
voidkongge(intx);
kongge(10);
printf("************欢迎您进入***蓝$月$亮***日期查询系统**********\n");
}
voidprint_caidan()
{
huanhang(0);
kongge(10);
printf("*******************请选择要进入的模式*********************\n");
huanhang
(2);
kongge(23);
hongxin
(2);
printf("1******$星座$传说$******\n");
huanhang
(2);
kongge(23);
hongxin
(2);
printf("2******$排位$查询$******\n");
huanhang
(2);
kongge(23);
hongxin
(2);
printf("3******$星期$查询$******\n");
huanhang
(2);
kongge(23);
hongxin
(2);
printf("4******$天支$查询$******\n");
huanhang
(2);
kongge(23);
hongxin
(2);
printf("5******$娱乐$工具$******\n");
huanhang
(2);
kongge(23);
hongxin
(2);
printf("6******$退出&程序$******\n");
}
voidhuanhang(inty)
{
for(inta=0;aprintf("\n");
}
voidkongge(intx)
{
inta;
for(a=0;aprintf("");
}
voidxuanzemoshi()
{
voidxingzuo();
voidnongli();
voidtianzhi();
voidxingqi();
voidyule();
voidpaiwei();
intZ;
printf("**提示:
请输入1到6的数,选择你要操作的程序\n");
printf("**请选择您想进行的查询项目,输入菜单数字:
\n");
scanf("%d",&Z);
hongxin(80);
printf("\a");
switch(Z)
{
case
(1):
xingzuo();break;
case
(2):
paiwei();break;
case(3):
xingqi();break;
case(4):
tianzhi();break;
case(5):
yule();break;
case(6):
{printf("谢谢您使用本程序\n"),hongxin(80);}break;
}
}
voidhongxin(intx)
{
for(inta=0;aputchar(003);
}
voidhunhe(intx)
{
if(x%2==0)
{for(inta=0;aputchar(004);
}
else
for(inta=0;a}
voidxingzuo()
{voidhongxin(intx);
voidxingzuo3();
printf("欢迎您进入星座传说查询信息");
hongxin(3);
printf("\n请输入回车继续操作\n");
hongxin(3);
getchar();
printf("现在我将为您对星座查询进行简单介绍\n星座日期查询:
十二星座是按阳历也就是公历的日期来进行划分的,首先你得知道你的阳历出生日期,然后输入即可\n");
hongxin(3);
getchar();
printf("欢迎您进入星座查询统\n");
hongxin(80);
printf("\n");
printf("请输入你要查询的日期!
!
!
注意请按照正确的格式输入\n");
printf("例如五月二十四,输入524即可\n");
xingzuo3();
}
voidxingzuo3()
{
voidhongxin(intx);
intriqi;charm;
hongxin(80);
printf("请输入日期\n");
scanf("%d",&riqi);
if(121<=riqi&&riqi<=219)
{hongxin(3);
printf("亲*******您要查询的日期对应星座是水瓶座\n");
hongxin(3);}
if(120>=riqi&&riqi>=0)
{hongxin(3);
printf("您要查询的日期对应星座是魔蝎座\n");
hongxin(3);
}
if(220<=riqi&&riqi<=320)
{hongxin(3);
printf("您要查询的日期对应星座是双鱼座\n");
hongxin(3);
}
if(321<=riqi&&riqi<=420)
{hongxin(3);
printf("您要查询的日期对应星座是白羊座\n");
hongxin(3);
}
if(421<=riqi&&riqi<=521)
{hongxin(3);
printf("您要查询的日期对应星座是金牛座\n");
hongxin(3);
}
if(522<=riqi&&riqi<=621)
{hongxin(3);
printf("您要查询的日期对应星座是双子座\n");
hongxin(3);
}
if(622<=riqi&&riqi<=722)
{hongxin(3);
printf("您要查询的日期对应星座是巨蟹座\n");
hongxin(3);
}
if(723<=riqi&&riqi<=823)
{hongxin(3);
printf("您要查询的日期对应星座是狮子座\n");
hongxin(3);
}
if(824<=riqi&&riqi<=923)
{hongxin(3);
printf("您要查询的日期对应星座是处女座\n");
hongxin(3);
}
if(924<=riqi&&riqi<=1023)
{hongxin(3);
printf("您要查询的日期对应星座是天秤座\n");
hongxin(3);
}
if(1024<=riqi&&riqi<=1122)
{hongxin(3);
printf("您要查询的日期对应星座是天蝎座\n");
hongxin(3);
}
if(1123<=riqi&&riqi<=1221)
{hongxin(3);
printf("您要查询的日期对应星座是射手座\n");
hongxin(3);
}
if(1222<=riqi)
{hongxin(3);
printf("您要查询的日期对应星座是魔蝎座\n");
hongxin(3);
}
hongxin(80);
printf("是否继续进行查询\n****如果是请输入y\n****如果退出请输入n\n");
printf("您的选择是\n");
getchar();
m=getchar();
hongxin(80);
if(m=='y')
xingzuo3();
else
print_caidan();xuanzemoshi();
}
voidsanjiao1(intx)
{
for(inta=0;aputchar(021);
}
voidsanjiao2(intx)
{
for(inta=0;aputchar(022);
}
voidtianzhi()
{
voidtianzhi1();
printf("欢迎您进入天支查询\n");
printf("说明:
本系统只支持公元后咨询\n");
tianzhi1();
}
voidtianzhi1()
{
voidhongxin(intx);
intm,n,A;chari;
printf("请输入您想要查询的年份:
\n");
hongxin(80);
scanf("%d",&A);
m=(A-3)%10;n=(A-3)%12;
printf("你要查询的年份是:
\n");
switch(m)
{
case
(1):
printf("甲");break;
case
(2):
printf("乙");break;
case(3):
printf("丙");break;
case(4):
printf("丁");break;
case(5):
printf("戊");break;
case(6):
printf("己");break;
case(7):
printf("庚");break;
case(8):
printf("辛");break;
case(9):
printf("壬");break;
case(0):
printf("癸");break;
}
switch(n)
{
case
(1):
printf("子");break;
case
(2):
printf("丑");break;
case(3):
printf("寅");break;
case(4):
printf("卯");break;
case(5):
printf("辰");break;
case(6):
printf("巳");break;
case(7):
printf("午");break;
case(8):
printf("未");break;
case(9):
printf("申");break;
case(10):
printf("酉");break;
case(11):
printf("戌");break;
case(0):
printf("亥");break;
}
printf("年\n");
hongxin(80);
printf("是否继续进行查询\n如果是请输入y\n如果退出请输入n\n");
printf("\n");
printf("请输入您的选择:
\n");
getchar();
i=getchar();
hongxin(80);
if(i=='y')
tianzhi1();
else
print_caidan();xuanzemoshi();
}
voidyule()
{
voidfeixingqi();
voidshujuchuli();
intp;
hongxin(80);
huanhang
(2);
printf("1:
飞行棋\n");
printf("2:
数据处理\n");
huanhang
(2);
hongxin(80);
printf("请输入1或2进入相应程序\n");
printf("如果您想退出本操作请按“0”。
\n");
scanf("%d",&p);
switch(p)
{
case
(1):
feixingqi();break;
case
(2):
shujuchuli();break;
case(0):
{print_caidan();xuanzemoshi();}break;}}
voidfeixingqi()
{
voidzhishaizi();
charm;
printf("欢迎您进入本游戏请按y进入游戏:
\n");
getchar();
m=getchar();
switch(m)
{case'y':
zhishaizi();break;}
}
voidyouxixuanze()
{
voidzhishaizi();
charm;
printf("是否继续进行游戏\n如果是请选y否则的话请选n\n");
m=getchar();
getchar();
if(m=='y')
zhishaizi();
else
yule();
}
voidzhishaizi()
{voidyouxixuanze();
voidhongxin(intx);
intguocheng(inty);
intsjs();
intn=1,i,j,z=1;charm;
printf("请打回车键。
。
。
进行游戏\n");
for(j=0;j<100;n++)
{m=getchar();
i=sjs();
j=guocheng(j);
printf("您所正在的位置是:
%d\n",j);
hongxin(80);}
printf("您一共用<<<%d步>>完成了游戏\n",n);
if(n<40)
printf("亲。
。
。
您的运气很适合买彩票啊。
。
。
\n");
if(n>40&&n<60)
printf("亲。
。
。
您的运气一般老老实实的工作吧。
。
。
。
\n");
if(n>60)printf("亲。
。
。
。
对不起。
。
。
您的运气不适合在地球上居住...\n");
getchar();
youxixuanze();
}
intsjs()//此为伪随机数函数
{srand((unsigned)time(NULL));//通过对时间的调用来确定伪随机数,此句摘自网络
inta;
a=rand()%6+1;
return(a);}
intguocheng(inty)
{intsjs();
inthanshu1(intx);
inthanshu2(intx);
inthanshu3(intx);
inthanshu4(intx);
inthanshu5(intx);
inthanshu6(intx);
intm,x;
m=sjs();
switch(m)
{case
(1):
x=hanshu1(y);break;
case
(2):
x=hanshu2(y);break;
case(3):
x=hanshu3(y);break;
case(4):
x=hanshu4(y);break;
case(5):
x=hanshu5(y);break;
case(6):
x=hanshu6(y);break;}
return(x);}
inthanshu1(intx)
{
printf("恭喜您您遇见了丘比特。
。
。
可以前进多三步;继续努力啊!
!
\n");
x=x+3;
return(x);
}
inthanshu2(intx)
{
printf("唉。
。
运气这么不好。
。
掉进了陷阱里。
。
后退5格继续努力啊!
!
\n");
x=x>5?
(x-5):
(x=1);
return(x);
}
inthanshu3(intx)
{
printf("恭喜你...>..>..你遇上了智慧女神...你可以多前进5步继续努力啊!
!
\n");
return(x=x+10);
}
inthanshu4(intx)
{
printf("噢。
。
。
你很不幸。
。
踩上了香蕉皮后退5步继续努力啊!
!
继续努力啊!
!
继续努力啊!
!
\n");
return((x-5)>0?
(x-5):
(x=1));
}
inthanshu5(intx)
{
printf("你很幸运。
。
。
。
遇见幸运女神前进十步。
。
。
。
。
继续努力啊!
!
\n");
return(x=x+10);
}
inthanshu6(intx)
{
printf("唉,,,,很不幸你遇见了孟利明。
。
。
后退3步吧....继续努力啊!
!
\n");
return((x-3)>0?
(x-3):
(x=1));
}
voidshujuchuli()
{voidsort(char*p,intm);
char*p,num[20],q;
printf("本程序功能说明:
数字的排序\n");
hongxin(80);
printf("请您输入你要排序的数的个数\n");
printf("inputn:
");
inti,n;
scanf("%d",&n);
printf("pleaseinputthesenumbers:
\n");
printf("请您输入%d个整数,字符间用空格隔开。
\n",n);
for(i=0;iscanf("%d",&num[i]);
hongxin(80);
p=&num[0];
sort(p,n);
printf("数字的排序为:
\n");
printf("nowthesequenceis:
\n");
hongxin(80);
for(i=0;iprintf("%d\t",num[i]);
printf("\n");
getchar();
printf("是否继续进行程序\n如果是请选y否则的话请选n\n");
q=getchar();
hongxin(80);
if(q=='y')
shujuchuli();
elseyule();
}
voidsort(char*p,intm)
{inti;
chartemp,*p1,*p2