亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? testdb.cpp

?? FastDb是高效的內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)
?? CPP
字號(hào):
//-< TESTDB.CPP >----------------------------------------------------*--------*
// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *
// (Main Memory Database Management System)                          *   /\|  *
//                                                                   *  /  \  *
//                          Created:     10-Dec-98    K.A. Knizhnik  * / [] \ *
//                          Last update: 12-Dec-98    K.A. Knizhnik  * GARRET *
//-------------------------------------------------------------------*--------*
// Sample of database application: supplier/contract/details database
//-------------------------------------------------------------------*--------*

#include <stdio.h>
#include "fastdb.h"

class Contract;

class Detail { 
  public:
    char const* name;
    char const* material;
    char const* color;
    real4       weight;

    dbArray< dbReference<Contract> > contracts;

    TYPE_DESCRIPTOR((KEY(name, INDEXED|HASHED), 
		     KEY(material, HASHED), 
		     KEY(color, HASHED),
		     KEY(weight, INDEXED),
		     RELATION(contracts, detail)));
};

class Supplier { 
  public:
    char const* company;
    char const* location;
    bool        foreign;

    dbArray< dbReference<Contract> > contracts;

    TYPE_DESCRIPTOR((KEY(company, INDEXED|HASHED), 
		     KEY(location, HASHED), 
		     FIELD(foreign),
		     RELATION(contracts, supplier)));
};


class Contract { 
  public:
    dbDateTime            delivery;
    int4                  quantity;
    db_int8                  price;
    dbReference<Detail>   detail;
    dbReference<Supplier> supplier;

    TYPE_DESCRIPTOR((KEY(delivery, HASHED|INDEXED), 
		     KEY(quantity, INDEXED), 
		     KEY(price, INDEXED),
		     RELATION(detail, contracts),
		     RELATION(supplier, contracts)));
};


REGISTER(Detail);
REGISTER(Supplier);
REGISTER(Contract);

void input(char const* prompt, char* buf, size_t buf_size)
{
    char* p;
    do { 
	printf(prompt);
	*buf = '\0';
	fgets(buf, buf_size, stdin);
	p = buf + strlen(buf);
    } while (p <= buf+1); 
    
    if (*(p-1) == '\n') {
	*--p = '\0';
    }
}

