首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

20231113499_张钰萌_实验二.zip

行业研究 47.79KB 13 需要积分: 1
立即下载

资源介绍:

20231113499_张钰萌_实验二.zip
#include #include #include #include #include long size; //最近一次的流水号 struct logdata{ long logid; //ID char logdate[11]; //日期 char lognote[15]; //备注 double charge; //负支出 正收入 double balance; //余额 };//记录结构 int ichoice() { int mychoice; system("CLS"); //清屏 printf("\n"); printf(" 程序设计与实践 实验(二)个人资金账户管理\n\n"); printf("\n"); printf(" ------Personal Cashbox Management------ 23智能A1张钰萌2024年6月26日\n\n"); printf(" [1] Add a New Cash Log\n"); printf(" [2] List ALL Cash Log\n"); printf(" [3] Query LAST Cash Log\n"); printf(" [4] Update a Cash Log\n"); printf(" [5] Delete a Cash Log\n"); printf(" [0] End program\n"); printf("\n"); printf(" →Enter your Choice:"); scanf("%d",&mychoice); return mychoice; }//ichoice long getLogcount(FILE *cfptr) //获取文件记录总数 { long begin,end,logcount; fseek(cfptr,0L,SEEK_SET);//把cfptr移动到离文件头0个字节处(set文件头处) begin = ftell(cfptr);//获取文件的当前指针位置相对于文件首地址的偏移字节数 fseek(cfptr,size,SEEK_END);//把cfptr移动到离文件尾size个字节处(end文件尾处) end = ftell(cfptr); logcount=(end-begin)/size-1; return logcount; } void AddNewLog(FILE *cfptr) //添加新记录 { struct logdata log,lastlog; long logcount; //input printf("input logdata(FORMAT:XXXX-XX-XX):"); scanf("%s",log.logdate); printf("input lognote:"); scanf("%s",log.lognote); printf("input charge(incharge+ and expense-):"); scanf("%lf",&log.charge); logcount = getLogcount(cfptr); //获取记录数 if(logcount > 0){ fseek(cfptr,size*(logcount-1),SEEK_SET); //fseek函数设置文件指针cfptr的位置(从SEEK_SET开始移动size*(logcount-1)) fread(&lastlog,size,1,cfptr);//lastlog内存块指针,size每个元素大小,1元素个数,cfptr输入 log.logid=lastlog.logid+1; //记录号按顺序是上次的号+1 log.balance=log.charge+lastlog.balance; }else{//如果文件初始,记录数为0 log.logid=1; log.balance=log.charge; } rewind(cfptr);//reset指针cfptr的位置 getch();//等待按下任意键,再继续执行下面的语句 fwrite(&log,sizeof(struct logdata),1,cfptr); //写入 fclose(cfptr);//关闭刷新 返回eof(0) }//add void ListAllLog(FILE *cfptr) //列出所有收支流水账 { struct logdata log; long logcount; logcount = getLogcount(cfptr); if(logcount > 0){//若记录不为空 fseek(cfptr,0L,SEEK_SET); //定位指针到文件开始 fread(&log,size,1,cfptr); //(&)log读取到的位置指针 size一个对象的字节大小 1对象个数 cfptr要读的目标指针 printf("LogID LogDate LogNote Charge Balance\n"); while(!feof(cfptr)){//检测文件结束符,如果文件结束,则返回非0值,否则返回0 printf("%5ld %-12s %-15s %10.2lf %10.2lf\n",log.logid,log.logdate,log.lognote,log.charge,log.balance); fread(&log,size,1,cfptr);//为循环准备,再读一个 }//while 打印 }else{//若记录为空 printf("NO log in file!\n"); }//两种输出情况完毕 }//list all void QueryLastLog(FILE *cfptr) { struct logdata log; long logcount; logcount = getLogcount(cfptr); if(logcount>0){//若有记录 fseek(cfptr,size*(logcount-1),SEEK_SET); //指针定位到有效记录的表尾 fread(&log,size,1,cfptr);//读取最后一条记录((&)log读取到的位置指针 size一个对象的字节大小 1对象个数 cfptr要读的目标指针) printf("The last log is:\n");//开始输出 printf(" LogID:%-6ld\n LogDate:%-11s\n LogNote:%-15s\n",log.logid,log.logdate,log.lognote); printf(" Charge:%-10.2lf\n *Balance:%-10.2lf\n",log.charge,log.balance); }else{//若没有记录 printf("NO log in file!\n"); } } void UpdateLog(FILE *cfptr) //记录更新 { FILE *fp1; struct logdata log[1000],*plog=log,newlog;//plog=log数组的首地址 updatedlog long logcount,logid,i,index=-1; printf("Input LogID:"); scanf("%ld",&logid);//输入目标修改ID logcount=getLogcount(cfptr);//调取记录 rewind(cfptr); fread(plog,size,logcount,cfptr);//copy size主函数定义过 for(i=0;i=0){//有效位置 printf("input logdate(format:XXXX-XX-XX):"); scanf("%s",newlog.logdate); printf("input lognote:"); scanf("%s",newlog.lognote); printf("input Charge:Income+ and expend-:"); scanf("%lf",&newlog.charge); if(strcmp(log[index].lognote,newlog.lognote)!=0)//比较,若不相同,则修改 strcpy(log[index].lognote,newlog.lognote); //char型数组用strcpy //更新日期 if(strcmp(log[index].logdate,newlog.logdate)!=0) strcpy(log[index].logdate,newlog.logdate); //若输入的收支额度改变,则重新计算余额 if(newlog.charge!=log[index].charge){ newlog.balance=log[index].balance-log[index].charge+newlog.charge; //计算新余额 log[index].charge=newlog.charge;//更新收支* log[index].balance=newlog.balance;//更新余额 //当前记录之后的每条记录余额信息更新 for(i=index+1;i=0){//有效位置 for(i=index;i<=logcount-1;i++){//将index之后的数据整体前移 log[i].logid=i+1; strcpy(log[i].logdate,log[i+1].logdate); strcpy(log[i].lognote,log[i+1].lognote); log[i].charge=log[i+1].charge; log[i].balance=log[i-1].balance+log[i].charge; } printf("Now\n"); printf("LogID LogDate LogNote Charge Balance\n"); for(i=0;i

