Ejemplo n.º 1
0
void MainDialogImpl::loaded(QString id){
	if(sender()==sys)
	{
		tray->connected();
		disconnect(sender(),0,this,0);
		rtc = new RTorrentClient(parent());
		//update rate value
		connect(rtc,SIGNAL(changeUpRate(double)),
			tray,SIGNAL(getUpRate(double)));
		connect(rtc,SIGNAL(changeDownRate(double)),
			tray,SIGNAL(getDownRate(double)));
		
		//set new rate limit value
		connect(tray,SIGNAL(setUploadRate(int)),
			rtc,SLOT(setUploadRate(int)));
		connect(tray,SIGNAL(setDownloadRate(int)),
			rtc,SLOT(setDownloadRate(int)));

		//update rate limit value
		connect(rtc,SIGNAL(changeUploadRate(int)),
			tray,SIGNAL(getUploadRate(int)));
		connect(rtc,SIGNAL(changeDownloadRate(int)),
			tray,SIGNAL(getDownloadRate(int)));


		//connect update on show/hide event
		connect(tray,SIGNAL(menuShow()),
			rtc, SLOT(fullUpdate()));
		connect(tray,SIGNAL(menuShow()),
			rtc, SLOT(enableAutoUpdate()));
		connect(tray,SIGNAL(menuHide()),
			rtc, SLOT(disableAutoUpdate()));
		
		//-------
		connect(rtc,SIGNAL(updated(QString)),
			this,SLOT(loaded(QString)));
	}
	QSettings settings;
	QString view = settings.value("view","incomplete").toString();
	if(sender()==rtc)
	{
		disconnect(sender(),0,this,0);
		rtc->using_views << view;
		rtc->loadUsingViews();
		connect(rtc->torrents[view],SIGNAL(updated(QString)),
			this,SLOT(loaded(QString)));
		
	}
	if(id == view){
		disconnect(sender(),0,this,0);
		int tc = rtc->torrents[view]->count();
		for(int i = 0; i < tc; i++)
			tray->addTorrent(&((*rtc->torrents[view])[i]));

	}
}
//保存本次数学考试记录
void saveCurrent(int isSub)
{
    //变量定义表
    FILE *currfp;
	uint ItemValue=0;
	uint isRight=0;
	
	//判断题目是否生成过
	if(isDothat[2]!=1)
	{
		scrcls();
		puts("对不起,您还没有答题,不能保存本次考试记录!\n\n[3秒钟后自动返回主菜单]");
		pause();
		menuShow();
	}
	
	//打开文件
	if((currfp=fopen("Score.txt","w"))==NULL)
	{
	    scrcls();
		puts("系统错误:创建文件失败!\n\n[3秒钟后自动返回主菜单]");
		pause();
		menuShow();
	}
	
	//打印头
	fputs("本次考试成绩查询(每题10分,共100分)\n",currfp);
	fputs("==================================================================\n",currfp);
	fputs("题号\t\t题目\t\t\t答案\t\t\t作答\t\t\t得分\n",currfp);
	
	//保存到文件中
	for(;ItemValue<10;ItemValue++)
	{
	    fprintf(currfp,"%2d\t\t%s\t\t%3d\t\t\t%3d\t\t\t%d\n",ItemValue+1,MathItemGroup[ItemValue].Content,MathItemGroup[ItemValue].Value,MathItemGroup[ItemValue].CValue,MathItemGroup[ItemValue].Score);
	    if(MathItemGroup[ItemValue].Score) isRight++;   //正确题目统计
	}
	
	//打印尾
	fputs("==================================================================\n",currfp);
    fprintf(currfp,"总共:10\t正确:%d\t得分:%d\n",isRight,isRight*10);
    
    
    //关闭文件
    fclose(currfp);
    
    if(isSub==254) return ;
    scrcls();
	puts("本次考试成绩已经保存到 Score.txt 文件中!\n\n[3秒钟后自动返回主菜单]");
	pause();
	menuShow();
}
//开始答题
void doWork()
{
	//变量定义表
	uint ItemValue=0;
	int CurrentValue;

	//判断题目是否生成过
	if(isDothat[1]!=1)
	{
		scrcls();
		puts("对不起,题目还没有生成不能进行考试!\n\n[3秒钟后自动返回主菜单]");
		pause();
		menuShow();
	}

	//打印头
	scrcls();
	puts("请开始作答,现在有10道题目可做,请坚持做完!除法只保留整数(每题10分,共100分)\n");

	//出题中
	for(;ItemValue<10;ItemValue++)
	{
	    //存储历史分数
	    MathItemGroup[ItemValue].lastScore=MathItemGroup[ItemValue].Score;
	    MathItemGroup[ItemValue].HValue=MathItemGroup[ItemValue].CValue;
	    
		printf("[题目%2d]: %s \t答案: ",ItemValue+1,MathItemGroup[ItemValue].Content);
		scanf("%d",&CurrentValue);
		MathItemGroup[ItemValue].CValue=CurrentValue;   //保存当前的结果
		if(CurrentValue!=MathItemGroup[ItemValue].Value)
		{
		    MathItemGroup[ItemValue].Score=0;           //如果答错清空当前分数
		}
	}
	
	isDothat[2]=1;		//表示这个项目已经做过了,可以进行下面的项目;
	
	scrcls();
	puts("考试结束,请查看上次分数!\n\n[3秒钟后自动返回主菜单]");
	pause();
	menuShow();
}
//查询所有成绩
void viewAll()
{
    //变量定义表
	uint ItemValue=0;
	uint isRight=0;
	
	
	//判断题目是否生成过
	if(isDothat[1]!=1)
	{
		scrcls();
		puts("对不起,您还没有生成题目,不能查询历史成绩!\n\n[3秒钟后自动返回主菜单]");
		pause();
		menuShow();
	}
	
	viewHistory(254);
	
	//打印头
	
	puts("\n当前成绩查询(每题10分,共100分)");
	puts("=====================================================================");
	puts("题号\t\t题目\t\t答案\t\t作答\t\t得分");
	
	//保存到文件中
	for(;ItemValue<10;ItemValue++)
	{
	    printf("%2d\t\t%s\t\t%3d\t\t%3d\t\t%d\n",ItemValue+1,MathItemGroup[ItemValue].Content,MathItemGroup[ItemValue].Value,MathItemGroup[ItemValue].CValue,MathItemGroup[ItemValue].Score);
	    if(MathItemGroup[ItemValue].lastScore) isRight++;   //正确题目统计
	}
	
	//打印尾
	puts("=====================================================================");
    printf("总共:10\t正确:%d\t得分:%d\n",isRight,isRight*10);
    
    anykey(); //回车继续
    
    scrcls();
	menuShow();
}
//应用程式的主菜单:显示
int menuShow()
{
	//变量定义表
	uint MenuItem=1;

    scrcls();
	
	puts("<=-------------------------------------=>");
	puts("         小 学 数 学 考 试 系 统");
	puts("        Designed by www.fcsys.us.");
	puts("<=-------------------------------------=>");
	puts("       [1]随机生成10数学试题");
	puts("       [2]开始进行本次数学考试");
	puts("       [3]保存本次数学考试记录");
	puts("       [4]查询历史数学考试记录");
	puts("       [5]当次前次考试成绩对比");
	puts("       [6]保存考试成绩到文件中");
	puts("       [7]退出小学数学考试系统");
	puts("<=-------------------------------------=>");
	printf("\n请输入当前的选择项目[1-7限定]:");

	//处理用户输入选项
	scanf("%d",&MenuItem);
	if(MenuItem>7||MenuItem<1)
		menuShow();				//0:控制重新显示菜单
	else
		switch(MenuItem)		//N:控制菜单执行
		{
			case 1:genItem();break;
			case 2:doWork();break;
			case 3:saveCurrent(0);break;
			case 4:viewHistory(0);break;
			case 5:viewAll();break;
			case 6:saveAll();break;
			case 7:exit(0);
		}
	return 0;
}
Ejemplo n.º 6
0
void Menu::menuShowHide()
{
    m_isMenuVisible ? menuHide() : menuShow();
    m_isMenuVisible = !m_isMenuVisible;
}
Ejemplo n.º 7
0
TrayMenu::TrayMenu(QObject *parent)
	: QObject(parent)
{
	
	tray = new QSystemTrayIcon(QIcon(":/img/update.png"),this);
	tray->show();
	//Create menu
	menu = new QMenu(tr("rTorrent client"),0);
	
	//create separator
	

	//add rate control
	QWidget * rate_control = new QWidget(menu);
	QVBoxLayout * vlayout = new QVBoxLayout(rate_control);
	
	// UP SECTION
	QHBoxLayout * hlayout = new QHBoxLayout();
	QSpinBox * spinUp = new QSpinBox(rate_control);
	InfoLabel * lbl_up = new InfoLabel(rate_control);
	QLabel * lbl = new QLabel(rate_control);
	lbl->setPixmap(QPixmap(":/img/up.png"));
	hlayout->addWidget(lbl);
	hlayout->addWidget(lbl_up);
	#if QT_VERSION >= 0x040403
	hlayout->addSpacerItem(new QSpacerItem(40, 20, QSizePolicy::Expanding));
	#endif
	hlayout->addWidget(spinUp);
	

	lbl_up->setText(tr("%1 kb/s"));
	spinUp->setMaximum (10*1024);
	spinUp->setSuffix (tr("kb/s"));
	//spinUp->setPrefix (tr("Up "));
	
	vlayout->addLayout(hlayout);

	//DOWN SECTION
	hlayout = new QHBoxLayout();
	QSpinBox * spinDown = new QSpinBox(rate_control);
	InfoLabel * lbl_down = new InfoLabel(rate_control);
	lbl = new QLabel(rate_control);
	lbl->setPixmap(QPixmap(":/img/down.png"));
	hlayout->addWidget(lbl);
	hlayout->addWidget(lbl_down);
	#if QT_VERSION >= 0x040403
	hlayout->addSpacerItem(new QSpacerItem(40, 20, QSizePolicy::Expanding));
	#endif
	hlayout->addWidget(spinDown);
	

	lbl_down->setText(tr("%1 kb/s"));
	spinDown->setMaximum (10*1024);
	spinDown->setSuffix (tr("kb/s"));
	//spinDown->setPrefix (tr("Down "));
	
	vlayout->addLayout(hlayout);

	//insert control
	QWidgetAction * waction = new QWidgetAction(menu);
	waction->setDefaultWidget(rate_control);
	menu->addAction(waction);

	menu->addSeparator();
	no_torrent = menu->addAction(tr("No torrents"));
	no_torrent->setDisabled(true);
	sep = menu->addSeparator();

	//set new limit rate value
	connect(spinUp,SIGNAL(valueChanged(int)),
		this,SIGNAL(setUploadRate(int)));
	connect(spinDown,SIGNAL(valueChanged(int)),
		this,SIGNAL(setDownloadRate(int)));

	//update limit rate value
	connect(this,SIGNAL(getUploadRate(int)),
		spinUp,SLOT(setValue(int)));
	connect(this,SIGNAL(getDownloadRate(int)),
		spinDown,SLOT(setValue(int)));

	//update rate value
	connect(this,SIGNAL(getUpRate(double)),
		lbl_up,SLOT(setParam(double)));
	connect(this,SIGNAL(getDownRate(double)),
		lbl_down,SLOT(setParam(double)));

	//create settings item
	QAction * settings = menu->addAction(QIcon(":/img/gear.png"),tr("Settings"));
	connect(settings,SIGNAL(triggered(bool)),
		this, SLOT(openSettings(bool)));

	//create status item
	status = new QAction(QIcon(":/img/state2.png"),tr("Disconnected"),menu);
	menu->addAction(status);
	tray->setContextMenu(menu);

	//create exit item
	QAction * exit = menu->addAction(QIcon(":/img/exit.png"),tr("Exit"));


	//connect menu show
	connect(menu,SIGNAL(aboutToShow()),
		this,SIGNAL(menuShow()));
	connect(menu,SIGNAL(aboutToHide()),
		this,SIGNAL(menuHide()));

	//connect exit
	connect(exit,SIGNAL(triggered(bool)),
		this,SIGNAL(exitClicked(bool)));
}
Ejemplo n.º 8
0
void CarPI::_displayMenuShow(int items) {
    emit menuShow(items);
}
void main()
{
	menuShow();					//主菜单显示
}
//随机生成10道四则运算题
void genItem()
{
	//变量定义表
	uint ItemValue=0;
	uint Item1st,Item2nd;
	char Sym[4]={'+','-','*','/'};
	uint SymP;
	
	//随机生成题目
	for(;ItemValue<10;ItemValue++)
	{
		//运算数值生成
		while(1){
			Item1st=rand()%100;
			if(Item1st>0&&Item1st<=30)
				break;
		}										//题目难度限定,数值小于等于30
		while(1){
			Item2nd=rand()%100;
			if(Item2nd>0&&Item2nd<=30)
				break;
		}										//题目难度限定,数值小于等于30

		//运算符生成
		while(1){
			SymP=rand()%10;
			if(SymP>0&&SymP<=3)
				break;
		}				//SymP限定,数值小于等于3

		//表达式构成
		if(Item1st<10)
		{
			MathItemGroup[ItemValue].Content[0]=Item1st+'0';
			MathItemGroup[ItemValue].Content[1]=Sym[SymP];
			
			if(Item2nd<10)
			{
				MathItemGroup[ItemValue].Content[2]=Item2nd+'0';
				MathItemGroup[ItemValue].Content[3]='\0';
			}
			else
			{
				uint Item2nd_f,Item2nd_b;		//数据两位分离
				Item2nd_f=Item2nd/10;			//第一位数字分离
				Item2nd_b=Item2nd%10;			//第二位数字分离

				MathItemGroup[ItemValue].Content[2]=Item2nd_f+'0';
				MathItemGroup[ItemValue].Content[3]=Item2nd_b+'0';
				MathItemGroup[ItemValue].Content[4]='\0';
			}
		}
		else
		{
			uint Item1st_f,Item1st_b;			//数据两位分离
			Item1st_f=Item1st/10;				//第一位数字分离
			Item1st_b=Item1st%10;				//第二位数字分离

			MathItemGroup[ItemValue].Content[0]=Item1st_f+'0';
			MathItemGroup[ItemValue].Content[1]=Item1st_b+'0';
			MathItemGroup[ItemValue].Content[2]=Sym[SymP];

			if(Item2nd<10)
			{
				MathItemGroup[ItemValue].Content[3]=Item2nd+'0';
				MathItemGroup[ItemValue].Content[4]='\0';
			}
			else
			{
				uint Item2nd_f,Item2nd_b;		//数据两位分离
				Item2nd_f=Item2nd/10;			//第一位数字分离
				Item2nd_b=Item2nd%10;			//第二位数字分离

				MathItemGroup[ItemValue].Content[3]=Item2nd_f+'0';
				MathItemGroup[ItemValue].Content[4]=Item2nd_b+'0';
				MathItemGroup[ItemValue].Content[5]='\0';
			}
		}

		//保存结果到结构体
		switch(SymP)
		{
			case 0:MathItemGroup[ItemValue].Value=Item1st+Item2nd;break;
			case 1:MathItemGroup[ItemValue].Value=Item1st-Item2nd;break;
			case 2:MathItemGroup[ItemValue].Value=Item1st*Item2nd;break;
			case 3:MathItemGroup[ItemValue].Value=(double)Item1st/Item2nd;break;
		}

		//题目分数定义
		MathItemGroup[ItemValue].Score=10;
	}
	
	//成功并返回
	isDothat[1]=1;		//表示这个项目已经做过了,可以进行下面的项目;
	scrcls();
	puts("题目已经成功生成,现在可以开始考试\n\n[3秒钟后自动返回主菜单]");
	pause();
	
	menuShow();
}