int main() 
{
    const int maxStrLen = 256;

    dbDatabase db;

    char buf[maxStrLen];
    char name[maxStrLen];
    char company[maxStrLen];
    char material[maxStrLen];
    char address[maxStrLen];

    int d, m, y;
    int i, n;
    int choice;
    int quantity;
    db_int8 price;

    dbDateTime from, till;

    Contract contract;
    Supplier supplier;
    Detail detail;

    dbQuery q1, q2, q3, q4, q6, q9, q10;
    q1 = "exists i:(contracts[i].supplier.company=",company,")";
    q2 = "name like",name;
    q3 = "supplier.location =",address;
    q4 = between("delivery", from, till),"and price >",price,
	"order by",dbDateTime::ascent("delivery");
    q6 = "(price >=",price,"or quantity >=",quantity,")and delivery.year=1999";
    q9 = "company =",company;
    q10 = "supplier.company =",company,"and detail.name like",name; 

    dbCursor<Detail>   details;
    dbCursor<Contract> contracts;
    dbCursor<Supplier> suppliers;
    dbCursor<Contract> updateContracts(dbCursorForUpdate);
	
    if (db.open("testdb")) {
	while (true) { 
	    printf(
"\n\n    MENU:\n\
1.  Details shipped by supplier\n\
2.  Suppliers of the detail\n\
3.  Contracts from specified city\n\
4.  Expensive details to be delivered in specified period\n\
5.  Foreign suppliers\n\
6.  Important contracts\n\
7.  New supplier\n\
8.  New detail\n\
9.  New contract\n\
10. Cancel contract\n\
11. Update contract\n\
12. Exit\n\n");
	    input(">> ", buf, sizeof buf);
	    if (sscanf(buf, "%d", &choice) != 1) { 
		continue;
	    }
	    switch (choice) { 
	      case 1:
		printf("Details shipped by supplier\n");
		input("Supplier company: ", company, sizeof company);
		if (details.select(q1) > 0) { 
		    printf("Detail\tMaterial\tColor\tWeight\n");
		    do { 
			printf("%s\t%s\t%s\t%f\n", 
			       details->name, details->material, 
			       details->color, details->weight);
		    } while (details.next());
		} else { 
		    printf("No details shipped by this supplier\n");
		}
		break;
	      case 2:
		printf("Suppliers of the detail\n");
		input("Regular expression for detail name: ",name,sizeof name);
		if (details.select(q2) > 0) { 
		    printf("Detail\tCompany\tLocation\tPrice\n");
		    do { 
			n = details->contracts.length();
			for (i = 0; i < n; i++) { 
			    contracts.at(details->contracts[i]);
			    suppliers.at(contracts->supplier);
			    printf("%s\t%s\t%s\t" INT8_FORMAT "\n", 
				   details->name, 
				   suppliers->company, suppliers->location,
				   contracts->price);
			}
		    } while (details.next());
		} else { 
		    printf("No such details\n");
		}
		break;
	      case 3:
		printf("Contracts from specified city\n");
		input("City: ", address, sizeof address);
		if (contracts.select(q3) > 0) { 
		    printf("Detail\tCompany\tQuantity\n");
		    do { 
			printf("%s\t%s\t%d\n", 
			       details.at(contracts->detail)->name, 
			       suppliers.at(contracts->supplier)->company, 
			       contracts->quantity);
		    } while (contracts.next());
		} else { 
		    printf("No contracts with companies in this city");
		}
		break;
	      case 4:
		printf("Expensive details to be delivered in specified period\n");
		input("Delivered after (DD-MM-YYYY): ", buf, sizeof buf);
		if (sscanf(buf, "%d-%d-%d\n", &d, &m, &y) != 3) { 
		    printf("Wrong date\n");
		    continue;
		}
		from = dbDateTime(y, m, d);
		input("Delivered before (DD-MM-YYYY): ", buf, sizeof buf);
		if (sscanf(buf, "%d-%d-%d\n", &d, &m, &y) != 3) { 
		    printf("Wrong date\n");
		    continue;
		}
		till = dbDateTime(y, m, d);
		input("Minimal contract price: ", buf, sizeof buf);
		if (sscanf(buf, INT8_FORMAT, &price) != 1) { 
		    printf("Bad value\n");
		    continue;
		}
		if (contracts.select(q4) > 0) { 
		    printf("Detail\tDate\tPrice\n");
		    do { 
			printf("%s\t%s\t" INT8_FORMAT "\n", 
			       details.at(contracts->detail)->name, 
			       contracts->delivery.asString(buf, sizeof buf),
			       contracts->price);
		    } while (contracts.next());
		} else { 
		    printf("No such contracts\n");
		}
		break;
	      case 5:
		printf("Foreign suppliers\n");
		if (suppliers.select("foreign and length(contracts) > 0") > 0){
		    printf("Company\tLocation\n");
		    do { 
			printf("%s\t%s\n", suppliers->company, 
			       suppliers->location);
		    } while (suppliers.next());
		} else { 
		    printf("No such suppliers\n");
		}
		break;
	      case 6:
		printf("Important contracts\n");
		input("Minimal contract price: ", buf, sizeof buf);
		if (sscanf(buf, INT8_FORMAT, &price) != 1) { 
		    printf("Bad value\n");
		    continue;
		}
		input("Minimal contract quantity: ", buf, sizeof buf);
		if (sscanf(buf, "%d", &quantity) != 1) { 
		    printf("Bad value\n");
		    continue;
		}
		if (contracts.select(q6) > 0) { 
		    printf("Company\tPrice\tQuantity\tDelivery\n");
		    do { 
			printf("%s\t" INT8_FORMAT "\t%d\t%s\n", 
			       suppliers.at(contracts->supplier)->company,
			       contracts->price, contracts->quantity,
			       contracts->delivery.asString(buf, sizeof buf, 
							    "%A %x"));
		    } while (contracts.next());
		} else { 
		    printf("No such contracts\n");
		}
		break;
	      case 7:
		printf("New supplier\n");
		input("Company name: ", company, sizeof company);
		input("Company location: ", address, sizeof address);
		input("Foreign company (y/n): ", buf, sizeof buf);
		supplier.company = company;
		supplier.location = address;
		supplier.foreign = (*buf == 'y');
		insert(supplier);
		break;
	      case 8:
		printf("New detail\n");
		input("Detail name: ", name, sizeof name);
		input("Detail material: ", material, sizeof material);
		input("Detail weight: ", buf, sizeof buf);
		sscanf(buf, "%f", &detail.weight);
		input("Detail color: ", buf, sizeof buf);
		detail.name = name;
		detail.material = material;
		detail.color = buf;
		insert(detail);
		break;
	      case 9:
		printf("New contract\n");
		db.lock(); // prevent deadlock
		input("Supplier company: ", company, sizeof company);
		if (suppliers.select(q9) == 0) { 
		    printf("No such supplier\n");
		    continue;
		}
		input("Detail name: ", name, sizeof name);
		if (details.select(q2) == 0) { 
		    printf("No such detail\n");
		    continue;
		} else if (details.getNumberOfRecords() != 1) { 
		    printf("More than one record match this pattern");
		    continue;
		}
		input("Contract price: ", buf, sizeof buf);
		sscanf(buf, INT8_FORMAT, &contract.price);
		input("Contract quantity: ", buf, sizeof buf);
		sscanf(buf, "%d", &contract.quantity);
		input("Delivered after (days): ", buf, sizeof buf);
		sscanf(buf, "%d", &d);
		contract.delivery = 
		    dbDateTime::currentDate() + dbDateTime(24*d,0);
		contract.supplier = suppliers.currentId();
		contract.detail = details.currentId();
		insert(contract);
		break;
	      case 10: 
		printf("Cancel contract\n");
		input("Supplier company: ", company, sizeof company);
		input("Detail name pattern: ", name, sizeof name);
		if (updateContracts.select(q10) == 0) { 
		    printf("No such contracts\n");
		} else { 
		    updateContracts.removeAllSelected();
		    // Just test rollback
		    input("Really cancel contract (y/n) ? ", buf, sizeof buf);
		    if (*buf != 'y') { 
			printf("Not confirmed\n");
			db.rollback();
			continue;
		    }
		}
		break;
	      case 11:
		printf("Update contract\n");
		input("Supplier company: ", company, sizeof company);
		input("Detail name pattern: ", name, sizeof name);
		if (updateContracts.select(q10) == 0) { 
		    printf("No such contracts\n");
		    break;
		} 		
		do { 
		    printf("Contract with company %s for shipping %d details "
			   "%s for $" INT8_FORMAT " at %s\n",
			   suppliers.at(updateContracts->supplier)->company, 
			   updateContracts->quantity, 
			   details.at(updateContracts->detail)->name,
			   updateContracts->price, 
			   updateContracts->delivery.asString(buf,sizeof buf));
		    input("Change this contract (y/n) ? ", buf, sizeof buf);
		    if (*buf == 'y') { 
			input("New contract price: ", buf, sizeof buf);
			sscanf(buf, INT8_FORMAT, &updateContracts->price);
			input("New number of details: ", buf, sizeof buf);
			sscanf(buf, "%d", &updateContracts->quantity);
			updateContracts.update();
		    }
		} while (updateContracts.next());
		break;
	      case 12:
		input("Do you really want to exit (y/n) ? ", buf, sizeof buf);
		if (*buf == 'y') { 
		    printf("Close database session\n");
		    db.close();
		    return EXIT_SUCCESS;
		}
		break;
	      default:
		printf("Please choose menu items 1..12\n");
		continue;
	    }
	    printf("Press any key to continue...\n");
	    getchar();
	    db.commit();
	}
    } else { 
	printf("failed to open database\n");
	return EXIT_FAILURE;
    }
}














