C语言搬山游戏和小明买书报告
- 格式:doc
- 大小:423.50 KB
- 文档页数:9
c 小游戏课程设计报告一、课程目标知识目标:1. 学生能理解并掌握C语言的基本语法和编程结构。
2. 学生能运用C语言编写简单的计算机小游戏,如“猜数字”、“石头剪刀布”等。
3. 学生了解并能使用基本的输入输出函数,进行游戏交互。
4. 学生掌握基本的逻辑运算和条件判断,实现游戏逻辑。
技能目标:1. 学生能够独立进行简单的C语言编程,培养解决问题的能力。
2. 学生通过编写小游戏,提高逻辑思维和算法设计能力。
3. 学生能够运用所学知识,创新设计并实现自己的小游戏。
情感态度价值观目标:1. 学生对计算机编程产生兴趣,培养主动学习和探索的精神。
2. 学生在团队协作中,学会沟通、分享和合作,培养良好的团队精神。
3. 学生通过编程解决实际问题,增强自信心,培养克服困难的勇气。
课程性质:本课程以实践为主,结合理论讲解,使学生在动手实践中掌握C语言编程。
学生特点:六年级学生,具备一定的计算机操作能力,对新鲜事物充满好奇,喜欢动手实践。
教学要求:教师需关注学生的个体差异,提供个性化的指导,鼓励学生创新思考,注重培养学生的实际操作能力和团队协作能力。
通过课程学习,使学生达到预期学习成果,为后续编程学习奠定基础。
二、教学内容1. C语言基础知识:变量、数据类型、运算符、表达式和语句。
- 章节:教材第1章至第3章- 内容:变量定义与赋值,基本数据类型,算术运算符,关系运算符,逻辑运算符,简单的输入输出语句。
2. 控制结构:顺序结构、选择结构和循环结构。
- 章节:教材第4章至第6章- 内容:if语句,switch语句,for循环,while循环,do-while循环。
3. 函数:函数的定义、调用和声明。
- 章节:教材第7章- 内容:函数的基本概念,函数的定义,函数的调用,局部变量和全局变量。
4. 编写小游戏:猜数字、石头剪刀布等。
- 章节:教材实例及拓展- 内容:随机数生成,用户输入处理,逻辑判断,游戏循环设计。
5. 项目实践与团队协作:分组进行项目实践,设计并实现一个小游戏。
中国地质大学(武汉)设计名称:一单挑游戏前言计算机对社会发展所具有的广泛而深远的影响。
人类文化的内涵是随着社会发展而进化的。
在现代信息社会中,计算机已不仅仅是一种工具,而且是一种文化。
信息技术对人类社会进行的全方位渗透,已经形成一种新的文化形态——信息时代的计算机文化。
计算机知识成为当代知识分子结构中不可缺少的重要部分。
C语言是今年来国内外得到迅速推广使用的一种高级语言。
C语言功能丰富,表达能力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的语言特点,因此C语言对我们来说很重要。
设计是一门重要的计算机基础课程,通过学习,学生不仅要掌握高级程序设计语言的知识,更重要的是在实践中逐步掌握程序设计的思想和方法,培养问题求解和语言的应用能力。
此次上机实习,不但要使同学们的程序设计能力上一台阶,同时要提高与程序设计和软件开发有关的各种综合能力。
由于课时和上机时间的仓促,所以我对很多内容还来不及消化,对上机演练十分陌生,还有一些知识遗忘,因而这次程序设计的实习实际上是对我的一次集中的强化练习。
虽然其时间短,任务重,但我们的确达到了此次课程设计的目的。
本次实习得到刘文中老师的指导和帮助,至此表示感谢!目录一、C语言课程设计的目的 (4)二、课程设计报告正文…………………………………………………三、运行与测试报告 (4)四、后记: (5)C语言课程设计报告一、C语言课程设计的目的:进一步消化和巩固已学过的C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具。
根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
在许多常规学科的日常教学中,我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。
实习报告书专业计算机科学与技术系别信息工程系报告题目计算机科学与技术认识实习(C语言)报告人班级指导教师带队教师实习时间实习单位教务处监制目录1 实习目的 (3)2 实习要求 (3)3 实习内容 (3)4 《小超市管理系统》的设计与实现 (4)4.1 设计题目简介 (4)4.2 需求分析 (4)4.3系统模块图 (4)4.4数据结构 (5)4.5数据文件 (5)4.6 系统流程图 (6)4.7 系统的实现 (6)5 《打字母小游戏》的设计与实现 (17)5.1 设计题目简介 (17)5.2 需求分析 (17)5.3系统模块图 (18)5.4数据文件 (18)5.5 系统流程图 (19)5.6 打字母小游戏的实现 (19)6 实习小结 (23)参考文献 (24)1 实习目的首先,通过实习,学会为实际应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,从而能对C语言程序设计这门课能有一个更深刻的理解和认识;再者,实习相对于平时实验课来说,要完成的是一个难度较大的可执行综合性程序,培养处理复杂问题的能力,从而极大的提高编程能力以及撰写文档的能力;并且本实习内容是当前社会最热门且尚处于研究阶段的课题之一,希望能通过实习,实际做到理论和实践紧密结合,同时也为后续课程和毕业设计打下坚实的基础知识。
2 实习要求实习要求每个人从实习项目集合中至少选择2个实习项目并参照相关实习资料独立操作,能正确分析现实生活中的问题,并抽象成数学模型,进行模块分析和编程,认真完成软件设计的全部过程,并完成实习报告。
首先根据所选项目进行需求分析和算法分析,根据项目实现的功能进行数据分析,设计相应的数据结构,同时为贯彻“程序设计=算法+数据结构”的思想,要求学生完成流程图的设计,然后根据流程图写出课程实习代码并上机调试,设计的功能应相对完善,每个学生须独立完成程序构思、基本结构设计、变量设计、函数设计、文件操作等任务。
在设计中要综合运用所学内容,顺利调试通过并运行所编写的程序,最后完成课程实习报告,报告书应图文结合,须包含用户需求分析、系统模块图、流程图、数据结构设计、界面设计、功能模块实现与测试、设计的算法及主要程序代码等内容,并结合自己的实习情况写出实习总结。
C趣味程序百例(24)小明买书76.小明买书小明假期同爸爸一起去书店,他选中了六本书,每本书的单价分别为:3.1,1.7,2,5.3,0.9和7.2。
不巧的是,小明的爸爸只带了十几块钱,为了让小明过一个愉快的假期,爸爸扔然同意买书,但提邮购一个要求,要小明从六本书中选出若干本,使得单价相加所得的和同10最接近。
你能够帮助小明解决这个问题吗?*问题分析与算法设计分析题意,可将题目简化为:从六个数中选出若干个求和,使得和与10的差值最小。
题目中隐含两个问题,其一是怎样从六个数中选出若干个数;其二是求与10的差。
从六个数中选出若干个数实质是从六个数中选出若干个进行组合。
每个数在组合过程中只有两种情况:要么是选中参加求和,要么是没选中不参加求和。
这样就可以使用六重循环对每个数是否参加求和进行全部可能情况的组合。
关于求与10的差值应当注意的是:差值的含义是指差的绝对值。
例如:"9-10=-1"和"11-10=1",但9和11这两者与10的差值都是1。
若认为"9"与"10的差值为-1就错了。
*程序与程序注释#include#includevoid main(){int d[6],m,i,j;long b[63],flag;float c[6],min,x;printf("Please enter the prices of 6 books:");for(i=0;ifor(i=0,min=-1,d[0]=0;d[0]for(d[1]=0;d[1]for(d[2]=0;d[2]for(d[3]=0;d[3]for(d[4]=0;d[4]for(d[5]=0;d[5]{for(flag=0,x=0,j=5;j>=0;j--)/*flag:将六个数的组合用对应的一个十进制位表示 x:对应六个数组合的和*/ {x+=c[j]*d[j]; flag=flag*10+d[j];}x=((x-10>0)? x-10:10-x); /*x: 组合的和与10的差*/if(min{min=x; /*对第一次计算出的差min进行处理*/b[i++]=flag; /*b[]:有相同的min的flag的数组 i:b[]数组的下标*/}else if(min-x>1.e-6) /*对新的min的处理*/{min=x; b[0]=flag; i=1;}else if(fabs((double)x-min)b[i++]=flag; /*对相等min的处理*/}for(m=0;m{printf("10(+ -)%.2f=",min);for(flag=b[m],j=0;flag>0;j++,flag/=10)if(flag%10) /*将b[]中存的标记flag还原为各个数的组合*/if(flag>1) printf("%.2f+",c[j]);else printf("%.2f\n",c[j]);}}*运行结果Please enter the prices of 6 books:3.1 1.7 2.0 5.3 0.9 7.210(+ -)0.10=2.00+0.90+7.2010(+ -)0.10=1.70+2.00+5.30+0.9010(+ -)0.10=3.10+1.70+5.30*思考题可以看出,程序中求六个数所能产生全部组合的算法并不好,使用六重循环进行处理使程序显得不够简洁。
计算机科学与技术专业2019级《程序设计基础课程设计》报告一、课设目标《程序设计基础课程设计》(以下简称本课程设计)是计算机科学与技术专业集中实践性环节之一,是计算机学科基础的第一门重要的实践教学必修课程;是学习完程序设计课程后进行的一次全面的综合练习,其目的是开发一个基于C语言的小型软件项目。
通过本课程设计,使学生加深对程序设计理论和基本知识的理解,了解使用计算机语言进行软件设计与实现的基本方法,提高运用计算机语言解决工程实际问题的能力,探索高校计算机专业人才培养“做中学”新模式、分层次培养、团队合作,以及师傅(学长)带徒弟等现代职业教育的新方法。
同时,通过本课程设计,对于学生进一步学习计算机专业知识、掌握专业实践技能,以及就业将有极其重要的意义。
二、课设要求1.熟练掌握数据类型、控制结构、数组、结构体、函数、文件等知识及其应用。
2.对程序设计基础较好的学生实现分层次培养,本课程设计分为三个层次,一是全体学生都要掌握数组、结构体和文件知识及运用;二是部分学生理解并掌握指针的概念、链表、文件内容3.能够使用熟悉的技术(数组/指针与链表)开发一个小型的应用软件(如,推箱子游戏软件、学生管理软件等)。
4.养成良好的表达、沟通和团队协作那能力,了解软件开发过程(问题描述、分析、设计、软件制作、测试、运行及维护)5.教师和学长积极参与,学生自己选题、自己组队、自我管理,通过书写文档和PPT答辩,实行过程化考核管理。
三、开发环境、开发方法及软件功能描述1.开发工具本实习采用基于Windows或Linux操作系统的C语言编译器(Dev-CPP、VC6.0、Visual StudioCode::Blocks、MinGW、C-Free、GCC等);JDK8.0, Ecliipse2.主要内容本课程设计可选内容有小游戏程序开发和小型信息管理软件开发两种类型,例如双人象棋游戏、学生信息管理、银行信用卡信息管理程序开发等。
C语言程序设计实验报告C语言程序设计实验报告* x在1~1000范围外时的处理 *printf;else{if* x为偶数时,把x变为奇数 *x--;for* x为奇数时,做函数计算 *{n=sushu; * 做判断素数的函数调用 *if* 对素数的处理 *{a=n;* 把素数由大至小存入数组a中 *j++;ifm+=n;* 统计前10个素数之和 *}}if* 当素数个数小于10个时,结果输出 * {for< P>{n=a;printf;printf;}printf;printf;}else for* 当素数个数大于等于10个时,结果输出 * {n=a;printf;ifprintf;else{printf;printf;}}}}测试数据分别输入1000、100、10测试。
运行结果出现问题及解决方法当素数个数小于10时的处理不够完善,考虑不够周全。
把“+2”的处理做的太勉强。
程序过大,不够精简,无用文字太多。
学习耐心与细心不足,如sanf;中的“”经常忘记。
编程思想不够发散,例如如何判断素数,只能想出2种方式(其中1种为参考教科书上内容);在今后学习中应更多的动脑,综合运用所学。
基本功不够,如清屏lrsr 等函数用的不好,有时同样的问题多次犯,给实验课老师带来很大的麻烦。
这说明我的知识不够广,有很多有用但不做考试要求的书中内容没有学好,认识程度不够深刻。
就算以后C语言这门课程结束后,也应多看相关东西,多上机练习,才能真正从本质上提高自己。
物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板知识不够广泛,如VC++6.0等程序,自己试了好一阵也不会用;说明我电脑水平还是不够,自学能力不够。
已会的东西掌握的还是不够好。
实验心得通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。
其间开心过、郁闷过、无奈过、彷徨过……随着实验的胜利成功与实验报告的胜利完成,有点微微的自豪感使人难忘。
Computer programming项目报告题目:模拟购物平台说明:本报告仅供分享交流使用,请勿用于商业用途。
该报告适用于C语言初学者,尤其适合那些第一次作项目报告的初学者。
由于适用该文档而造成的任何损失,本人概不负责,望请自重。
建议:1.该报告中使用的数据结构为结构体数组,有能力的可使用链表;2.推荐添加一个购物车模块以实现多次或批量购买;3.本报告中商品录入模块没有对重复的商品编号进行重复性判断,这可可能会相同的商品编号也能录入,建议添加一个判断。
1.问题描述该项目是对网上购物平台的一个模拟,模拟实现用户的登录注册,账户管理,商品选购以及管理员的后台维护功能。
2.系统功能分解2.1模块结构2.2 程序流程图2.2.1主程序模块2.2.2登录注册模块2.2.2.1登录模块2.2.2.2注册模块2.2.3后台维护模块2.2.3.1商品录入模块2.2.3.2添加删除模块2.2.3.2.1添加商品模块2.2.3.2.2删除商品模块2.2.3.2.2.1按编号删除模块2.2.3.2.2.2按商品名称删除模块2.2.3.3修改商品信息模块2.2.2.4账户管理模块2.2.4.1充值模块2.2.4.2查询信息模块2.2.4.2.1查看基本信息模块2.2.4.2.2查看已购买模块2.2.4.2.3查看已收藏模块2.2.5商品选购模块2.2.5.1查询筛选模块2.2.5.2商品购买模块2.2.5.2.1评价模块2.2.5.3收藏模块3.程序运行和测试商品录入登陆与充值注册查询筛选商品收藏查看已收藏购买查看已购买查看账户信息并修改密码删除商品商品修改4.程序清单#include<stdio.h>#include<string.h>struct sp{char id[20];char name[20];float price;float xy;int kc;int num_pj;int num_gm;int num_sc;};struct yh{char name[20];char code[20];float money;};struct sc{char yh_name[20];char sp_id[20];char sp_name[20];float price;};struct gm{char yh_name[20];char sp_id[20];char sp_name[20];float price;};struct sp sps[1000];struct yh yhs[1000];struct sc scs[1000];struct gm gms[1000];int number=0;int number1=0;int number2=0;int number3=0;char yh_name[20];FILE *yhml=NULL; // ****用户目录文件****FILE *spml=NULL; // ****商品目录文件****FILE *ygm=NULL; // ****已购买文件******FILE *ysc=NULL; // ****已收藏文件******int num[4];void main(){/*函数声明*/void HTWH();void DLZC();int i,choose;FILE *fp1;fp1=fopen("NUMBER.txt","a+");/*打开文件读取数据*/for(i=0;i<4;i++){fread(&num[i],sizeof(int),1,fp1);}fclose(fp1);number=num[0];number1=num[1];number2=num[2];number3=num[3];printf("*******欢迎使用模拟购物平台*******\n");printf("\n");while(1){printf("请输入选择[1]登录注册[2]后台维护[0]退出:");scanf("%d",&choose);if(choose==0)break;switch(choose){case 1:DLZC();break;case 2:HTWH();break;default:printf("**************输入错误**************\n");}}num[0]=number;num[1]=number1;num[2]=number2;num[3]=number3;fp1=fopen("NUMBER.txt","w");/*打开文件读取数据*/for(i=0;i<4;i++){fwrite(&num[i],sizeof(int),1,fp1);}fclose(fp1);}/*************************************登陆注册模块*************************************/ void DLZC(){int choose;int DL();int ZC();while(1){printf("请输入选择[1]登陆[2]注册[0]返回:");scanf("%d",&choose);if(choose==0) break;switch(choose){case 1:DL();break;case 2:ZC();break;default :printf("**************输入有误,请重新输入**************\n");break;}}}/******登陆模块*******/int DL(){char p[20];char q[20];int i,choose;void ZHGL();void SPCZ();yhml=fopen("YHML.txt","a+");/*打开文件读取数据*/for(i=0;i<number1;i++){fread(&yhs[i],sizeof(struct yh),1,yhml);}fclose(yhml);do{printf("请输入用户名:");scanf("%s",p);printf("请输入密码:");scanf("%s",q);for(i=0;i<number1;i++){if((!strcmp(yhs[i].name,p))&&(!strcmp(yhs[i].code,q))){strcpy(yh_name,p);printf("**************登陆成功!**************\n");printf("**************欢迎登陆**************\n");printf("[1]账户管理[2]商品选购[0]返回\n");while(1){printf("请输入选择[1]账户管理[2]商品选购[0]返回:");scanf("%d",&choose);if(choose==0)break;switch(choose){case 1:ZHGL(); break;case 2:SPCZ(); break;default:printf("***********输入错误请重新输入***********\n");break;}}return 0;}}if(i>=number1){printf("用户名或密码错误!\n");return 0;}}while(1);}/*注册模块*/int ZC(){char p[20];char q1[20];char q2[20];int i,choose;void save1();void ZHGL();void SPCZ();yhml=fopen("YHML.txt","a+");/*打开文件读取数据*/for(i=0;i<number1;i++){fread(&yhs[i],sizeof(struct yh),1,yhml);}fclose(yhml);do{printf("请输入用户名:");scanf("%s",p);for(i=0;i<number1;i++){if(!strcmp(yhs[i].name,p)){printf("用户名已存在!\n");printf("**************请重新输入!**************");break;}}if(i>=number1){break;}}while(1);do{printf("请输入密码:");scanf("%s",q1);printf("请输入确认密码:");scanf("%s",q2);if(!strcmp(q1,q2)){strcpy(yhs[number1].name,p);strcpy(yhs[number1].code,q1);yhs[number1].money=0;number1++;save1();strcpy(yh_name,p);printf("**************注册成功!**************\n");printf("**************欢迎进入**************\n");while(1){printf("请输入选择[1]账户管理[2]商品选购[0]返回:");scanf("%d",&choose);if(choose==0)break;switch(choose){case 1:ZHGL(); break;case 2:SPCZ(); break;default:printf("**************输入错误请重新输入**************\n"); break;}}return 0;}else{printf("**************密码不一致,请重新输入!**************\n");}}while(1);}/************************登陆注册模块结束************************************//*********************************后台维护模块**************************************/void HTWH(){char *kl;char kl1[20];int choose;int SPLR();int TJSC();int XG();kl="123456";printf("请输入口令:");scanf("%s",kl1);if(strcmp(kl,kl1)!=0){printf("**************口令错误!**************\n");return 0;}while(1){printf("请输入选择[1]商品录入[2]添加删除商品[3]修改商品信息[0]返回:");scanf("%d",&choose);if(choose==0) break;switch(choose){case 1:SPLR();break;case 2:TJSC();break;case 3:XG();break;default :printf("**************输入有误,请重新输入**************\n");break;}}}/*商品录入模块*/int SPLR(){void save();int i,choose,flag=1;spml=fopen("SPML.txt","a+");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);printf("%-10s %-10s %.2f %4d\n",sps[i].id,sps[i].name,sps[i].price,sps[i].kc);}fclose(spml);printf("**********请输入商品信息***********\n");while(flag==1){printf("请输入商品编号:");scanf("%s",sps[number].id);printf("请输入商品名称:");scanf("%s",sps[number].name);printf("请输入商品价格:");sps[number].price=0.0;scanf("%f",&sps[number].price);printf("请输入商品库存:");scanf("%d",&sps[number].kc);number++;printf("继续商品录入或返回菜单(1/0):");scanf("%d",&choose);do{if(choose==0) {save();flag=0;printf("**************商品录入成功**************\n");spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);printf("%-10s %-10s %.2f %4d\n",sps[i].id,sps[i].name,sps[i].price,sps[i].kc);}fclose(spml);return 0;break;}else if(choose==1) flag=1;else {printf("输入有误,请重新输入([1]继续商品录入[0]返回):");scanf("%d",&choose);printf("\n");}}while(choose!=1);}}/**************************************************************************//*添加删除模块*/int TJSC(){int TJ();int SC();int choose;while(1){printf("请输入选择[1]添加商品[2]删除商品[0]返回:");scanf("%d",&choose);if(choose==0) return -1;switch(choose){case 1:TJ();break;case 2:SC();break;default :printf("***********输入错误,请重新输入************\n");break;}}}/*定义添加函数*/int TJ(){void save();int i,choose,flag=1;spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);}fclose(spml);printf("***********请输入需添加商品信息**********\n");while(flag==1){printf("请输入商品编号:");scanf("%s",sps[number].id);printf("请输入商品名称:");scanf("%s",sps[number].name);printf("请输入商品价格:");sps[number].price=0.0;scanf("%f",&sps[number].price);printf("请输入商品库存:");scanf("%d",&sps[number].kc);number++;printf("继续添加或返回菜单(1/0):");scanf("%d",&choose);do{if(choose==0) {save();flag=0;printf("商品添加成功\n");spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);printf("%-10s %-10s %.2f %4d\n",sps[i].id,sps[i].name,sps[i].price,sps[i].kc);}fclose(spml);return 0;break;}else if(choose==1) flag=1;else {printf("输入有误,请重新输入([1]继续添加[0]返回):");scanf("%d",&choose);printf("\n");}}while(choose!=1);}}/*定义删除函数*/int SC(){int bhsc();int mcsc();int choose;while(1){printf("请输入选择[1]按商品编号删除[2]按商品名称删除[0]返回:");scanf("%d",&choose);if(choose==0) return -1;switch(choose){case 1:bhsc();break;case 2:mcsc();break;default :printf("**************输入错误,请重新输入****************\n");break;}}}/*定义按编号删除函数*/int bhsc(){void save();int i,j,choose,flag=1;int index;char q[20];spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);}fclose(spml);while(flag==1){printf("请输入需删除的商品编号:");/*查找该商品*/scanf("%s",q);for(i=0;i<number;i++){if(!strcmp(sps[i].id,q)){index=i;break;}}if(i<number){for(j=index+1;j<number;j++){sps[j-1]=sps[j];}number=number-1;}else{printf("无此商品!\n");}printf("继续按编号删除或返回菜单(1/0):");scanf("%d",&choose);do{if(choose==0) {save();flag=0;printf("商品删除成功\n");spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);printf("%-10s %-10s %.2f %4d\n",sps[i].id,sps[i].name,sps[i].price,sps[i].kc);}fclose(spml);return 0;break;}else if(choose==1) flag=1;else {printf("输入有误,请重新输入([1]继续按编号删除[0]返回):");scanf("%d",&choose);printf("\n");}}while(choose!=1);}}/*定义按名称删除函数*/int mcsc(){void save();int i,j,choose,flag=1;int index;char q[20];spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);}fclose(spml);while(flag==1){printf("请输入需删除的商品名称:");/*查找该商品*/scanf("%s",q);for(i=0;i<number;i++){if(!strcmp(sps[i].name,q)){index=i;break;}}if(i<number){for(j=index+1;j<number;j++){sps[j-1]=sps[j];}number=number-1;}else{printf("无此商品!\n");}printf("继续按名称删除或返回菜单(1/0):");scanf("%d",&choose);do{if(choose==0) {save();flag=0;printf("商品删除成功\n");spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);printf("%-10s %-10s %.2f %4d\n",sps[i].id,sps[i].name,sps[i].price,sps[i].kc);}fclose(spml);return 0;break;}else if(choose==1) flag=1;else {printf("输入有误,请重新输入([1]继续按名称删除[0]返回):");scanf("%d",&choose);printf("\n");}}while(choose!=1);}}/*************************************************************************************//*修改商品信息模块*/int XG(){void save();int index;char q[20];int i,choose,flag=1;spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);}fclose(spml);while(flag==1){printf("请输入需要修改的商品编号:");/*找到需要修改的商品*/ scanf("%s",q);for(i=0;i<number;i++){if(!strcmp(sps[i].id,q)){index=i;break;}}if(i<number){printf("***********请输入新商品信息************\n");printf("请输入新商品编号:");scanf("%s",sps[index].id);printf("请输入新商品名称:");scanf("%s",sps[index].name);printf("请输入新商品价格:");sps[index].price=0.0;scanf("%f",&sps[index].price);printf("请输入新商品库存:");scanf("%d",&sps[index].kc);}else{printf("无此商品!\n");}printf("继续修改或返回菜单(1/0):");scanf("%d",&choose);do{if(choose==0) {save();flag=0;printf("商品修改成功\n");spml=fopen("SPML.txt","r");/*打开文件读取数据*/for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);printf("%-10s %-10s %.2f %4d\n",sps[i].id,sps[i].name,sps[i].price,sps[i].kc);}fclose(spml);return 0;break;}else if(choose==1) flag=1;else {printf("输入有误,请重新输入([1]继续修改[0]返回):");scanf("%d",&choose);printf("\n");}}while(choose!=1);}}/***********************************************************************************/ /**************************后台维护模块结束*******************************//*********************************账户管理模块***********************************/void ZHGL(){int choose;void CZ();void CXXG();while(1){printf("请输入选择[1]充值[2]查询修改[0]返回:");scanf("%d",&choose);if(choose==0)break;switch(choose){case 1:CZ();break;case 2:CXXG();break;default:printf("**************输入错误**************\n");}}}void CZ(){int i;int index;float m;void save1();yhml=fopen("YHML.txt","r");for(i=0;i<number1;i++)fread(&yhs[i],sizeof(struct yh),1,yhml);fclose(yhml);for(i=0;i<number1;i++){if(strcmp(yh_name,yhs[i].name))i++;else{printf("用户名:%s 用户密码:%s 余额:%.2f\n",yhs[i].name,yhs[i].code,yhs[i].money);index=i;break;}}printf("输入充值金额:");scanf("%f",&m);yhs[index].money=yhs[index].money+m;save1();printf("**************充值成功**************\n");yhml=fopen("YHML.txt","r");for(i=0;i<number1;i++)fread(&yhs[i],sizeof(struct yh),1,yhml);fclose(yhml);for(i=0;i<number1;i++){if(strcmp(yh_name,yhs[i].name))i++;else{printf("用户名:%s 用户密码:%s 余额:%.2f\n",yhs[i].name,yhs[i].code,yhs[i].money);break;}}}void CXXG(){void CKXX();void CKYGM();void CKYSC();int choose;while(1){printf("请输入选择[1]查看账户信息[2]查看已收藏[3]查看已购买[0]返回:");scanf("%d",&choose);if(choose==0)break;switch(choose){case 1:CKXX();break;case 2:CKYSC();break;case 3:CKYGM();break;default:printf("**************输入错误**************\n");}}}void CKXX(){int i;int index;int choose;char s[20];char s2[20];void save1();yhml=fopen("YHML.txt","r");/*用户文件*/for(i=0;i<number1;i++)fread(&yhs[i],sizeof(struct yh),1,yhml);fclose(yhml);for(i=0;i<number1;i++){if(strcmp(yh_name,yhs[i].name))i++;else{printf("用户名:%s 密码:%s 余额:%.2f\n",yhs[i].name,yhs[i].code,yhs[i].money);index=i;break;}}while(1){printf("是否修改密码[1]是[0]否");scanf("%d",&choose);if(choose==0)break;switch(choose){case 1:printf("请输入原密码:");scanf("%s",s);if(strcmp(s,yhs[index].code)){printf("**************输入有误**************\n");break;}else{printf("请输入新密码:");scanf("%s",yhs[index].code);printf("请再输入新密码确认:");scanf("%s",s2);while(strcmp(yhs[index].code,s2)){printf("输入错误,请重新输入\n");printf("请输入新密码:");scanf("%s",yhs[index].code);printf("请再输入新密码确认:");scanf("%s",s2);}save1();printf("**************修改成功**************\n");break;default:printf("**************输入错误**************");break;}}}}void CKYSC(){int i,flag=0;ysc=fopen("YSC.txt","a+");for(i=0;i<number2;i++)fread(&scs[i],sizeof(struct sc),1,ysc);fclose(ysc);for(i=0;i<number2;i++){if(!strcmp(yh_name,scs[i].yh_name)){printf("用户名:%s 商品ID: %s 商品名:%s 价格:%.2f\n",scs[i].yh_name,scs[i].sp_id,scs[i].sp_name,scs[i].price);flag=1;}}if(flag==0)printf("未收藏任何物品!\n");}void CKYGM(){int i,flag=0;ygm=fopen("YGM.txt","a+");for(i=0;i<number3;i++)fread(&gms[i],sizeof(struct gm),1,ygm);fclose(ygm);for(i=0;i<number3;i++){if(!strcmp(yh_name,gms[i].yh_name)){printf("用户名:%s 商品ID: %s 商品名:%s 价格:%.2f\n",gms[i].yh_name,gms[i].sp_id,gms[i].sp_name,gms[i].price);flag=1;}}if(flag==0)printf("未购买任何物品!\n");}/**************************************账户管理结束********************************//***********************************商品操作模块****************************************/void SPCZ(){int choice;void buy();void collection();void search();printf("***********欢迎进入商品操作***********");printf("\n[1]查询筛选操作\n[2]购买商品\n[3]收藏商品\n[0]返回\n请选择:");scanf("%d",&choice);while(choice!=0){if(choice==0) break;switch(choice){case 1: {search();printf("***********欢迎进入商品操作***********");printf("\n[1]查询筛选操作\n[2]购买商品\n[3]收藏商品\n[0]返回\n请选择:");scanf("%d",&choice);break;}case 2: {buy();printf("***********欢迎进入商品操作***********");printf("\n[1]查询筛选操作\n[2]购买商品\n[3]收藏商品\n[0]返回\n请选择:");scanf("%d",&choice);break;}case 3: {collection();printf("***********欢迎进入商品操作***********");printf("\n[1]查询筛选操作\n[2]购买商品\n[3]收藏商品\n[0]返回\n请选择:");scanf("%d",&choice);break;}default: {printf("输入有误,请重新输入:");scanf("%d",&choice);}break;}}}void search(){FILE *spml;int i,choice;spml=fopen("SPML.txt","r");for(i=0;i<number;i++){fread(&sps[i],sizeof(struct sp),1,spml);}fclose(spml);printf("请选择所需功能:\n[1]按名称查询\n[2]按价格区间查询\n[3]按信用区间查询\n[0]返回\n请输入功能编号:");scanf("%d",&choice);while(1){if(choice==0) break;switch (choice){case 1:{{char searchname[200];int k,flag=0;printf("请输入商品准确名称:");scanf("%s",searchname);printf("\n搜索结果\n");for(k=0;k<number;k++){if(strcmp(sps[k].name,searchname)==0){printf("ID:%s 名称:%s 价格:%.2f 信用:%.2f 库存:%d\n",sps[k].id,sps[k].name,sps[k].price,sps[k].xy,sps[k].kc);flag=1;break;}}if(flag==0)printf("您查找的商品不存在。
实验报告1.程序源代码程序1 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大还是小,然后结束游戏。
要求每次运行程序时机器所“想”的数不能都一样。
#include <stdlib.h>#include <stdio.h>#include <time.h>void main(){int input_number;int random_number;srand( (unsigned)time( NULL ) );random_number = rand()%100+1;printf("输入您想猜的0~100之间的数:");scanf("%d",&input_number);if (input_number >= 0 && input_number <= 100){if (input_number == random_number){printf("\nright!");}else if (input_number > random_number){printf("\n您猜的数过大\n");}else{printf("\n您猜的数过小\n");}}else{printf("\n您猜的数应在0~100之间");}}程序2 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。
#include <stdlib.h>#include <stdio.h>#include <time.h>void main(){int input_number;int random_number;int n;srand( (unsigned)time( NULL ) );random_number = rand()%100+1;for(n=1;;n++){printf("输入您想猜的0~100之间的数:");scanf("%d",&input_number);if (input_number >= 0 && input_number <= 100)if (input_number == random_number){printf("\nright!\n");if(n==1){printf("\n您猜了%d次,太牛逼了.\n",n);break;}else if(n>1&&n<6){printf("\n您一共猜了%d次,水平还行.\n",n);break;}else{printf("\n您一共猜了%d次,才猜对,很勉强啊.\n",n);break;}}else if (input_number > random_number)printf("\n您猜的数过大\n");elseprintf("\n您猜的数过小\n");elseprintf("\n您猜的数应在0~100之间");}}程序3 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。