ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:27.48KB ,
资源ID:17709055      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-17709055.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(程序设计综合实验报告册.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

程序设计综合实验报告册.docx

1、程序设计综合实验报告册西南交通大学 程序设计综合实验实验地点:实验学期:学生班级:学生学号:学生姓名:任课教师:龚勋信息科学与技术学院2012年4月实验一:ATM机用户操作界面、业务逻辑编写 实验目的及内容1、根据ATM的工作流程编写用户界面,掌握文本用户菜单的编写方法;2、根据ATM的工作流程编写业务罗杰,掌握搭建一个完整的应用系统的方法及软件编程思想。 实验要求1、除提示用户输入的数字外,界面上不能响应、出现任何其他用户输入;2、每个菜单界面独立显示,不要出现多组菜单重叠显示的现象;3、每个业务逻辑可以多次执行,直到用户选择退出业务。 实验步骤及核心代码void main() int bE

2、xit=0; char in; /控制语言的选择 while(!bExit) MainMenu(); in=getch(); system(cls); switch(in) .语言选择 void MainMenu() .void LanguageMenu(int t) int cExit=0; char in; while(!cExit) if(t=1) . /显示中文功能选择菜单 in=getch(); system(cls); switch(in) 中文功能函数的选择 else 同上,只需将中文函数改为英文函数 /中文的查询函数void Query1() printf(=n) printf

3、(“此账户有%.2f元 n,sum); /对sum已初始化 system(pause); system(cls);/中文的存钱函数void Deposit1(float *p) float x; printf(=n); printf( 输入您要存的数目: ); scanf(%f,&x); *p+=x; system(pause); system(cls); /中文的取钱函数void WithDraw1(float *p) float y; int a=1; printf(=n); printf(输入您要取的数目: ); while(a) scanf(%f,&y); if(ysum) print

4、f(n余额不足,按任意键后重新输入n); else *p-=y; a=0; system(pause); system(cls);实验二:进制转换器 实验目的及内容 写一个进制转换器,实现十进制、二进制、十六进制的相互转换 实验要求1、转换要求包括整数和小数;2、提供清晰、有好的用户界面;3、各种转换可以反复多次执行,直到用户选择”退出“按钮。 实验步骤及核心代码void main() .void Mainmenu() ./二进制到十进制和十六进制void BtoDH() int iExit=0; while(!iExit) system(cls); string s1,s2,s3,s; in

5、t i,len; . /输入字符串s s=s1; len=s1.length(); for(i=0;ilen;i+) s3=s1.substr(0,1); /截取从0到1的字符,包括0不包括1 s1=s1.substr(1,s1.length()-1); if(s3=.) s2=s.substr(0,i); /截取0到i的字符 break; if(s2.length()=0) s2=s; s1=; int in=BtoDint(s2); /把二进制数分离开后,调用整数部分 float dou=BtoDdecimal(s1); /调用二进制小数部分 dou=in+dou; string ss1,

6、ss2; ss1=BtoHint(s2,1); ss2=BtoHint(s1,0); . /输出十进制形式和十六进制形式 /二进制整数到十进制整数int BtoDint(string s) int i,ss=0,len,l; len=s.length()-1; l=len; for(i=0;i=len;i+) string ch=s.substr(0,1); s=s.substr(1,s.length()-1); if(ch=1) ss+=pow(2,l); l-; else l-; return ss; /二进制小数到十进制小数float BtoDdecimal(string s) floa

7、t ss=0.0; int i,len,l; len=s.length()-1; l=-1; for(i=0;i=len;i+) string ch=s.substr(0,1); s=s.substr(1,s.length()-1); if(ch=1) ss+=pow(2,i); /pow函数返回值为计算2的i次方 l-; else l-; return ss;/十六进制到二进制和十进制void HtoBD() int iExit=0,len,i; string s,s1,s3,s2,ss1,ss2; while(!iExit) system(cls); couts1; s=s1; len=s

8、1.length(); for(i=0;ilen;i+) s3=s1.substr(0,1); s1=s1.substr(1,s1.length()-1); if(s3=.) s2=s.substr(0,i); break; if(s2.length()=0) s2=s; s1=; ss1=HtoBint(s2,1); ss2=HtoBint(s1,0); int in=BtoDint(ss1); float dou=BtoDdecimal(ss2); dou=in+dou; . /输出二进制形式和十进制形式 string HtoBint(string s,int in) string s1;

9、 int len; len=s.length(); string ret=; for(int i=0;ilen;i+) s1=s.substr(0,1); s=s.substr(1,s.length()-1); if(in=1) ret=HtoBbit(s1)+ret; else ret+=HtoBbit(s1); return ret;/十六进制字符与二进制字符串的互相转换string HtoBbit(string s) string ret; if(s=0) ret=0000; ./二进制到十六进制string BtoHint(string s,int in) int len=s.leng

10、th(); int t=len%4; len=(4-t)%4; while(len-) if(in=1) s=0+s; else s+=0; int num=s.length()/4,i; string ret; for(i=0;inum;i+) string temp=s.substr(0,4); s=s.substr(4,s.length()-4); ret+=BtoHbit(temp); /BtiHbit函数使二进制字符串与十六进制字符互相转换,与上面相似,略写 return ret;/十进制到二进制和十六进制void DtoBH() double num,n2; int iExit=0

11、,len,n1; string s1,s2,s3,s4; while(!iExit) system(cls); coutnumlen; n1=int(num); n2=num-n1; s1=DtoBdecimal(n2,len); s2=DtoBint(n1); s3=BtoHint(s2,1); s4=BtoHint(s1,2); . /输出二进制形式和十六进制形式 /十进制小数到二进制小数string DtoBdecimal(double in,int len) string ret; double p=in; while(len-) p*=2; if(p=1) ret+=1; p-=1.

12、0; else ret+=0; return ret;/十进制整数到二进制整数string DtoBint(int in) if(in=0) return 0; string ret=; int q=in,remain; while(q) remain=q%2; q=q/2; if(remain) ret=1+ret; else ret=0+ret; return ret;实验三:随机数生成、中奖者 实验目的及内容 生成一组均匀分布的伪随机数,根据随机数编写一个抽奖程序 实验要求1、能够根据用户的输入,控制随机数生成的数目,随机数用动态数组保存;2、能够根据用过的输入,控制随机数的范围:比如能

13、够生成一组【a,b】范围内的随机数;3、由用户输入抽奖者人数N;4、为每一个人分配一个代号(类似于名字)和一个随机号码(即抽奖票号,加你控制在1-N之间)并将其打印出来;5、由机器摇号:生成一个在1-N之间的随机数作为中奖号码,查找中奖者,并公布中奖者信息(注:可以有多人同时中奖);6、如果没有对应的中奖者,需要将该号码公布出来,然后重新生成一个中奖号码,知道中奖者存在为止。 实验步骤及核心代码#include#include#includeusing namespace std;static unsigned holdrand=1L;void Lottery(int n);void mysr

14、and(unsigned seed);int myrand(void);int llottery(int num);int n;struct PEOPLE char *name; int number;mem100;void main() coutn; cout=endl; coutInformation of all:endl; Lottery(n);void Lottery(int n) int i,N,k; int num; coutN; mysrand(unsigned)time(NULL); for(i=0;in;i+) k=myrand(); k=k%(N-1)+1; memi.n

15、umber=k; for(i=0;in;i+) coutendli+1: pi,his number is 16)&0x7fff);int llottery(int num) int i,j=0; coutendlThe invalid lottery number is:numendl; for(i=0;in;i+) if(memi.number=num) coutThe invalid is: pi,his number ismemi.numberendl; j+; if(j=0) return 0; else return 1;实验四:插入排序、快速排序 实验目的及内容 1、生成一组随机