资源文件列表:

20231113499_张钰萌_实验二.zip 大约有3个文件
  1. 20231113499_张钰萌_实验二/p2.cpp.cpp 8.28KB
  2. 20231113499_张钰萌_实验二/p2.dat 240B
  3. 20231113499_张钰萌_实验二/p2.exe.exe 136.6KB
0评论
提交 加载更多评论
其他资源 中国通信英文版期刊LaTeX模板
《中国通信英文版》期刊LaTeX模板,目前保持一年更新一次的频率,上传版本为24年的最新版,里面包含作者投稿模板以及中英文的模板使用指南
植物大战僵尸生态版v0.1.2安装程序
“生态版v0.1.2安装程序”由无脸的程序提供 版权归创作者所有如有侵权联系必删。
Xjad反编译工具(Java源代码反编译工具)
XJad是基于Jad核心的Java源程序反编译软件,内置Jad1.5.8e2。 XJad可处理多个*.class文件,可以处理文件夹内的所有文件,甚至可以处理*.jar文件。 XJad带有多页面文本编辑器,反编译完成后可以直接编辑查看,编辑器支持java语法的高亮显示功能。 XJad是一个纯绿色软件,为使用方便,可以在选项中设置集成到资源管理器中,这样在*.class、*.java、*.jar 文件和目录上随时点击右键都可直接进行操作。   XJad还带有导出当前编辑器中的代码为HTML文件的功能,HTML文件保持代码高亮显示的样式风格。
notepad++ v8.5.7 win系统安装包
最新版本的 Notepad++,并根据你的操作系统(Windows)下载适当的安装程序或便携版。最新的稳定版
和平无后_3.0(1).zip
和平无后_3.0(1).zip
基于Spring Boot MybatisPlus 实现的学生社团管理系统.zip
基于Spring Boot MybatisPlus 实现的学生社团管理系统 项目介绍 选题背景: 浙大城市学院软件架构与应用开发大作业 功能需求: 社团管理(设置社团、查看社团和社团成员、停止社团、社长设置) 活动管理(新增活动、查看活动内容和活动参加成员、删除活动) 社团成员管理(社团招新、审核招新、社团成员退出) 普通同学(个人信息、活动报名、活动查询、社团报名) 公告管理(发布公告、修改公告、删除公告) author: wangYangKai email: 1592980573qq.com 项目结构 主应用入口 文件路径: .srcmainjavacneduzuccStudentAssociationManagementSystemApplication.java 功能: Spring Boot 应用的入口点,配置了 MyBatis 映射接口的扫描、Spring Boot 自动配置和 Swagger 文档生成。 配置类 文件路径: .srcmainjavacneduzuccconfigCrossConfiguration.java
Linux学习笔记12-主频和时钟配置实验程序
Linux学习笔记12---主频和时钟配置实验程序
nvidia-docker20.10.13-rpm
nvidia-docker20.10.13-rpm