综合性程序设计报告.docx
- 文档编号:12174876
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:17
- 大小:166.92KB
综合性程序设计报告.docx
《综合性程序设计报告.docx》由会员分享,可在线阅读,更多相关《综合性程序设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
综合性程序设计报告
综合性程序设计报告
设计题目:
彩票系统
指导教师:
XXXXXX
班级:
XXXX
学号:
XXXXXX
设计者:
XXXXX
成绩:
_______________
设计时间:
2012年12月8日
彩票系统
一、概述
用于根据各种要求,选择彩票号码,记录彩票购买人资料,随机产生中奖号码,并根据中奖号码找到中奖彩民的资料并显示出来。
2、功能模块分解及说明
主函数模块main()
本模块为系统的主框架,通过主函数来实现整个系统的所有功能,用户自定义购票、抽取查看中奖号码及用户中奖情况、奖金累计查询。
通过if条件语句、switch分支语句和子模块的函数实现系统各个不同的功能。
界面模块jiemian()
界面模块程序主要是显示彩票购买注意事项和系统的所有功能,为购买票系统的主界面和功能的目录,用户自定义购票、抽取查看中奖号码及用户中奖情况、奖金累计查询。
存储模块save()
存储模块是对彩票够买用户的信息进行存储,录入文件。
读取模块read()
读取模块主要是对已录入的信息进行读取。
打印模块print()
打印模块即是将录入模块的航班信息按照列的形式将购票序号、用户名、购买彩票的号码、输出以便于对信息的总览,方便用户的确认。
中奖模块winnum()
中奖模块主要是抽取随机数来产生中奖号码,并返回值。
结果模块dingpiao()
结果模块是通过比较中奖号码与用户购票号码来给出用户中奖情况并输出结果。
三、数据库设计及说明
系统程序录入的彩票购买用户信息组成一个小型数据库通过调用save和read两个函数来保存读取,本系统运行后则生成一个dat文件,即为航班信息情况。
两个函数如下:
voidsave()//保存模块程序
inti,m=3;
FILE*fp;//定义文件指针
if((fp=fopen("caipiao.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("██创建文件失败!
██\n\n");//打印出错提示
}
for(i=0;i {printf("请输入用户姓名: "); scanf("%s",&p[i].name); printf("请输入您欲选购的七位彩票号码: "); scanf("%d",&p[i].num); printf("\n*********^^^^^^^^\n"); p[i].ID=i; fp=p; if(fwrite(&p[i],sizeof(structperson),1,fp)==0)//向文件写入数据,并判断是否出错 {printf("\n*<*><*>&^已成功确认本操作.^&*<*><*>*\n\n");break;} elseprintf("██向文件输入数据失败! ██\n\n");} fclose(fp);//关闭文件 } voidread()//从文件读取信息模块 { inti,m=100000; FILE*fp;//定义文件指针 if((fp=fopen("caipiao.dat","rb"))==NULL)//打开文件,并判断是否出错 { printf("██出错,请再次确认██");//打印出错提示 getchar(); } for(i=0;i { fread(&p[i],sizeof(structperson),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件 } voidprint()//打印模块 { inti,m=3; read();//调用读取文件函数 printf("购票序号用户名购买的彩票号\n"); for(i=1;i printf("%d%5s%10d",p[i].ID,p[i].name,p[i].num);//打印信息 } 四、界面说明 1、运行进入系统主界面查看注意事项有并进行功能选择。 2、功能选择: 1 选择1进入用户购票界面,按照界面显示要求进行操作,输入用户姓名和七位购票号码,并得到购票序号; 2 选择2进入中奖情况查询界面,可以看到中奖号码显示出来,并可以输入用户的姓名及购票序号进行中奖情况的查询,得到是否获奖及获得几等奖与奖金面额的信息。 3 选择3进入用户累计奖金查询系统,可以输入用户姓名和购票序号进行奖金累计信息查询。 4 选择4退出系统,界面显示“@0@0@0@0@0****************感谢使用本系统,欢迎下次再来****************@0@0@0@0@0”字幕。 3、进行功能选择后,还能进行一下按键功能: 确认。 按要求输入所需内容进行用户信息的确认。 再投一注。 再次进入主界面。 返回主界面。 再次进入主界面。 退出系统。 界面显示“@0@0@0@0@0****************感谢使用本系统,欢迎下次再来****************@0@0@0@0@0”字幕。 5、主要算法说明 1、进入主函数后通过if选择调用各个功能函数实现系统要求 2、用户信息录入模块,通过定义结构体数组,和文件写入保存实现。 3、用户信息输出模块,通过直接打印语句选择后输出需要的数据。 4、彩票信息的产生、存取、比较、读取等操作通过选择、循环,及文件的读写等操作依据使用者输入的执行指令运行完成操作。 再次进行功能选择的实现通过switchfor循环和switch语句进行。 6、代码清单及注释 #include #include #include #include voidjiemian()//显示主界面 { printf("\n\n^^^~~~~~~~~~~~~~~~~~~~~~~~~*欢迎进入彩票选购系统*~~~~~~~~~~~~~~~~~~~~~~~~^^^\n"); printf("^^^^*&&&购票需知: 1.不能输入字母2.彩票号码为七位正整数3.谢谢合作&&&*^^^^\n\n"); printf("@1.用户自定义购票\n@2.抽取查看中奖号码及用户中奖情况\n@3.奖金累计查询\n@4.退出系统\n\n"); printf("请选择: \n"); } intwinnum()//随即抽取中奖号码并返回值 { intw; srand(time(0));w=rand()%(10000000-1000000)+(1000000-100000)+(100000-10000)+(10000-1000)+(1000-100)+(100-10)+9; return(w); } intresult(intx,inty)//比较中奖号码与用户购票号码,决定输出结果的条件选择值。 { intn; if(x==y)n=1; elseif(((x/100000)==(y/100000))&&((x/10000)==(y/10000))&&((x/1000)==(y/1000))&&((x/100)==(y/100))&&((x/10)==(y/10)))n=2; elseif(x/100000==y/100000&&x/1000==y/1000)n=3; elsen=0; return(n); } structperson//开辟空间存储用户信息 { charname[10]; intID; intnum; };structpersonp[100]; voidsave()//保存模块程序 { inti,m=3; FILE*fp;//定义文件指针 if((fp=fopen("caipiao.dat","wb"))==NULL)//打开文件并判断是否出错 { printf("██创建文件失败! ██\n\n");//打印出错提示 } for(i=0;i {printf("请输入用户姓名: "); scanf("%s",&p[i].name); printf("请输入您欲选购的七位彩票号码: "); scanf("%d",&p[i].num); printf("\n*********^^^^^^^^\n"); p[i].ID=i; fp=p; if(fwrite(&p[i],sizeof(structperson),1,fp)==0)//向文件写入数据,并判断是否出错 {printf("\n*<*><*>&^已成功确认本操作.^&*<*><*>*\n\n");break;} elseprintf("██向文件输入数据失败! ██\n\n");} fclose(fp);//关闭文件 } voidread()//从文件读取信息模块 { inti,m=100000; FILE*fp;//定义文件指针 if((fp=fopen("caipiao.dat","rb"))==NULL)//打开文件,并判断是否出错 { printf("██出错,请再次确认██");//打印出错提示 getchar(); } for(i=0;i { fread(&p[i],sizeof(structperson),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件 } voidprint()//打印模块 { inti,m=3; read();//调用读取文件函数 printf("购票序号用户名购买的彩票号\n"); for(i=1;i printf("%d%5s%10d",p[i].ID,p[i].name,p[i].num);//打印信息 } main() { structpersonp[100]; intn,nu,i=0,wi,t,m,a; intque(); doublemoney=0; voidprint(); voidsave(); intwinnum(); intresult(); voidsave(); voidjiemian(); for(a=0;a<100000000;a++)//使程序能够不断运行 { jiemian();//进入主界面 scanf("%d",&n);//进行功能选择 wi=winnum();//产生中奖号码 if(n==1)//进入用户购票界面 { printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); i++;//累加购票用户序号 printf("*欢迎购票^^^^^^^^\n\n"); printf("请输入用户姓名: ");//输入用户信息 scanf("%s",&p[i].name); printf("请输入您欲选购的七位彩票号码: "); scanf("%d",&p[i].num); printf("\n*********^^^^^^^^\n"); p[i].ID=i; printf("亲爱的用户: %s\n您的购票用户ID为: %d\n您所选购的彩票号码是: %d\n请确认。 。 。 \n*********^^^^^^^^\n\n",p[i].name,p[i].ID,p[i].num); //输出用户信息并让用户进行确认 printf("@1.确认@2.再投一注@3.返回主界面@4.退出系统\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请选择: "); } if(n==2)//进入中奖号码与中奖情况的查询界面 { printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("*中奖情况查询^^^^^^^^\n"); printf("本期中奖号码为: %d\n",winnum); printf("请输入用户姓名: "); scanf("%s",&p[i].name); printf("请输入用户ID进行查询: "); scanf("%d",&p[i].ID); i=p[i].ID; nu=p[i].num; t=result(nu,wi);//对用户购票号码与中奖号码进行比较并返回条件值 switch(t)//根据比较结果输出结果 { case0: printf("尊敬的用户%s: \n很遗憾您本次并未获奖,感谢您的参与,欢迎下次再来.\n",p[i].name);break; case1: printf("尊敬的用户%s: \n恭喜你中了一等奖,奖金为人民币50000.00元。 \n欢迎下次购买。 \n",p[i].name);break; case2: printf("尊敬的用户%s: \n恭喜你中了二等奖,奖金为人民币5000.00元。 \n欢迎下次购买。 \n",p[i].name);break; case3: printf("尊敬的用户%s: \n恭喜你中了三等奖,奖金为人民币500.00元。 \n欢迎下次购买。 \n",p[i].name);break; } printf("\n@1.确认@2.再投一注@3.返回主界面@4.退出系统\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请选择: "); } if(n==3)//进入用户奖金累计查询界面 { printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("*奖金累计查询^^^^^^^\n"); printf("请输入用户姓名: "); scanf("%s",&p[i].name); printf("请输入用户ID进行查询: "); scanf("%d",&p[i].ID); i=p[i].ID; nu=p[i].num; t=result(nu,wi);//比较中奖号码和用户购票号码并返回条件值 switch(t)累加各次奖金 { case0: money+=0;break; case1: money+=50000.00;break; case2: money+=5000.00;break; case3: money+=500.00;break; } printf("尊敬的用户%s: 您目前的累计奖金为¥%f\n",p[i].name);//输出结果 printf("\n@1.确认@2.再投一注@3.返回主界面@4.退出系统\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请选择: "); } if(n==1||n==2||n==3)//主要功能选择后还可以进行的选择 {scanf("%d",&m); switch(m) { case1: save();print();break; case2: n=1;break; case3: break; case4: printf("@0@0@0@0@0****************感谢使用本系统,欢迎下次再来****************@0@0@0@0@0\n\n");continue; }} if(n==4)printf("@0@0@0@0@0****************感谢使用本系统,欢迎下次再来****************@0@0@0@0@0\n\n");//直接退出系统 } } 七、设计测试说明 主界面测试: 运行系统进入主界面,选择…… 功能选择测试: 1 选择1,进入用户自定义购票页面 2 选择2,进入中奖情况查询页面 3 选择3,进入用户奖金累计查询页面 4 功能选择后的操作测试 1 选择1进行确认: 2 选择2返回主界面再投继续购票: 3 选择3返回主界面: 4 选择4直接结束操作: 八、设计体会 通过本次课程设计,完成一个小型彩票系统,使我认识到自己知识面的不足性和不全面性。 对于系统各个模块的功能勉强可以编的马马虎虎,而将各个模块组合到一起使用,函数相互嵌套调用,这当中的逻辑性和程序的复杂性都是一个很大的挑战,使我从中学会冷静地思考,全面地分析然后有条不紊地进行编程。 对于程序中的问题通过反复不断地调试来改正,有时问题解决不了就需要查资料,XX来解决,通过几天的编程,使我对学习C语言产生了浓厚的兴趣,并喜欢上了编程序运行测试,每一次调试的成功都会在心底踊跃出一种莫名的激动与兴奋,也许这就是成功后的喜悦吧。 通过此次课程设计让我从全局上整体把握地学习了C语言的知识体框架,针对每个部分知识点的掌握都深入研究,可以说打下了扎实的基础,真正地培养了自己的大脑思维和动手实践能力,感触颇多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合性 程序设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)