16、整数,对该组数据进行排序,采用插入排序法; 2、生成一组随机整数,对该组数据尽心排序,采用快速排序法。 实验要求1、数组长度由用户输入;2、随机数范围在【100,10000】范围内;3、采用插入排序法和快速排序法进行排序;4、根据用户要求,可以实现增序、降序两种排序。 实验步骤及核心代码1、插入排序 int main() . /用户定义数组长度len lottery(len);void lottery(int len) int i; char ch; mysrand(unsigned)time(NULL); /time函数返回1970年1月1日00:00:00起距函数调用时相聚的时间,以秒为单

17、位,在的头文件中 . if(ch=1) swap1(b,len); /升序 else if(ch=2) swap2(b,len); /降序 for(i=0;ilen;i+) coutbiendl; void mysrand(unsigned seed). int myrand(void) /此函数在实验三里有写 . h=h%(10000-100)+100; /控制随机数范围在【100-10000】之内, return h;void swap1(int *c,int n) int i,j,x,k=1; c0=myrand(); for(j=1;j=0&cix) ci+1=ci; i-; ci+1

18、=x; 2、快速排序void main() int A100,n,k; . /用户定义数组长度 int exit=0; char ch; while(!exit) for(int i=0;i=r) return; int i=p; int j=r+1; int x=ap; while(1) while(i=r&a+i=p&a-jx); if(i=j) break; Swap(&ai,&aj); /Swap函数为交换*p与*q的值,略写 if(i=j) j-; ap=aj; aj=x; QuikUp(a,p,j-1); QuikUp(a,j+1,r);实验五:模块计时器、常用排序算性能测试 实验

