精华内容
下载资源
问答
  • ## 现在问题是,当用户退出小程序怎么把记录他操作数据的array保存下来,使得后来打开A页面用户可以获取到? ## ## 我尝试过把array放在app.jsglobalData中,但每当用户打开A页面时,看到array一直是...
  • 需求:请输入1-7的数,显示对应星期几,输入0退出程序,输入其他额外的数据提升输入错误请重新输入 #include<stdio.h> int main(int argc,char*argv[]) { //输入1到7的数,对应循环显示星期几,输入0的时候...

    联系写一些小代码,刚开始学习C语言,各位给看看还能怎么优化!
    需求:请输入1-7的数,显示对应星期几,输入0退出程序,输入其他额外的数据提升输入错误请重新输入

    #include<stdio.h>
    int main(int argc,char*argv[])
    {
    	//输入1到7的数,对应循环显示星期几,输入0的时候结束程序
    	int date=0;
    	for(;;)
    	{
    		printf("请输入1-7的数,显示对应星期几,输入0退出程序:\n");
    		scanf("%d",&date);
    		if(date==1)
    			printf("星期一\n");
    		else if(date==2)
    			printf("星期二\n");
    		else if(date==3)
    			printf("星期三\n");
    		else if(date==4)
    			printf("星期四\n");
    		else if(date==5)
    			printf("星期五\n");
    		else if(date==6)
    			printf("星期六\n");
    		else if(date==7)
    			printf("星期日\n");
    		else if(date==0)
    			break;
    		else
    			printf("输入无效,请重新输入:\n");
    	}
    
    }
    

    学习闲暇之余也可以看会小说放松一下心情,推荐一步小说 三寸人间
    星空古剑,万族进化,缥缈道院,谁与争锋天下万物,神兵不朽,宇宙苍穹,太虚称尊青木年华,悠悠牧之,其意欢快,恰似朝阳少年宝乐,心怀梦想,以兵入道,指天摘月仕途多舛,法器克之,灵宝制之,法兵镇之……若皆无果,神兵斩之!蓦然回首,才知……举头三尺已无神明,掌心三寸方是人间。这是耳根继《仙逆》《求魔》《我欲封天》《一念永恒》后,创作的第五部长篇小说《三寸人间
    在这里插入图片描述

    展开全文
  • 找出诡异Bug:数据怎么存不进去

    千次阅读 2015-07-11 09:41:19
     话说,已经有两位做银行系统同学和我说,“文件中写不进去数据程序退出,明明写进去了,结果却是空文件。”这不是一个打击。  做软件,找Bug,有些像打空气,使半天劲,人家就不理你。学计算机人,练...

      带着学生做课程设计。程序一大,课程中做过了小项目,练过了分解动作,一到合起来了,难免还是要乱了分寸。其实,实战的功夫,就是这样出来的。(课程设计指导视频链接(第36课时,3.18 银行系统开发),课程主页在链接,指导文档见链接,示例程序见链接)。
      话说,已经有两位做银行系统的同学和我说,“文件中写不进去数据。程序一退出,明明写进去了,结果却是空文件。”这不是一个小打击。
      做软件,找Bug,有些像打空气,使半天劲,人家就不理你。学计算机的人,练的就是这样的功夫,要学会自己创建线索,找出问题所在。
      话说,出问题的两位同学的程序,框架大体如下:

    int main()
    {
        Bank b;   //创建一个银行对象
        if (pass())    //用pass校验用户
        {
            Bank b;
            b.work();   //完成各种业务
        }
        return 0;
    }
    
    class Bank
    {
        ……
    }
    
    Bank::Bank()
    {
        ifstream infile("account.dat",ios::in);
        if(!infile)
        {
            cerr<<"open error!"<<endl;
            exit(1);
        }
        //下面的代码,将之前发生过的业务数据从文件读入银行对象
    
        infile.close();
    }
    
    Bank::~Bank()
    {
        ofstream outfile("account.dat",ios::out);
        if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。
        {
            cerr<<"open error!"<<endl;
            exit(1);
        }
        //下面的代码,将银行对象中的业务数据写入文件
    
        outfile.close();
        delete p;
    }

      因为数据要在文件里存储,所以,可选的方案是,在构造函数中读文件,在析构函数中写文件。上面的程序就是照这种思路设计的。
      然而,程序退出后,文件就是空的。
      老贺看了也纳闷,写文件的语句中规中矩,然而就是不对。
      仔细审查析构函数中文件的打开方式ios::out,似乎有嫌疑,但排除了。在实际运行的系统中,ios::out的方式不常用,因为这样一打开,也就意味着存在的文件也要重建,用ios::app的更多。
      可是,在这个由大一学生实施的设计中,简化的方案是,将所有的数据读入内存,操作针对内存中的数据,而最后,就是要重建文件,将内存中的全部数据重写一遍。
      几百行的程序,就不可以用眼睛盯着找问题了。单步跟踪,对这样的程序,如果问题具体在哪儿都不清楚,也不是一个好办法。
      析构函数中写文件的部分最可疑。我在析构函数~Bank中加了一句“cout<<"in destructor."<<endl;”。结果发现,最后的,析构函数执行了两次。
      然后,在main函数的return 0;前加了一句“cout<<"end of main"<<endl;”,发现输出的信息是:

    in destructor.
    end of main
    in destructor.

      再看main函数,真相大白了。问题出在main函数中:Bank b出现了两次:一个是属于main函数的局部对象b(前者,第3行),另一个的作用范围,只在if语句的一对花括号内的对象b(后者,第6行)。
     程序初次执行,文件为空,前者执行构造函数,b中保存的是空业务。当用户密码验证成功,会创建后者,自然业务信息也空。当执行完b.work();,会执行后者的析构函数,将这次业务后的业务信息保存在了文件中。文件内容不会是空。
      然而,当程序的执行离开main函数时,其局部的变量b(前者)也要析构,这时就是问题之所在,这个b中的业务信息是空的,文件打开重建后,没有要写入的信息,最后就是空文件了。
      所以,解决的办法,将两个Bank b;,无论前者或后者,去掉一个即可。
      问题解决了,再反思。前述的问题自然不该发生,但这里设计的缺陷也存在。在程序中直接将文件名写定,并且写在构造函数和析构函数中,也就意味着该类的所有对象都用同一个文件(如同Person类中的每个对象都用同一个碗吃饭,多家银行将数据存在一个文件中,太可怕了)。合理的做法是,采取某种机制,不同对象,使用不同的文件。
      当然,对于本文中的问题,就是不该定义两个 Bank b。

    展开全文
  • 比如:我写了一个扫雷的小游戏,...不上传数据到云端情况下可以将数据储存到程序本身吗?该怎么实现? 本人小白一个,求大佬解惑,谢谢!!!</p>
  • //ElemType 为可定义的数据类型,此设为int类型 #define MAXSIZE 100//顺序表可能达到的最大长度 //学生信息的定义: typedef struct { char no[8]; //8位学号 char name[80]; //姓名 int age;//年龄 int sex...
  • 可是使用时候调试一步一步走都是正常,但是一起运行就发现程序崩溃。我是一个初学菜鸟,可能是代码有点乱,麻烦看一下!!! 谢谢各位大佬: ``` // UDPserver.cpp : 实现文件 // #include "stdafx....
  • load:把已经保存的数据文件用load函数重新载入。 quit:退出MATLAB,并返回所有分配的内存到系统中。 怎么高效使用内存 压缩内存的使用 1.仅导入需要的文件大小 2.以块为单位处理数据 3.避免建立较大的临时数组 4....

    内存管理函数

    • emory:显示可用内存
    • hos:显示给工作区分配了多少内存
    • pack:把已经存在的变量保存到磁盘
    • clear:从内存中删除变量
    • save:有选择的把变量保存到磁盘
    • load:把已经保存的数据文件用load函数重新载入。
    • quit:退出MATLAB,并返回所有分配的内存到系统中。

    怎么高效使用内存

    压缩内存的使用

    1.仅导入需要的文件大小
    2.以块为单位处理数据
    3.避免建立较大的临时数组
    4.使用嵌套函数来传递数据

    使用适当的数据存储方式

    • 适当的数据类型
    • 读入文件时选择适当的数据类型(默认读入的按double保存)
    fid=fopen('large_file_of_uint8s.bin','r');
    a=fread(fid,le3,'uint8');
    a=fread(fid,le3,'uint8=>uint8');
    

    -尽可能使用稀疏矩阵(只存储非零元素和它们的位置)

    避免数据碎片状存储

    多用pack()函数

    内存回收

    自己用

    clear Var1,Var2…

    回收。

    或者通过PC的系统和存储硬件来解决“Out of Memory”问题

    程序调试和优化

    使用直接调试法

    • 去掉怀疑语句的分号
    • 在疑问语句附件添加显示某些关键变量的语句、
    • 在程序适当位置添加keyboard,K>> 可以查看或者修改变量的数值。在提示符输入return命令之后继续执行。
    • 利用echo命令,运行程序时在命令窗口逐行显示正在执行的代码。

    遇到更复杂的就需要

    使用Debugger窗口调试

    实际就是M文件编辑器,使用函数折叠和断点设置。会出现k>>,输入想查看值的符号即可查看。

    在命令行窗口调试

    懒的写了😄 一堆函数
    2.调试工具

    MATLAB提供了大量的调试函数供用户使用,这些函数可以通过help指令获得,在MATLAB命令执行窗口输入如下指令:

    >> help debug 
    

    用户便可获得这些函数,这些函数都有一个特点,就是以"db"开头,具体功能和作用如下:

    dbstop     - Set breakpoint                             %设置断点  
        dbclear    - Remove breakpoint                  %清除断点  
            dbcont     - Resume execution                       %重新执行  
            dbdown    - Change local workspace context      %下移本地工作空间内容  
            dbmex     - Enable MEX-file debugging               %使MEX文件调试有效  
            dbstack    - List who called whom                   %列出函数调用关系  
            dbstatus    - List all breakpoints                  %列出所有断点  
            dbstep     - Execute one or more lines              %单步或多步执行  
            dbtype     - List M-file with line numbers          %列出M文件  
            dbup      - Change local workspace context          %上移本地工作空间内容  
            dbquit     - Quit debug mode                        %退出调试模式  
    

    在MATLAB中,这些调试函数都有相应的图形化调试工具,使得程序的调试更加方便、快捷。这些图形化调试工具在MATLAB编译器的"debug"和"Breakpoints"菜单中,以方便调试使用。

    profile

    它可以用来优化我们使用的程序。
    运行方法:

    • desktop-profiler
    • tool -open profiler
    • 在命令行输入:profile viewer
    • 历史命令选择一条语句,单击鼠标右件从菜单中选择Profile Code(对应输入文件位置或命令)

    报告

    报告结果:function name、calls(函数被调用的次数)、total time(总共被调用的时间)、self time(函数自己耗费的时间)

    命令格式

    profile viewer
    profile on
    profile on-detail level
    profile on-history
    profile off
    profile resume
    profile clear

    展开全文
  • 执行这一句时候,输入任意字符都能进入下面操作,怎么改可以只在输入1时候进入系统 2、如何把判断输入字符串或者数值是不是相应进制数加到对应函数体内(如下/* */),如何实现(重新输入)功能? ...
  • 请输入你想删除的数据类型( “A”为基础信息,“C”为流动数据):\n"); scanf("%c", &ki); if (ki == 'A') { printf("请输入你想删除的物品...
  • printf("产生的数据第2位数是%d\n",t); sort-=sort/10; goto begin; } if(y==3) { y=num5%100/10; printf("产生的数据第3位数是%d\n",t); sort-=sort/10; goto ...
  • //打开程序后,要查询以前的数据,要先读入 while(1) { system("cls"); printf("\t\t******************查询********************\n"); printf("\t\t* *\n"); printf("\t\t* 1.按工号查询 *\n"); ...
  • 这是我用二叉哈夫曼树代码改,但是无法实现,首先是叶子节点和节点数没法表示,然后就算自己输入固定节点也无法正确实现,请问怎么实现三叉哈夫曼树呢 #include #include #include #include using namespace ...
  • //以下为栈定义部分,如果用工程建立程序,可以另外启用文件seqstack.h /* 模板顺序栈类seqstack定义说明 */ template <class Type> class seqstack { public: seqstack();//创建一个空栈 seqstack...
  • 看系统结构设计引用关系,现在来说说一下开机时程序自动启动读取数据,如果有进入警戒范围图书时就从屏幕右下角慢慢出现一个窗口往上移,等他全部出现时就停留一段时间再慢慢往下移,之后退出系统。...

         看系统结构的设计的引用关系,现在来说说一下开机时程序自动启动读取数据,如果有进入警戒范围的图书时就从屏幕右下角慢慢出现一个窗口往上移,等他全部出现时就停留一段时间再慢慢往下移,之后退出系统。
         实现效果如下:
        

         先说说一下怎么实现它的动作,用三个Timer控件来确定它的位置,一开始时它的位置是在最右下角我们看不到的地方,timUp控件实现它的位置向上,当它完全显示时timMiddle让它停5秒,之后timBottom让它往下。
         图书信息的显示,用一个FlowLayoutPanel容器控件,来动态的显示放在它里面的Label,在该窗口类的构造函数中我们传入一个图书类Book的集合,再根据该集合中的内容来确定Label的内容和个数。
         要注意的是设置Label控制的背景颜色为透明
         //设置Label背景颜色为透明
         labTitle.BackColor = System.Drawing.Color.FromArgb(0, 240, 240, 240);
         还有,当我们双击该窗口时显示出用户编辑的主界面,双击事件是放在FlowLayoutPanel容器中实现的,但Label控件并没有实现,所以把label控制的双击事件关联到容器的双击事件中
         labTitle.DoubleClick += new System.EventHandler(this.PanelShowBookInfo_DoubleClick);

         具体的实现代码如下,创建工程WarningUI,添加一个窗体类frmWarning.cs

    ContractedBlock.gifExpandedBlockStart.gifCode
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Collections;

    using LibraryHelper.Model;
    using LibraryHelper.EditUI;


    namespace LibraryHelper.WarningUI
    ExpandedBlockStart.gifContractedBlock.gif
    {
        
    public partial class frmWarning : Form
    ExpandedSubBlockStart.gifContractedSubBlock.gif    
    {
            
    //设置一个静态变量来保存窗体变化的高度
            static int hight;

            
    public frmWarning(List<Book> listBook)
    ExpandedSubBlockStart.gifContractedSubBlock.gif        
    {
                InitializeComponent();



                
    //-----------------向窗体添加图书信息---------------------
                int num = listBook.Count;
                
    for (int i = 0; i < num; i++)
    ExpandedSubBlockStart.gifContractedSubBlock.gif            
    {
                    Book book 
    = listBook[i];

                    Label labTitle 
    = new Label();
                    labTitle.Text 
    = book.Title;
                    labTitle.Width 
    = 150;
                    labTitle.ForeColor 
    = System.Drawing.Color.White;
                    
    //设置Label背景颜色为透明
                    labTitle.BackColor = System.Drawing.Color.FromArgb(0240240240);
                    labTitle.Font 
    = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                    labTitle.AutoEllipsis 
    = true;
                    
    //把label控制的双击事件关联到容器的双击事件中
                    labTitle.DoubleClick += new System.EventHandler(this.PanelShowBookInfo_DoubleClick);
                    
    this.PanelShowBookInfo.Controls.Add(labTitle);

                    Label labDayNum 
    = new Label();
                    labDayNum.Text 
    = book.WarningDay + "";
                    labDayNum.ForeColor 
    = System.Drawing.Color.Red;
                    labDayNum.BackColor 
    = System.Drawing.Color.FromArgb(0240240240);
                    labDayNum.Font 
    = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                    labDayNum.Width 
    = 40;
                    
    //把label控制的双击事件关联到容器的双击事件中
                    labDayNum.DoubleClick += new System.EventHandler(this.PanelShowBookInfo_DoubleClick);
                    
    this.PanelShowBookInfo.Controls.Add(labDayNum);
                }



                
    //-------------------控制窗体开始始位置在右下角-----------------------
                
                hight 
    = Screen.PrimaryScreen.Bounds.Height;
                
    this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - 248, hight);

            }


            
    private void frmSendBookMessage_FormClosed(object sender, FormClosedEventArgs e)
    ExpandedSubBlockStart.gifContractedSubBlock.gif        
    {
                Application.Exit();
            }


            
    //使窗体的位置从下面往上起
            private void timUp_Tick(object sender, EventArgs e)
    ExpandedSubBlockStart.gifContractedSubBlock.gif        
    {
                
    if (this.Location.Y > Screen.PrimaryScreen.WorkingArea.Height - 145)
    ExpandedSubBlockStart.gifContractedSubBlock.gif            
    {
                    hight 
    -= 1;
                    
    this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - 248, hight);
                }

                
    else
    ExpandedSubBlockStart.gifContractedSubBlock.gif            
    {
                    timUp.Enabled 
    = false;
                    timMiddle.Enabled 
    = true;
                }

            }


            
    //上升到顶部就停3秒
            private void timMiddle_Tick(object sender, EventArgs e)
    ExpandedSubBlockStart.gifContractedSubBlock.gif        
    {
                timMiddle.Enabled 
    = false;
                timBottom.Enabled 
    = true;
            }


            
    //当在顶部时就往下走
            private void timBottom_Tick(object sender, EventArgs e)
    ExpandedSubBlockStart.gifContractedSubBlock.gif        
    {
                
    if (this.Location.Y < Screen.PrimaryScreen.Bounds.Height)
    ExpandedSubBlockStart.gifContractedSubBlock.gif            
    {
                    hight 
    += 1;
                    
    this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - 248, hight);
                }

                
    else
    ExpandedSubBlockStart.gifContractedSubBlock.gif            
    {
                    timBottom.Enabled 
    = false;
                    
    this.Close();
                }

            }


            
    //当用户双击时就调出用户编辑主界面
            private void PanelShowBookInfo_DoubleClick(object sender, EventArgs e)
    ExpandedSubBlockStart.gifContractedSubBlock.gif        
    {
                timUp.Enabled 
    = false;
                timMiddle.Enabled 
    = false;
                timBottom.Enabled 
    = false;

                
    this.Hide();

                frmLiraryEdit frmEdit 
    = frmLiraryEdit.GetSinglefrmEdit();
                frmEdit.Show();

            }

        }

    }

    转载于:https://www.cnblogs.com/chenzehe/archive/2009/03/17/1414490.html

    展开全文
  • 自动登录原理就是,用户第一登录时会有一个token为null,如果登录成功,那么就在本地存一个token,关掉应用(不是退出登录)再次打开时候,判断token是否正确,如果正确就自动登录。 这里本地存放token使用了...
  • { //此数组内的数据为,da输出对应电压值对应的数字量,0是0V,255是5V 135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,222,213,204,193,182,170...
  • 但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。对于双工信道(可以双向传输信息的信道)每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/...
  • 日本视频转换器

    2011-11-07 16:03:30
    威龙汉化5版在可选参数中有一行是“不破坏最小码率状态而填充数据”,老枯理解是,如果码率过低就填充无意义码(好浪费啊,不过可能是为了兼容性原 因),英文版这一句没有翻译,还是日文。 :-( CQ (固定...
  • 这是我写飞机订票程序,为什么订票时候飞机座位数共用了啊,还有退票时候退比买多也成功了,最后飞机总座位数还增加了。。。麻烦大神教教我怎么改。。。谢谢啦 <code>#include &...
  • 函数可以把大计算任务分解成若干个较小的任务,我们可以基于函数进一步构造程序,而不需要重新编写一些重复代码。 C语言程序一般都由许多小的函数组成。今天一起看一下函数是怎么调用。 用术语来讲,这叫做...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    2.19 程序运行正确,但退出时却“coredump”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22 有没有一种自动方法来跟踪联合哪个域在使用? 枚举 2.23 枚举...
  • /*以下为基础数据结构链表操作实现方法*/ void InsertClose(STATUS* Node); //直接插入到CLose链表末尾 void InsertOpen(STATUS* Node); //直接插入到Open链表末尾 void InsertOpenHead(STATUS* Node); ...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 29 联合 30 2.20 结构和联合有什么区别? 30 2.21 有办法初始化联合吗? 30 2.22 有没有一种自动方法来跟踪联合哪个域在使用? ...
  • 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 29 联合 30 2.20 结构和联合有什么区别? 30 2.21 有办法初始化联合吗? 30 2.22 有没有一种自动方法来跟踪联合哪个域在使用? ...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 166
精华内容 66
关键字:

怎么退出小程序的数据