个人股票管理系统_第1页
个人股票管理系统_第2页
个人股票管理系统_第3页
个人股票管理系统_第4页
个人股票管理系统_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计实验报告 1、课题内容和要求 1、问题描述 该系统要求建立一个时间段内某股民的投资情况管理系统,并具有并排序、查找、计 算、显示等功能。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思 想的应用。 2、功能要求 (1) 股票账户信息应包括:股票代码,股票名称,持仓数目,当前价,涨跌幅,浮动盈 亏,账户总值,剩余资金等。 (2) 需要实现的功能 1) 建立 10 支给定股票的信息结构数组,包括股票代码,股票名称,当期价,涨跌幅 等。并在统计时段以当天的收盘价作为每只股票的当前价进行信息更新和显示 2) 实现用户的投资过程,记录买卖过程 3) 每天更新和显示用户的账户信息 4) 计算并显示给定时间段的盈亏 5) 按盈亏大小进行排序 6) 按股票的代码查询该股票的价格变化 7) 查找收益最大的股票代码 8) 将该时间内每天的账户信息内容存为文件 3、界面友好输入的信息符合逻辑如买入数目必须为 100 的整数倍, 剩余资金不能为负数,不可能有非数字的字符等。 2、需求分析 1、功能需求 系统要求建立一个时间段内某股民的投资情况管理系统,并具 有排序查找计算显示等功能 应以上需求,软件应具有的功能如下 (1) 结构数组的建立:用来存储股票的基本信息 (2) 菜单导航:显示各种功能,包括排序、查找、计算、显 示 (3) 文件的存储和读取 (4) 基本功能的实现 (5) 界面人性化 三、概要设计 个人股票管理系统 显 示 基 本 信 息 交 易 操 作 信 息 统 计 按条 件查 询 信 息 存 储 读 写 盈 亏 计 算 按 盈 亏 排 序 按 代 码 查 询 按 时 间 查 询 按 盈 亏 查 询 信 息 存 入 磁 盘 从 磁 盘 读 取 信 息 显 示 基 本 信 息 信 息 更 新 4、详细设计 /头文件 #include #include #include #include /结构 定义股票 struct Stock char code20;/股票代码 char name10;/股票名称 int volume;/持仓数簓目 double price;/当前价格 double change;/价格变化 double profit;/盈亏 double percent;/涨跌幅 int trade;/交易数目 ; typedef struct Stock Stock; /将十支股票定义为一个结构作为一个单元 /包括账户总值和剩余资金 struct List Stock tenstock3; double funds;/账户总值 double leftfunds;/剩余资金 ; typedef struct List List; /menu函数显示主菜单 void menu() printf(“*欢迎进入股票管理系统!*n“); printf(“*1.显示当前股票信息*n“); printf(“*2.操作交?易*n“); printf(“*3.盈亏相关*n“); printf(“*4.按条件查询*n“); printf(“*0.退出*n“); /第一次进入系统需要手动输入基本信息 void Foundnews(List *p) int i=0; char ch; p-funds=0; printf(“第一次登陆,请手动输入信息:n“); do printf(“第%d支股票代码:n“,i+1); scanf(“%s“, printf(“第%d支股票名称:n“,i+1); scanf(“%s“, do printf(“第%支股票数量:n“,i+1); scanf(“%d“, while(p-tenstocki.volume)%100); /确保股票 数量为100的倍数 printf(“第%支股票价格:n“,i+1); scanf(“%lf“, printf(“第%d股票价格变化:n“,i+1); scanf(“%lf“, printf(“第%d支股票盈亏:n“,i+1); scanf(“%lf“, printf(“第%d支股票涨跌幅n“,i+1); scanf(“%.2f“, p-tenstocki.trade=0; printf(“本次输入是否正确? y/n n“); getchar(); ch=getchar(); getchar(); if(ch=y) (p-funds) +=( (p-tenstocki).volume)*(p- tenstocki).price); printf(“资金%.2fn“,p-funds); i+; while(ileftfunds); p-funds +=(p-leftfunds); for(i=0;itenstocki).code); printf(“名称:%sn“,(p-tenstocki).name); printf(“数量:%dn“,(p-tenstocki).volume); printf(“价格:%.2fn“,(p-tenstocki).price); printf(“剩余资金:%.2fn“,p-leftfunds); printf(“全部资金:%.2fn“,p-funds); /将信息存为文件 void Savefile(List *first,int n) int i,j; FILE *fp; fp=fopen(“F:个人股票管理.txt“,“w“); if(!fp) printf(“文件无法打开n“); exit(1); for(i=0;itenstockj.code,(first+i)-, (first+i)- tenstockj.volume); fprintf(fp,“%Lfn“,(first+i)-tenstockj.price); fprintf(fp,“%Lfn“,(first+i)-tenstockj.change); fprintf(fp,“%Lfn“,(first+i)-fit); fprintf(fp,“%Lfn“,(first+i)-tenstockj.percent); fprintf(fp,“%dn“,(first+i)-tenstockj.trade); fprintf(fp,“%Lfn%Lfn“,(first+i)-funds,(first+i)-leftfu nds); fclose(fp); printf(“存取成功n“); /从文件读取信息 void Readfile(List *first,int n) int i,j; FILE *fp; fp=fopen(“F:个人股票管理.txt“,“r“); if(!fp) printf(“文件无法打开n“); exit(1); for(i=0;itenstockj.code), fscanf(fp,“%Lf“, fscanf(fp,“%Lf“, fscanf(fp,“%Lf“, fscanf(fp,“%Lf“, fscanf(fp,“%d“, fscanf(fp,“%Lf“, fscanf(fp,“%Lf“, fclose(fp); printf(“读取成功nn“); /显示手动输入信息 void Printbase(List *q) int i; for(i=0;itenstocki).code); printf(“名称: %s “,(q-tenstocki).name); printf(“数目:%d “,(q-tenstocki).volume); printf(“价格:%Lf “,(q-tenstocki).price); printf(“价格变化:%Lf “,(q-tenstocki).change); printf(“盈 亏:%Lf “,(q-tenstocki).profit); printf(“涨跌幅%.2f “,(q-tenstocki).percent); printf(“交易数量:%d“,(q-tenstocki).trade); printf(“n“); printf(“资金: %.2f n“,q-funds); printf(“剩余资金: %.2fn“,q-leftfunds); /显示和盈亏有关的操作 /包括按时间查询盈亏和将股票按盈亏大小排序输出 void Aboutprofit(List *q,List *first,int day) int m,n,i,j,choice,index; Stock ten3; Stock temp; do printf(“*1.按时间查询盈亏*n“); printf(“*2.按盈亏大小排序*n“); printf(“*0.返回?*n“); printf(“您的选择?: n“); scanf(“%d“, switch(choice) case 1: printf(“输入您要查询的时间段?:n 从第 “); scanf(“%d“, printf(“天 到第 “); scanf(“%d“, printf(“天? ); if(mday) printf(“超出日期范围“); break; else printf(“盈亏状况?:n“); for(j=0;fit) ; break; case 2:for(i=0;itenstocki.code); strcpy(,(); teni.volume=q-tenstocki.volume; teni.price=q-tenstocki.price; teni.change=q-tenstocki.change; fit=fit; teni.percent=q-tenstocki.percent; teni.trade=q-tenstocki.trade; for(i=0;fit ) index=j; if(index!=i) temp=tenindex; tenindex=teni; teni=temp; printf(“盈亏大小顺序为:n“); for(i=0;ileftfunds=q-leftfunds; (q+1)-funds=0; for(i=0;itenstocki.code,q-tenstocki.code); strcpy(q+1)-,); (q+1)-tenstocki.volume=q-tenstocki.volume; (q+1)-tenstocki.price=0; (q+1)-tenstocki.change=0; (q+1)-fit=0; (q+1)-tenstocki.percent=0; (q+1)-tenstocki.trade=0; for(i=0;itenstocki.change); (q+1)-tenstocki.price=q-tenstocki.price+ (q+1)-tenstocki.change; printf(“股票价格变化依次为: n“); for(i=0;itenstocki.change); printf(“当前股价依次为:n“); for(i=0;itenstocki.code); printf(“股价:%Lf “,(q+1)-tenstocki.price); printf(“股价变化:%Lfn“,(q+1)-tenstocki.change); printf(“nn“); printf(“*1.交易股票*n“); printf(“*2.暂不交易*n“); printf(“*您的选择*n“); scanf(“%d“, switch(choice) /交易股票 case 1: do printf(“输入您要进行交易的股票代码?:n“); scanf(“%s“,a); for(i=0;itenstocki.code) break; if(i=3) printf(“不?存?在这a支股票!n“); else printf(“选择你要进行的操作 n“); printf(“1.买n“); printf(“2.卖n“); scanf(“%d“, switch(j) case 1: do printf(“输入你要买的股票数目?:“); scanf(“%d“, while(tradebuy%100); (q+1)-tenstocki).trade=tradebuy; (q+1)-leftfunds=(q+1)-leftfunds) -(q+1)-tenstocki).price*tradebuy; break; case 2: do printf(“输入你要卖的股票数目:“); scanf(“%d“, while(tradesell%100); (q+1)-tenstocki.trade=-tradesell; (q+1)-leftfunds=(q+1)-leftfunds +(q+1)-tenstocki.price*tradesell; break; (q+1)-tenstocki.volume=q-tenstocki.volume + (q+1)-tenstocki.trade; (q+1)-fit=(q+1)- tenstocki.change) *(q-tenstocki.volume); (q+1)-tenstocki.percent= (q+1)-tenstocki.change)/(q- tenstocki.price)*100 ; printf(“当前股价依次为:n“); for(i=0;itenstocki.code); printf(“股价:%Lfn“,(q+1)-tenstocki.price); printf(“股价变 化:%Lfn“,(q+1)-tenstocki.change); printf(“是否继续交易y/n n“); getchar(); ch=getchar(); getchar(); while(ch=y|ch=Y); printf(“交易完成“); break; /暂时不交易 case 2: break; /计算资金和剩余资金 for(i=0;ifunds=(q+1)-funds + (q+1)- tenstocki.volume) *(q+1)-tenstocki.price); (q+1)-funds=(q+1)-funds +(q+1)-leftfunds; printf(“显示当股票信息“);/显示当前股票信息 Printbase(q+1); /查找相关 /包括按代码查找和查找收益最大的股票 void Searchstock(List *q,List *first) int i,choice; double profit; char a10; do printf(“*1.按代码查询价格变化*n“); printf(“*2.查找收益最大的股票*n“); printf(“*0.返回*n“); printf(“*输入您的选择*n“); scanf(“%d“, switch(choice) case 1: printf(“请输入您要查询的股票代码: n“); scanf(“%s“,a); for(i=0;itenstocki.code) break; if(i=3) printf(“不存在这支股票!n“); else printf(“%s“,a); printf(“这支股票价格变化为:n“); for(first ;firsttenstocki.price); printf(“n“); break; case 2: profit=(q-tenstock0.volume)*(q-tenstock0.change); for(i=1;itenstocki.volume) *(q-tenstocki.change) profit=q-tenstocki.volume *q-tenstocki.change; for(i=0;itenstocki.volume) *(q-tenstocki.change) printf(“收益最大的的股票代码为 :%sn“,q-tenstocki.code); printf(“其收益为: %sn“,profit); break; case 0:break; while(choice); /各种操作的实现 void Runmain(int n,List *p,List *first,int day) int a,b; switch(n) case 1: Printbase(p); break;/显示基本信息 case 2: Tradestock(p); break;/股票买卖 case 3: /和盈亏相关操作 printf(“*1.查询交易前*n“); printf(“*2.查询交易后*n“); printf(“*请选择*n“); scanf(“%d“, if(a=1) Ab

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论