C语言课程设计优秀版.docx
- 文档编号:28875495
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:39
- 大小:444.65KB
C语言课程设计优秀版.docx
《C语言课程设计优秀版.docx》由会员分享,可在线阅读,更多相关《C语言课程设计优秀版.docx(39页珍藏版)》请在冰豆网上搜索。
C语言课程设计优秀版
C语言课程设计报告
班级:
学号:
姓名:
指导教师:
评语:
成绩
2011年7月21日
1.基本题目
1.1题目
1.用条件编译方法实现以下功能:
输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变为其下一字母(如`a`变为`b`……`z`变为`a`。
其他字符不变用#define命令来控制是否要译成密码。
例如:
#definechange1,则输出密码。
若#definechange0,则不译成密码,按原码输出。
1.2题目分析
1.2.1问题分析
将输入的每一个字符储存在所定义的数组元素中,然后按照其对应的ASCII码转换成他的下一个字符输出即可。
1.2.2函数流程图
Y
N
N
Y
图1.1函数流程图
1.3程序
#defineCHANGE1
main()
{charstr[80],c;inti=0;
gets(str);
while(str[i]!
=’\0’)
{
#ifCHANGE
if(str[i]==90||str[i]==122)str[i]=str[i]-25;
elseif(str[i]>=65&&str[i]<90||str[i]>=97&&str[i]<122)str[i]=str[i]+1;
#endif
i++;
}
puts(str);
}
1.4程序的运行结果
1.4.1运行截屏
图1.2运行结果
1.4.2结果注释
按照顺序依次输入Iamastudeng后,程序根据算法,将其每一个字母转换为其下一个字母,便得到该运行结果。
2.改错题目
#include
intfun()
{
inta[3][3],sum;
inti,j;sum;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d"a[i][j]);
}
for(i=0;i<3;i++)
sum=sum*a[i][i];
printf("Sum=%d\n",sum);
}
main()
{fun();}
2.1改正后程序
#include
intfun()
{
inta[3][3],sum;
inti,j;sum=1;//给sum赋初始值1
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);//a[i][j]前加&符号与“,”
}
for(i=0;i<3;i++)
sum=sum*a[i][i];
printf("Sum=%d\n",sum);
}
main()
{fun();}
2.2程序运行结果
图2.1运行结果
改程序完成的功能是求一个二维数组中行,列序号相同的元素的乘积。
3.综合题目
3.1题目
假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。
通过该系统来实现机票的订购问题。
3.2程序的主要功能
1.本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。
2.本系统显示这样的菜单:
(1)输入航班信息
(2)输出航班信息
(3)查找航班信息
显示空座的数量
显示空座的信息
显示已订座的信息
起飞时间
(4)订票预约
(5)删除定票预约
(6)退出系统
3.本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。
4.查找航班信息既可按线路查,也可按目的地查。
5.在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据.
图3.1主程序流程图
3.3各函数的功能
1)输入函数
通过此函数,程序管理员可以输入飞机票的相关信息,包括航班号、起始站、终点站及起飞时间。
首先,管理员必须输入密码,密码正确才能正确,这样,增加了该系统安全性。
N
Y
N
Y
图3.2输入函数流程图
2)显示航班信息函数
此函数主要功能是显示管理员所输入的有关飞机票的信息,这个函数主要是通过文件的方式来实现的,通过文件的打开和保存来进行显示的,在以后的程序中要经常调用这个函数,这个函数是一个桥梁的作用。
Y
N
Y
N
图3.3显示函数流程图
3)查询信息函数
这个函数比较复杂,通过三种方式进行查询,利用switch语句进行选择。
首先,乘客选择哪种方式进行查询,然后乘客所输入的信息和原信息进行比较,如果相同,则查找成功,否则的话,需要重新输入信息。
查找的信息包括起始站、终点站、航班号、起飞时间等。
N
Y
图3.4查询函数流程图
4)订票函数
首先通过调用查询函数确定是否有飞机票,然后乘客输入所需要飞机票数,系统自动进行计算并保存,这样订票就成功了。
如果乘客想继续订票,还可以继续输入票数。
N
N
Y
Y
图3.5订票函数流程图
5)退票函数
首先,乘客通过调用查询函数查询飞机票相关信息。
然后,输人要退票的飞机票数,系统自动进行运算和保存,这样就退票成功了。
如果想继续退票,可以继续输入退票数。
Y
N
Y
N
图3.6退票函数流程图
6)删除函数
此函数主要是用于删除航班信息的,管理员通过输入密码进入系统,然后通过三种方式进行删除,然后管理员输入要删除的内容,最后,系统提示是否继续。
如果继续想删除,可以继续删除;否则,退出函数。
N
Y
Y
N
图3.7删除函数流程图
3.4源程序
#include
#include
#include
#defineN10000
structair//定义结构体数组
{
intnum;
charstart[20];
charover[20];
chartime[10];
intcount;
}s[N];
inti;
intm=0;//输入信息的序数m
#definePRINT"%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count//定义输出格式
voidinput();//输入航班信息
voidprint();//输出航班信息
voidsave();//保存航班信息
voidread();//读取航班信息
voidsearch();//查找航班信息
voidshanchu();//删除航班信息
voiddingpiao();//订票信息
voidtuipiao();//退票信息
voidxiugai();//修改信息
voidmain()//主函数
{
intj;
printf("★---您好,欢迎进入飞机订票系统!
---★\n");
printf("********************动1002班制作组。
参考程序来自:
XX文库*******************\n");
printf("================================================================================\n");
do
{
printf("--------☆1.输入航班信息☆--------\n\n"
"--------☆2.浏览航班信息☆--------\n\n"
"--------☆3.修改航班信息☆--------\n\n"
"--------☆4.查找航班信息☆--------\n\n"
"--------☆5.删除航班信息☆--------\n\n"
"--------☆6.订票信息☆--------\n\n"
"--------☆7.退票信息☆--------\n\n"
"--------☆0.退出☆--------\n\n");
printf("================================================================================\n");
printf("请在0-7中选择以回车键结束:
\n\n");
scanf("%d",&j);
switch(j)
{
case1:
input();//调用输入模块
break;
case2:
print();//调用打印模块
break;
case3:
xiugai();//调用修改模块
break;
case4:
search();//调用查找模块
break;
case5:
shanchu();//调用删除模块
break;
case6:
dingpiao();//调用订票模块
break;
case7:
tuipiao();//调用退票模块
break;
case0:
;
break;
}
}while(j!
=0);//判定结束
printf("谢谢使用,再见!
\n");
}//主函数结束
voidinput()//打印模块程序
{
charf[3],m1[]="736";//设置密码
inty;
printf("请输入密码并以回车键结束:
\n\n");
scanf("%s",f);//读取密码
if(strcmp(f,m1)==0)
{
printf("请依次输入航班信息(机票数位0结束输入):
\n\n"
"完成输入信息请键入w以回车键结束\n\n");//打印提示信息
printf("--------------------------------------------------------------------------\n");
for(i=0;i { printf("请输入航班号: \n"); scanf("%d",&s[i].num);//读取航班号 printf("请输入起始站: \n"); scanf("%s",s[i].start);//读取起始站 printf("请输入终点站: \n"); scanf("%s",s[i].over);//读取终点站 printf("请输入时间: \n"); scanf("%s",s[i].time);//读取时间 printf("请输入机票数(机票数为0结束输入): \n"); scanf("%d",&s[i].count);//读取机票数 m++; printf("第%d个信息已经输完是否继续? 按任意键继续,按0结束",m); scanf("%d",&y); if(y==0) { save();//将结构体信息存盘(调用save函数) print();//输出输入的航班信息(调用print函数) break; } } } else printf("输入密码错误! 请检查您的密码是否正确! 谢谢! 再见! \n\n"); } voidsave()//保存模块程序 { FILE*fp,*fp1;//定义文件指针 if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判定是否出错 { printf("创建文件失败! \n\n");//打印出错提示 getchar(); return; } if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判定是否出错 { printf("创建文件失败! \n\n");//打印出错提示 getchar(); return; } for(i=0;i if(fwrite(&s[i],sizeof(structair),1,fp)==0)/*向文件写入数据,并判定是否出错*/ printf("向文件输入数据失败! \n\n"); fprintf(fp1,"%d",m); fclose(fp);//关闭文件 fclose(fp1);//关闭文件 } voidread()//从文件读取信息模块 { FILE*fp,*fp1;//定义文件指针 if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判定是否出错 { printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示 getchar(); } if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判定是否出错 { printf("创建文件失败! \n\n");//打印出错提示 getchar(); return; } fscanf(fp1,"%d",&m); fclose(fp1);//关闭文件 for(i=0;i { fread(&s[i],sizeof(structair),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件 } voidprint()//打印模块 { charw[10]; read();//调用读取文件函数 printf("航班号起始站终点站时间机票数\n"); for(i=0;i { printf(PRINT);//打印信息 } printf("请按任意键回车键结束返回上层菜单以: \n"); scanf("%s",w); } voidsearch()//查询模块 { charname1[20]; charname2[20]; charii[10]; intn,no; do { printf("请选择查找方式: \n\n");//打印查询方式菜单 printf("1.按航班号查//打印信息 请按任意键回车键结束返回上层菜单以 //查询模块 请选择查找方式: //打印查询方式菜单 1.按航班号查找 按终点站查找 按航线查找\ 返回\ 请在0-3中选择 按其他键以回车键结束返回主菜单 //读取查找方式 找\n\n" "2.按终点站查找\n\n" "3.按航线查找\n\n" "0.返回\n\n"); printf("请在0-3中选择: \n\n" "按其他键以回车键结束返回主菜单: \n\n"); scanf("%d",&n);//读取查找方式 if(n==0) break; switch(n) { case1: printf("请输入航班号: \n"); scanf("%d",&no);//航班号 break; case2: printf("请输入终点站名称: \n"); scanf("%s",name2);//读取终点站 break; case3: printf("请输入起始站名称: \n"); scanf("%s",name1);//读取起始站 printf("请输入终点站名称: \n"); scanf("%s",name2);//终点站 break; } read();//调用读取函数 for(i=0;i { if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按终点站起始站判定输出条件 { printf("\n查找航班信息成功! \n"); printf("航班号起始站终点站时间机票数\n"); printf(PRINT);//打印信息 break; } if(s[i].num==no)//按航班号判定输出条件 { printf("\n查找航班信息成功! \n"); printf("航班号起始站终点站时间机票数\n"); printf(PRINT);//打印信息 break; } } no=0;//将航班号赋值为0 printf("没有您需要的信息或查找完毕: \n\n" "是否继续查找? 请键入yes或no以回车键结束\n"); scanf("%s",ii); }while(strcmp(ii,"yes")==0);//判定结束 } voidshanchu()//删除模块 { charname1[20]; charname2[20]; charii[10]; charf[]="736";//设置密码 intno,n; printf("请输入密码并以回车键结束: \n\n"); scanf("%s",f);//读取密码 if(strcmp(f,"736")==0)//判定密码是否正确 { do { printf("请选择删除以方式回车键结束: \n\n");//打印删除方式菜单 printf("*1.按航班号删除\n\n" "*2.按航线删除\n\n" "*0.返回\n\n"); printf("请在0-2中选择以回车键结束: \n"); scanf("%d",&n);//读取删除方式 if(n==0) break;//跳出循环 switch(n) { case1: printf("请输入航班号: \n"); scanf("%d",&no);//读取航班号 read();//调用读取函数 break;//跳出循环 case2: printf("请输入起始站名称: \n"); scanf("%s",name1);//读取起始站 printf("请输入终点站名称: \n"); scanf("%s",name2);//读取终点站 read();//调用读取函数 break;//跳出循环 } for(i=0;i { if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//判定输入信息是否存在 { s[i]=s[m-1]; m--; } } printf("查找完毕或没有这个信息\n\n"); printf("是否继续删除\n"); printf("请键入yes或no以回车键结束\n"); scanf("%s",ii);//读取是否继续信息 save();//调用读取函数 if(! strcmp(ii,"yes"))//判定是否继续删除 printf("请按任意键以回车键结束返回上层菜单: \n"); break; }while(n! =1&&n! =2&&n! =3&&n! =4&&n! =0);//判定结束 } else printf("对不起密码错误! 您不是治理员,不能使用此项功能! 谢谢! 再见! \n\n"); } voiddingpiao()//订票模块 { intn; chara[10]; do { search();//调用查询模块 printf("请输入您要订的机票数以回车键结束: \n"); scanf("%d",&n);//读取所订机票数 if(n<0) { printf("请输入有效的机票数! \n");//判定机票数是否出错 break; } if(s[i].count! =0&&s[i].count>=n)//判定是否出错 { s[i].count=s[i].count-n; save();//调用保存函数 printf("订票成功! \n\n"); break; } if(s[i].count { printf("请输入有效的机票数: \n"); break; } printf("是否继续? 请输入yes或no以回车键结束: \n");//判定是否继续订票 scanf("%s",a); }while(! strcmp(a,"yes"));//判定结束 } voidtuipiao()//退票模块 { intn; chara[10]; do { search();//调用查询模块 printf("请输入您要退的机票数目: \n"); scanf("%d",&n);//输入所退票数 if(n<0)//判定票数是否有效 printf("请输入有效的机票数! \n"); s[i].count=s[i].count+n; save();//调用保存模块 printf("退票成功! \n\n"); printf("是否继续? 请键入yes或no以回车键结束: \n\n");//判定是否继续退票 scanf("%s",a); }while(! strcmp(a,"yes"));//判定并跳出循环 getchar(); } voidxiugai()//修改模块 { structxiu//定义结构体 { intno; charname1[20]; charname2[20]; chartime[20]; intcount; }x[1]; charj[10]; charf[]="736";//设置密码 intn; printf("请输入密码并以回车键结束: \n\n"); scanf("%s",f);//读取密码 if(strcmp(f,"736")==0)//判定是否出错 { read();//调用读取模块 do { printf("请选择修改方式: \n\n" "*1,按航班号修改: \n\n" "*2,按航线修改: \n\n"); printf("请在1---2中修改以回车键结束: \n\n"); scanf("%d",&n);//读取修改方式 switch(n) { case1: printf("请输入航班号: \n"); scanf("%d",&x[0].no);//读取航班号 break; case2: printf("请输入起始站: \n"); scanf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 优秀