?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最新国产成人在线观看| 亚洲图片激情小说| 亚洲成人综合视频| 懂色av一区二区在线播放| 欧美区在线观看| 亚洲男人的天堂在线aⅴ视频| 久久99精品国产| 欧美日韩在线播放三区| 最新热久久免费视频| 韩日av一区二区| 337p亚洲精品色噜噜噜| 亚洲精品一二三区| 99视频超级精品| 欧美激情中文字幕| 国产精品一区二区男女羞羞无遮挡| 91精品国产色综合久久ai换脸 | 欧美日韩国产一二三| 国产精品成人在线观看| 国产a级毛片一区| 精品1区2区在线观看| 日本美女一区二区三区视频| 91福利精品第一导航| 日韩一区有码在线| 丁香五精品蜜臀久久久久99网站| 欧美精品一区二区高清在线观看| 五月婷婷综合激情| 欧美日韩一区二区三区在线看 | 国产蜜臀97一区二区三区| 久久国产免费看| 日韩欧美国产成人一区二区| 午夜成人在线视频| 777午夜精品视频在线播放| 亚洲午夜在线视频| 欧美色爱综合网| 一区二区三区四区视频精品免费| 99re成人精品视频| 九九精品视频在线看| 欧美一区二区三区在线观看视频 | 免费观看91视频大全| 色综合天天综合狠狠| 国产午夜精品久久久久久久| 日本va欧美va精品| 欧美亚洲精品一区| 亚洲欧洲av在线| 国产精品一区二区x88av| 4438成人网| 亚洲国产精品久久不卡毛片| 91丨国产丨九色丨pron| 国产女人18毛片水真多成人如厕 | 国产精品色呦呦| 国产麻豆精品在线| 91精品蜜臀在线一区尤物| 一区二区三区四区五区视频在线观看| 国产.欧美.日韩| 日韩欧美不卡一区| 蜜桃视频一区二区三区| 91麻豆精品国产自产在线观看一区 | 亚洲综合在线观看视频| 波波电影院一区二区三区| 国产日产欧美一区二区视频| 国产一区二区三区精品视频| 精品久久久久久久一区二区蜜臀| 美国毛片一区二区| 欧美一激情一区二区三区| 婷婷综合五月天| 欧美日韩国产在线播放网站| 亚洲成人精品在线观看| 欧美影视一区在线| 亚洲一区av在线| 欧美日韩国产首页| 丝袜美腿亚洲色图| 777亚洲妇女| 日韩国产欧美三级| 欧美日韩一区二区不卡| 日韩精品五月天| 欧美一三区三区四区免费在线看| 天堂蜜桃一区二区三区| 欧美一区二区久久久| 美女一区二区视频| 精品美女被调教视频大全网站| 免费视频一区二区| 精品久久国产字幕高潮| 韩国女主播一区| 久久在线观看免费| 粉嫩13p一区二区三区| 亚洲天堂2016| 欧美视频日韩视频在线观看| 日韩av电影免费观看高清完整版 | 精品一区二区三区的国产在线播放 | 夜色激情一区二区| 5858s免费视频成人| 狠狠色丁香婷综合久久| 国产区在线观看成人精品| 成人av在线看| 亚洲综合小说图片| 91精品国产91久久久久久最新毛片| 伦理电影国产精品| 欧美国产一区视频在线观看| 97成人超碰视| 性欧美大战久久久久久久久| 精品国产免费一区二区三区香蕉| 国产成人精品三级| 一区二区三区中文字幕| 欧美巨大另类极品videosbest| 久久草av在线| 中文字幕的久久| 欧美日韩一区在线观看| 老司机免费视频一区二区| 国产欧美日韩综合精品一区二区| 99久久99久久综合| 午夜精品一区二区三区免费视频| 精品乱人伦一区二区三区| 国产高清在线精品| 亚洲高清免费观看高清完整版在线观看 | 日韩美女视频一区二区| 91精品国产综合久久小美女| 狠狠色伊人亚洲综合成人| 亚洲色图视频免费播放| 欧美一级黄色录像| 成人av第一页| 蜜臀av性久久久久蜜臀av麻豆| 国产精品欧美精品| 欧美一区二区三区免费在线看| 大白屁股一区二区视频| 亚洲成人av资源| 国产欧美日韩三级| 欧美精品丝袜久久久中文字幕| 国产91精品入口| 天堂久久一区二区三区| 中文字幕乱码一区二区免费| 欧美视频中文一区二区三区在线观看| 国产综合久久久久久鬼色| 一区二区三区精品视频| 久久久久九九视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 日本韩国欧美一区| 国产永久精品大片wwwapp| 亚洲成人资源网| 亚洲人成人一区二区在线观看| 欧美videos大乳护士334| 在线精品视频小说1| 国产精品一二一区| 天天操天天色综合| 亚洲欧洲av另类| 久久网这里都是精品| 欧美日韩专区在线| 不卡的av在线| 国产一区 二区 三区一级| 亚洲成av人片在线观看无码| 国产精品久久久久久户外露出| xnxx国产精品| 欧美疯狂性受xxxxx喷水图片| 色婷婷综合激情| 丁香六月久久综合狠狠色| 麻豆91精品视频| 亚洲第一精品在线| 亚洲欧美偷拍卡通变态| 国产欧美日韩亚州综合| 26uuu另类欧美亚洲曰本| 欧美一区二区播放| 欧美日韩另类一区| 色综合天天性综合| 不卡一区在线观看| 国产乱码精品一区二区三区av| 日本成人在线电影网| 亚洲电影一级片| 亚洲午夜视频在线观看| 一区二区三区日韩| 亚洲视频在线观看一区| 国产精品视频线看| 国产人成一区二区三区影院| 久久综合色婷婷| 精品av综合导航| 欧美不卡在线视频| 日韩欧美国产一二三区| 日韩午夜av一区| 日韩午夜电影av| 精品国产一区二区三区忘忧草| 日韩免费电影网站| 精品欧美一区二区久久| 欧美一级二级三级乱码| 日韩情涩欧美日韩视频| 日韩精品影音先锋| 日韩三级视频中文字幕| 日韩精品一区二区三区三区免费| 日韩欧美中文字幕公布| 欧美变态口味重另类| 精品成a人在线观看| 2019国产精品| 日本一区二区三区电影| 中文字幕一区二区日韩精品绯色| 国产欧美日韩久久| 亚洲视频一二三区| 亚洲一区二区av电影| 午夜私人影院久久久久| 免费成人在线观看| 国产一区二区在线看| 成人三级伦理片| 在线免费观看日本欧美| 欧美精品一级二级三级|