c语言实习报告.docx
- 文档编号:28934944
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:22
- 大小:306.39KB
c语言实习报告.docx
《c语言实习报告.docx》由会员分享,可在线阅读,更多相关《c语言实习报告.docx(22页珍藏版)》请在冰豆网上搜索。
c语言实习报告
C语言课程实习报告
所在院系:
经济管理学院
班级学号:
08108120081001833
姓名:
曾秋颖
程序已存档:
指导老师:
赵曼
评分:
____________
二零一零年一月十五日
目录
一.题目分析………………………………………………………3
1.1题目要求
1.2需求分析
二.总体设计………………………………………………………3
三.详细设计………………………………………………………4
3.1主函数………………………………………………………4
3.2各功能模块设计………………………………………………6
3.2.1注册模块
3.2.2浏览模块
3.2.3查询模块
3.2.4交费模块
3.2.5租还模块
3.3公共函数……………………………………………………15
四.程序测试……………………………………………………16
4.1数据源
4.2编译,连接和运行
4.3运行结果
五.结束语………………………………………………………21
5.1实习心得
一.题目分析
名称:
电影俱乐部
1.1题目要求:
允许俱乐部成员租用DVD.若想成为会员,首先应签约并且可按月交纳费用.会员一次可租用三个DVD,没有时间限制.可浏览所有可租用的DVD,能实现新成员的开户,会员对其账户状况的查询以及俱乐部管理者对所有交易情况的查看功能.
1.2需求分析:
根据题目要求,DVD信息和俱乐部会员信息用文件存储,提供文件的输入输出操作;注册新会员,提供文件的添加操作;浏览信息应提供显示操作;实现查询则提供文件的查找操作;另外提供键盘式选择菜单以实现功能选择.
二.总体设计
下面来分析一下整个系统,根据上面的需求分析,可以把这个系统的设计分为以下六大模块:
会员注册模块,会员交费模块,会员租用DVD模块,会员归还DVD模块,信息浏览模块和信息查询模块.主函数中提供输入输出和部分函数调用,全局变量n,n1实现保存菜单数字等简单功能,程序主要功能体现在各模块中。
程序主要采用结构体变量实现操作,以一个会员的所有信息为一个单元,并用文件保存。
程序中以选择结构为大框架,通过使用顺序结构和选择结构实现操作。
三.详细设计
1.主函数
(1)提供密码验证和输入输出功能,各功能用菜单方式选择,使用文件存放,流程图如图所示,密码123,可在源程序修改。
main()
{
printf("*******************欢迎使用DVD信息管理系统**********************\n");
printf("\n\n\n\n请输入管理员密码:
");
if(check())
menu1();
else
{printf("密码输入错误\n");
printf("****************你无权使用本系统*****************\n");
quit();
}
}
intcheck()/*验证会员密码*/
{
chara[20],str[]="123";/*注意:
会员初始密码为123*/
intcount;
for(count=0;count<3;count++)
{gets(a);
if(strcmp(a,str)==0)
return1;
else
continue;
}
return0;
}
(2)主函数一般设计得比较简洁,只提供输入,功能处理和输出部分的函数调用.其中各功能模块用菜单方式选择;另外,菜单部分也可以写成函数.其流程如图1所示:
N
Y
intmenu1()/*主函数功能菜单*/
{
FILE*fp1;
inta;/*变量a保存选择菜单数字*/
if((fp1=fopen("n.txt","a+"))==NULL)
{printf("cannotopenfile");
exit(0);}
{fread(&N[1],sizeof(int),1,fp1);
fread(&N[2],sizeof(int),1,fp1);}
fclose(fp1);
n=N[1];
n1=N[2];
moon();
printf("\n1.建立新档案(会员档案和DVD档案)\n");
printf("\n2.注册会员\n");
printf("\n3.缴纳会费\n");
printf("\n4.会员租用DVD\n");
printf("\n5.信息浏览\n");
printf("\n6.信息查询\n");
printf("\n7.退出\n");
printf("**********************************************");
printf("\n\n\n请选择编号:
");
scanf("%d",&a);
switch(a)/*主函数功能选择*/
{case1:
{create();menu1();}break;/*建立新档案模块*/
case2:
{add();menu1();}break;/*注册会员模块*/
case3:
{monfei();menu1();}break;/*缴纳会费模块*/
case4:
{dvd();menu1();}break;/*会员租用DVD模块*/
case5:
menu2();break;/*信息浏览模块菜单*/
case6:
menu3();break;/*信息查询模块菜单*/
case7:
quit();break;/*退出模块*/
default:
printf("输入编号错误\n");
menu1();
}
}
2.各功能模块设计
(1)注册模块
本模块要求用户创建初始会员信息,是后续操作的基础。
以会员名,会员编号,会员性别,会费,DVD信息作为结构体变量。
printf("请输入增加会员档案的个数:
");
scanf("%d",&a);
for(i=n;i<(n+a);i++)
{
printf("请输入会员名:
");
scanf("%s",&stu1[i].name);
fflush(stdin);
printf("请输入会员编号:
");
scanf("%d",&stu1[i].num);
fflush(stdin);
printf("请输入会员性别:
男1女2:
");
scanf("%d",&stu1[i].sex);
fflush(stdin);
printf("请输入初始的会费:
");
scanf("%d",&stu1[i].huifei);
stu1[i].day=s1;
stu1[i].dvd1=stu1[i].dvd2=stu1[i].dvd3=0;
getchar();
}
if((fp=fopen("huiyuan.txt","a+"))==NULL)
{printf("cannotopenfile");
exit(0);}
for(i=n;i<(n+a);i++)
fwrite(&stu1[i],sizeof(structdvdA),1,fp);
fclose(fp);
n=n+a;
if((fp=fopen("huiyuan.txt","r+"))==NULL)
{printf("cannotopenfile");
exit(0);}
for(i=0;i { fread(&stu2[i],sizeof(structdvdA),1,fp); printf("姓名编号性别会费\n"); printf("%4s,%5d,%5d,%4d\n",stu2[i].name,stu2[i].num,stu2[i].sex,stu2[i].huifei); } fclose(fp); N[0]=n; if((fp1=fopen("n.txt","w+"))==NULL) {printf("cannotopenfile"); exit(0);} fwrite(&N[0],sizeof(int),1,fp1); fclose(fp1); } (2)浏览模块 该模块进行信息浏览操作,通过调用注册模块中创建的文件信息,达到浏览信息的目的。 search1()/*按会员姓名查询和浏览信息*/ { FILE*fp,*fp1; inti,c; charname[20]; structdvdAstu2[100]; printf("\n请输入会员姓名: \n"); scanf("%s",&name); if((fp=fopen("huiyuan.txt","r+"))==NULL) {printf("cannotopenfile"); exit(0);} for(i=0;i {fread(&stu2[i],sizeof(structdvdA),1,fp); c=strcmp(name,stu2[i].name); if(c==0) {printf("姓名编号性别会费已租DVD1已租DVD2已租DVD3\n"); printf("%4s%5d%4d%5d%7d%10d%10d\n",stu2[i].name,stu2[i].num,stu2[i].sex,stu2[i].huifei,stu2[i].dvd1,stu2[i].dvd2,stu2[i].dvd3); break; } } fclose(fp); menu3(); } search2()/*按DVD编号查询和浏览信息*/ { FILE*fp,*fp1; inti,c; structdvdBdd2[100]; printf("\n请输入DVD编号: \n"); scanf("%d",&c); if((fp=fopen("dvd.txt","r+"))==NULL) {printf("cannotopenfile"); exit(0);} for(i=0;i {fread(&dd2[i],sizeof(structdvdB),1,fp); if(c==dd2[i].num) {printf("编号DVD名数量\n"); printf("%4d%5s%7d\n",dvd2[i].num,dvd2[i].name,dvd2[i].k); break; } } fclose(fp); menu3(); } printhuiyuan() {FILE*fp; inti; structdvdAstu2[100]; if((fp=fopen("huiyuan.txt","r+"))==NULL) {printf("cannotopenfile"); exit(0);} for(i=0;i {fread(&stu2[i],sizeof(structdvdA),1,fp); printf("姓名编号性别会费\n"); printf("%4s%5d%5d%4d\n",stu2[i].name,stu2[i].num,stu2[i].sex,stu2[i].huifei); } fclose(fp); menu2(); } printdvd() { FILE*fp; inti; structdvdBdd2[100]; if((fp=fopen("dvd.txt","r+"))==NULL) {printf("cannotopenfile"); exit(0);} for(i=0;i {fread(&dd2[i],sizeof(structdvdB),1,fp); printf("编号DVD名数量\n"); printf("%4d%5s%4d\n",dd2[i].num,dd2[i].name,dd2[i].k); } fclose(fp); menu2(); (3)查询模块 根据输入的会员名查找对应记录,也可以通过输入DVD名实现相同功能。 menu3() { inta; printf("\n信息查询\n"); printf("\n1.按会员名查找\n"); printf("\n2.按dvd查找\n"); printf("\n3.返回上级菜单\n"); printf("\n\n\n请输入编号: "); scanf("%d",&a); switch(a) { case1: search1();break; case2: search2();break; case3: menu1();break; default: printf("输入编码错误\n");menu3(); } } (4)缴费模块 实现会员缴费操作,其实质是对保存的文件信息进行修改操作。 monfei() {FILE*fp,*fp1; inti,c; charname[20]; structdvdAstu2[100]; printf("\n请输入会员姓名: \n"); scanf("%s",&name); if((fp=fopen("huiyuan.txt","r+"))==NULL) {printf("cannotopenfile"); exit(0);} for(i=0;i {fread(&stu2[i],sizeof(structdvdA),1,fp); c=strcmp(name,stu2[i].name); if(c==0) {printf("姓名编号性别会费dvd1dvd2dvd3\n"); printf("%4s,%5d,%5d,%4d%4d%4d%4d\n",stu2[i].name,stu2[i].num,stu2[i].sex,stu2[i].huifei,stu2[i].dvd1,stu2[i].dvd2,stu2[i].dvd3); printf("请输入你要充入会费\n"); scanf("%d",&stu2[i].huifei); } } fclose(fp); if((fp=fopen("huiyuan.txt","w+"))==NULL) {printf("cannotopenfile"); exit(0);} for(i=0;i fwrite(&stu2[i],sizeof(structdvdA),1,fp); fclose(fp); (5)租用模块 实现DVD租用操作。 其实质也是通过找到会员信息,对DVD信息进行修改操作。 dvd() {FILE*fp,*fp1; inti,c; charname[20]; structdvdAstu2[100]; printf("\n请输入会员姓名: \n"); scanf("%s",&name); if((fp=fopen("huiyuan.txt","r+"))==NULL) {printf("cannotopenfile"); exit(0);} for(i=0;i {fread(&stu2[i],sizeof(structdvdA),1,fp); c=strcmp(name,stu2[i].name); if(c==0) {printf("姓名编号性别会费dvd1dvd2dvd3\n"); printf("%4s,%5d,%5d,%4d%4d%4d%4d\n",stu2[i].name,stu2[i].num,stu2[i].sex,stu2[i].huifei,stu2[i].dvd1,stu2[i].dvd2,stu2[i].dvd3); printf("请输入你要修改后的dvd1编号: "); scanf("%d",&stu2[i].dvd1); printf("\n请输入你要修改后的dvd2编号: "); scanf("%d",&stu2[i].dvd2); printf("\n请输入你要修改后的dvd3编号: "); scanf("%d",&stu2[i].dvd3); } } fclose(fp); if((fp=fopen("huiyuan.txt","w+"))==NULL) {printf("cannotopenfile"); exit(0);} for(i=0;i fwrite(&stu2[i],sizeof(structdvdA),1,fp); fclose(fp); menu1(); } 3.公共函数 下面介绍一些在每个功能模块中都有可能用到的一些公共函数. (1)添加函数: [程序] add() { FILE*fp,*fp1; inti,a; structdvdAstu2[100]; intm,d,s1; time_ttimep; s1=m*30+d; printf("请输入增加会员档案的个数: "); scanf("%d",&a); for(i=n;i<(n+a);i++) { printf("请输入会员名: "); scanf("%s",&stu1[i].name); fflush(stdin); printf("请输入会员编号: "); scanf("%d",&stu1[i].num); fflush(stdin); printf("请输入会员性别: 男1女2: "); scanf("%d",&stu1[i].sex); fflush(stdin); printf("请输入初始的会费: "); scanf("%d",&stu1[i].huifei); stu1[i].day=s1; stu1[i].dvd1=stu1[i].dvd2=stu1[i].dvd3=0; getchar(); } (2)一个任务结束时的返回函数: [程序] { inta; printf("信息浏览\n"); printf("\n1.会员信息浏览\n"); printf("\n2.dvd信息浏览\n"); printf("\n3.返回上级菜单\n"); printf("\n\n\n请输入编号: "); scanf("%d",&a); switch(a) { case1: printhuiyuan();break; case2: printdvd();break; case3: menu1();break; default: printf("输入编号错误\n"); menu2(); } 四.程序测试 1.数据源 根据前面所列的数据输入形式,想想在输入数据的时候应该如何输入? 2.编译,连接和运行 3.运行结果 下面是各个模块的界面图. (1)主菜单函数: 输入密码,进入主菜单界面,效果如图4-1所示. (2)档案建立: 在主界面出现后输入1并按[Enter]键,结果如图所示. (3)会员注册: 在主菜单输入2并按[Enter]键,可添加新会员,如图所示. (4)会费功能: 在主菜单输入3并按[Enter]键,可交纳会费,如图所示. (5)DVD信息: 在主菜单输入4并按[Enter]键,可租借或归还DVD,如图所示. (6)浏览信息: 在主菜单输入6并按[Enter]键,可浏览所有会员及DVD的信息,如图所示. (7)查询信息: 在主菜单输入5并按[Enter]键,可查询会员及DVD的信息,如图所示. (8)退出: 在主菜单输入7并按[Enter]键,再按Y可确定退出,如图所示. 五结束语 实习心得: 通过这几天的程序编写及课程报告的书写,虽然时间不是很长,却真正做到了学以致用,大大加深了我对C语言的认识,课程设计尤其对具体编程能力的提高有着极大帮助,使我获益匪浅。 在程序设计过程中,遇到的主要问题是考虑具体算法时遇到的困难以及实际编写时的编写错误,虽然造成了困扰,但是在参考设计指导书的例子后,算法问题基本解决,而编写错误经过不断努力也减少了,当然这其中离不开老师和同学们的帮助。 对于当代的大学生来说,具有一定的计算机操作技能是必不可少的. 由于能力有限,程序中还有很多不足之处,还请老师多多指教!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实习 报告