19、目的及内容设计一组计时函数,封装所有计时函数,采用测试性能函数对快速函数、插入函数、选择排序算法进行性能测试。 实验要求1、计时精确:封装的高精度的计时API函数QueryPerformanceCounter(),可以达到微秒级的精度;2、使用简单:只用在待测试的模块前后加上两个宏BM_START和BM_END,不需要对结果进行计算,也不需要考虑对各个模块结果数据的维护;3、多组测试:最多可以同时实现20个模块的测试,及可以保存20组数据;4、结果输出独立:在系统运行结果时,只需要用一个函数就可以把计时结果保存在一个文本文件里5、对一组数据进行排序;6、数组长度为10000,数组应随机产生;7

20、、为了保证测试数据的稳定,每种排序算法运行10次,计算总的时间 实验步骤及核心代码void main() int i; int retBENCHMARK_MAX_COUNT; /BENCHMARK_MAX_COUNT为模块总数 InitBenchmark(); BMTimerStart(1); /开始计时 for(i=0;i10;i+) sort_quick(a,10000); /快速排序,实验四有写,略写 sort_chr(a,10000); /插入排序,实验四有写,略写 sort_choice(a,10000); /选择排序,略写 BMTimerEnd(1); /结束计时 WriteDat

21、a(1,Test1,D:log.txt); /将数据填入文件中void InitBenchmark() ResetBenchmarkCounters(); /对数组gStats,gEnds,gCounter清零 GetClockFrequent(); /获得机器内部定时时钟频率void BMTimerStart(int iModel) LARGE_INTEGER litmp; QueryPerformanceCounter(&litmp); /提高精度,在头文件windows.h中 gStartsiModel=litmp.QuadPart;void BMTimerEnd(int iModel)

22、 LARGE_INTEGER litmp; QueryPerformanceCounter(&litmp); gEndsiModel=litmp.QuadPart; gCountersiModel+=(gEndsiModel-gStartsiModel)/dfFreq)*1000000000);void WriteData(int TotalCount,string sModel,string path) /open the file and move pointer to the end of the file,需要头文件fstreamofstream pFile(path.data(),i

23、os:app|ios:out); /1 Header string title,s2; string sperator=rnrn=rn; title=Model-+sModel; char temp1100,temp2100; sprintf(temp1,rnIteration Counter:5drn,TotalCount); title+=temp1; /2 Times string s; double gTotal=0; for(int i=0;iBENCHMARK_MAX_COUNT;i+)/将结果写进文件 if(gCountersi=0) continue; sprintf(temp1,Total %d,i); int len=strlen(temp1)/8; /* calculate the number of t s+=

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2