编程中aid
① 数据库表中的主键和外键
主外键的存在是依托两个实体之间的关系而存在的;
比如班级与学生的关系:
一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;
那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?
因为,你想一想班级表内如果放学生那么记录可能就是这样:
1班ID
1班
xx同学id
1班ID
1班
xx同学id
..
这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的;
下面简单给你讲下大概建成的表结构
--建班级表
create
table
class(
classid
int
primary
key,--定义班级ID为主键
classname
varchar(15)
)
--建学生表
create
table
students(
studentid
int
primary
key,--定义学生ID为主键
classid
int
,--外键值,跟班级表classid
属性类型相同
stuname
varchar(20),--学生姓名
---定义外键
foreign
key(classid)
references
class(classid)
--本表classid是基于class表classid的外键
)
---------
如上定义了主外键后,两个表间的关系就是一对多的关系了,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如:
--在班级表为空的情况往学生表插入一条记录是不允许的:
insert
into
students(studentid,classid,stuname)values(1,1,'小明')
系统会抛出异常提示主键表班级表内班级ID不存在这样是不允许插入的;
必须要先往班级表内插入一条记录:
insert
into
class(classid,classname)values(1,'一班')
后才能执行插入前面一条往学生表插入信息的语句..
--------------可了解一些了?真累啊.
② 织梦sql中怎么取得aid,
织梦取得文章的aid是: [field:id/]
tag标签调用代码
{dede:tag row='10'}
<a href='[field:link/]'>[field:tag /]</a>
{/dede:tag}
希望可以帮助到你
程序设计思路:
一、小朋友和苹果都具有多样属性(比如高度、编号、状态等,还可以扩展出姓名,重量等)。所以小朋友和苹果要定义成结构体。
二、人和苹果数量都是手动输入,因此数组大小不确定,要使用动态数组(不使用动态,就得得限制用户输入的大小)。
三、题目要求确保摘到的总数最多,从最矮的小朋友开始摘,因此小朋友的数组要进行排序。
四、递归函数实现摘苹果逻辑,每人在自己够到的范围中随机摘两个(不够就拿1个)。(递归函数每次发现一个可摘取的苹果,有50%概率看中,都没看中,默认摘取最后一个看中的苹果)。
下面是代码(控制台刷新函数中cls仅限window系统运行,其它操作系统,删除或修改):

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<malloc.h>
#define AFR 7//苹果图像的行数
#define AFC 6//苹果图像的行数
#define CFR 5//小朋友图像的行数
#define CFC 6//小朋友图像的行数
typedef struct apple//表示苹果数据的结构体
{
int aid;//苹果编号
int height;//苹果的高度
int status;//0:表示未被摘取。1:表示已被摘取
char aframe[AFR][AFC];//表示苹果的图像
}APPE;
typedef struct childern//表示小孩子的编号
{
int cid;//小孩子的编号
int height;//小孩子的身高
int n;//小孩摘取的苹果数量
char cframe[CFR][CFC];//表示小朋友的图像
APPE **appes;//小孩摘取的苹果结构指针数组
}CHN;
int n,m;//苹果和小朋友的个数,设为全局变量
APPE *setApps();//设置苹果。成功返回结构数组,失败返回NULL
CHN *setChns();//设置小盆友。同上。
int orderChnByHeight(CHN *chns);//对小朋友数组按照身高升序排列
int getApple(APPE *appes,CHN *chns,char (*strInfo)[100]);//递归,模拟小朋友依次选苹果。异常返回-1
int showFrame(APPE *appes,CHN *chns,char (*strInfo)[100]);
int main()
{
int i;
char (*strInfo)[100]=NULL;//用于显示操作流水
APPE *appes=NULL;
CHN *chns=NULL;
appes=setApps();
chns=setChns();
if(orderChnByHeight(chns)==-1)return 1;
srand(time(NULL));
strInfo=(char (*)[100])malloc(sizeof(char *)*m*100);
for(i=0;i<m;i++)strInfo[i][0]=0;
if(!strInfo) return 1;
showFrame(appes,chns,strInfo);
return 0;
}
int showFrame(APPE *appes,CHN *chns,char (*strInfo)[100])
{
static int k=1;
int i,j;
system("cls");
printf(" =============每组图像靠上的数值为高度,靠下的数值为编号============ ");
printf(" =============为确保能拿到最多的苹果,小朋友们按升序排列============ ");
for(i=0;i<AFR;printf(" "),i++)
for(j=0;j<n;j++)
printf("%s ",appes[j].aframe[i]);
printf(" ");
for(i=0;i<CFR;printf(" "),i++)
for(j=0;j<m;j++)
printf("%s ",chns[j].cframe[i]);
printf(" ==================================================================== ");
printf("操作流水: ");
for(i=0;i<m;i++)
printf("%s ",strInfo[i]);
fflush(stdin);
printf("按下任意键进行下一步。。。。。。 ");
getchar();
if(getApple(appes,chns,strInfo)==-1)return -1;
if(k)showFrame(appes,chns,strInfo),k--;
return 1;
}
int getApple(APPE *appes,CHN *chns,char (*strInfo)[100])
{
static int i=0,aflag,cflag;
int j,indexSave;
if(appes==NULL||chns==NULL) return -1;
if(chns[i].n==2)i++;//当前小朋友拿够2个,换下一个小朋友
if(i==m)return 1;//所有人均拿过,结束递归
aflag=0;
for(j=0;j<n;j++)
if(appes[j].status==0) {aflag=1;break;}
if(aflag==0) return 1;//所有苹果均拿完,结束递归
indexSave=-1;
cflag=0;
for(j=0;j<n;j++)
{
if(appes[j].status==0 && appes[j].height<=chns[i].height)
{
cflag=1;
indexSave=j;
if(rand()%2)//每次发现,有50%概率拿取,如所有可拿苹果都没选中,选最后发现的目标
break;
}
}
if(cflag)//小朋友拿起一个苹果的过程
{
appes[indexSave].status=1;
//改变苹果初始图像
sprintf(appes[indexSave].aframe[6]," ");
chns[i].appes[chns[i].n]=&appes[indexSave];
chns[i].n++;
if(chns[i].n==1)
{
//改变小朋友初始图像
sprintf(chns[i].cframe[0]," %c%c/ ",3,1);
sprintf(strInfo[i],"编号%d的小朋友拿取了1个苹果(编号%d) ",chns[i].cid,chns[i].appes[0]->aid);
}
if(chns[i].n==2)
{
//改变小朋友初始图像
sprintf(chns[i].cframe[0]," %c%c%c ",3,1,3);
sprintf(strInfo[i],"编号%d的小朋友拿取了2个苹果(编号%d和编号%d) ",chns[i].cid,chns[i].appes[0]->aid,chns[i].appes[1]->aid);
}
}
if(cflag==0 && chns[i].n==0) sprintf(strInfo[i],"编号%d的小朋友没有能拿到的苹果,非常沮丧! ",chns[i].cid),i++;
if(cflag==0 && chns[i].n==1) i++;
return getApple(appes,chns,strInfo);
}
int orderChnByHeight(CHN *chns)
{
CHN chnTemp;
int i,j;
chnTemp.appes=(APPE **)malloc(sizeof(APPE*)*2);
if(!chnTemp.appes) return -1;
else
{
chnTemp.appes[0]=chnTemp.appes[1]=NULL;
if(chns)
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(chns[i].height>chns[j].height)
chnTemp=chns[i],chns[i]=chns[j],chns[j]=chnTemp;
}
free(chnTemp.appes);
return 1;
}
CHN *setChns()
{
int i;
CHN *chns=NULL;
printf("请输入小朋友的个数:");
scanf("%d",&m);
chns=(CHN *)malloc(sizeof(CHN)*m);
if(!chns) return NULL;
printf("请输入%d个小朋友身高(不超过3位整数): ",m);
for(i=0;i<m;i++)
{
chns[i].cid=i+1;
scanf("%d",&chns[i].height);
chns[i].height=chns[i].height%1000;//超出3位截取
chns[i].n=0;
chns[i].appes=(APPE **)malloc(sizeof(APPE*)*2);
if(!chns[i].appes) return NULL;
chns[i].appes[0]=chns[i].appes[1]=NULL;
//设置小朋友初始图像
sprintf(chns[i].cframe[0]," \%c/ ",1);
sprintf(chns[i].cframe[1]," / \ ");
sprintf(chns[i].cframe[2],"-----");
sprintf(chns[i].cframe[3],"高%3d",chns[i].height);
sprintf(chns[i].cframe[4],"ID%3d",chns[i].cid);
}
return chns;
}
APPE *setApps()
{
int i;
APPE *appes=NULL;
printf("请输入苹果的个数:");
scanf("%d",&n);
appes=(APPE *)malloc(sizeof(APPE)*n);
if(!appes) return NULL;
printf("请输入%d个苹果的高度(不超过3位整数): ",n);
for(i=0;i<n;i++)
{
appes[i].aid=i+1;
scanf("%d",&appes[i].height);
appes[i].height=appes[i].height%1000;//超出3位截取
appes[i].status=0;
//设置苹果初始图像
sprintf(appes[i].aframe[0],"高%3d",appes[i].height);
sprintf(appes[i].aframe[1],"ID%3d",appes[i].aid);
sprintf(appes[i].aframe[2],"-----");
sprintf(appes[i].aframe[3]," %c ",'|');
sprintf(appes[i].aframe[4]," %c ",'|');
sprintf(appes[i].aframe[5]," %c ",'|');
sprintf(appes[i].aframe[6]," %c ",3);
}
return appes;
}
④ java+my sql问题:以下是数据库中的两个表的属性行,分别是AID BID 和C
好吧,我帮你写下。代码如下:
SELECT a.AID,b.C FROM A a,B b WHERE a.BID=b.BID
你自己参考的写下
⑤ 想学习编程~~~~~~~~~!!~~~\####
学习编程,从何入手?
如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧!
方案一 Basic语言 & Visual Basic
优点
(1)Basic 简单易学,很容易上手。
(2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。
(3)众多的控件让编程变得象垒积木一样简单。
(4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。
缺点
(1)Visual Basic 不是真正的面向对象的开发文具。
(2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。
(3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。
综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。
方案二 Pascal语言 & Delphi
优点
(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。
(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。
(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。
(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。
缺点
Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。
综述: 方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。
方案三 C语言 & Visual C++
优点
(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。
(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。
(3)VC是微软制作的产品,与操作系统的结合更加紧密。
缺点
对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它的过于专业使得一般的编程爱好者学习起来会有不小的困难。
综述: VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。
方案四 C++语言 & C++ Builder
优点
(1)C++语言的优点全部得以继承。
(2)完全的可是化。
(3)极强的兼容性,支持OWL、VCL和MFC三大类库。
(4)编译速度非常快。
缺点
由于推出的时间太短,关于它的各种资料还不太多。
综述:我认为C++ Builder 是最好的编程工具。它既保持了C++语言编程的优点,又做到了完全的可视化。
方案五 SQL语言 & Power Builder
对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,PowerBuilder也许是最好的数据库开发工具。各种各样的控件,功能强大的PowerBuilder语言都会帮助你开发出自己的数据库应用程序。
【汇编语言编程工具】
QUOTE:
Visual ASM 1.0
http://hnpy.onlinedown.net/down/VisulASMSetup.zip
51汇编集成开发环境 V2.5.0
http://www.bjdown.com/down.asp?id=35407&no=1
MASM
http://bbs.cpcw.com/attachment.php?aid=128300
Emu8086 v3.07 [2.43M]
http://cnc.winzheng.com/softview/SoftView_23319.htm
KeyGen:
http://bbs.cpcw.com/attachment.php?aid=140072
参考资料:http://biancheng.cc.topzj.com/viewthread.php?tid=83587&fpage=1
⑥ C语言编程——发牌洗牌模拟,求帮助
实现了2副牌的发牌,和每个人的牌和底牌
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
struct CARD //牌
{
char suit[10]; /*花色*/
char face[10]; /*牌面*/
};
enum { posA, posB, posC, posD};//定义好每个人的位置
struct Postion
{
struct CARD getcard[25];//每人获得的牌
};
struct Postion postion[4];//分配四个位置
struct CARD leftCard[8]; //底牌
struct CARD card[54]; //54张牌
char *suit[]={"Spades","Hearts","Clubs","Diamonds"};
char *face[] = {"A","2","3","4","5","6","7","8","9",
"10","jack","Queen","King"};
/* 函数功能:将52张牌的顺序打乱,
函数参数:结构体数组wCard,表示52张牌
函数返回值:无
*/
void Shuffle(struct CARD *wCard)
{
int i,j;
struct CARD temp;
for (i=0; i<54; i++)
{
j=rand()%54;
temp=wCard[i];
wCard[i]=wCard[j];
wCard[j]=temp;
}
}
/*函数功能:发牌结果
函数参数:结构体数组wCard,表示有54张牌
函数返回值:无
*/
void Deal(struct CARD *wCard)
{
int i,aidx=0,bidx=0,cidx=0,didx=0;
Shuffle(card);//将牌打乱
/*************发第一副牌,只发50张,分别分给A,B,C,D四个位置 4张留底**************/
// 第一次发完50张后,A,B多一张,所以下面第二次让C,D排在前面,两次发完刚好各40张 */
for (i=0; i<50; i++)//发牌数
{
// printf("%10s %5s\n", wCard[i].suit, wCard[i].face);
if(i%4==0)
postion[posA].getcard[aidx++]=wCard[i];
else if(i%4==1)
postion[posB].getcard[bidx++]=wCard[i];
else if(i%4==2)
postion[posC].getcard[cidx++]=wCard[i];
else if(i%4==3)
postion[posD].getcard[didx++]=wCard[i];
}
/**********剩下的四张作为底牌*********/
leftCard[0]=wCard[i++];
leftCard[1]=wCard[i++];
leftCard[2]=wCard[i++];
leftCard[3]=wCard[i++];
Shuffle(card);//再次将牌打乱
/*************发第二副牌,也只发50张,分别分给A,B,C,D四个位置,4张留底,一共8张底**************/
for (i=0; i<50; i++)//发牌数
{
// printf("%10s %5s\n", wCard[i].suit, wCard[i].face);
if(i%4==0)
postion[posC].getcard[cidx++]=wCard[i];
else if(i%4==1)
postion[posD].getcard[didx++]=wCard[i];
else if(i%4==2)
postion[posA].getcard[aidx++]=wCard[i];
else if(i%4==3)
postion[posB].getcard[bidx++]=wCard[i];
}
/**********剩下的四张作为底牌,这样就一共为8张底牌*********/
leftCard[4]=wCard[i++];
leftCard[5]=wCard[i++];
leftCard[6]=wCard[i++];
leftCard[7]=wCard[i++];
}
/* 函数功能:将52张牌按黑桃、红桃、草花、方块花色顺序,面值按A~K顺序排列
函数参数:结构体数组wCard,表示不同花色和面值的52张牌
指针数组wFace,指向面值字符串
指针数组wSuit,指向花色字符串
函数返回值:无
*/
void FillCard(struct CARD wCard[],char *wSuit[], char *wFace[])
{
int i;
for (i=0; i<52; i++)
{
strcpy(wCard[i].suit, wSuit[i/13]);
strcpy(wCard[i].face, wFace[i%13]);
}
// wCard[53].face="Big"; //大小王
strcpy(wCard[52].suit, "Small");
strcpy(wCard[52].face, "ghost");
strcpy(wCard[53].suit, "Big");
strcpy(wCard[53].face, "ghost");
}
void print(char ch)//输出牌
{
int i;
switch(ch)
{
case 'A': for(i=0; i<25; i++)
{
printf("%10s %5s\n", postion[posA].getcard[i].suit, postion[posA].getcard[i].face);
}
break;
case 'B': for(i=0; i<25; i++)
{
printf("%10s %5s\n", postion[posB].getcard[i].suit, postion[posB].getcard[i].face);
}
break;
case 'C': for(i=0; i<25; i++)
{
printf("%10s %5s\n", postion[posC].getcard[i].suit, postion[posC].getcard[i].face);
}
break;
case 'D': for(i=0; i<25; i++)
{
printf("%10s %5s\n", postion[posD].getcard[i].suit, postion[posD].getcard[i].face);
}
break;
}
}
void outputLeftCard()//输出底牌
{
int i;
for(i=0; i<8; i++)
printf("%10s %5s\n", leftCard[i].suit, leftCard[i].face);
}
int main()
{
char pos;
srand(time(NULL));
FillCard(card,suit,face);
//Shuffle(card);
Deal(card);
printf("Please choose your position(A、B、C、D):");
scanf("%c", &pos);
print(pos);//输出你所在位置的牌
/**********下面输出的是,除了你之外其他人的牌**********/
if(pos !='A')
{
printf("A:\n");
print('A');
}
if(pos !='B')
{
printf("B:\n");
print('B');
}
if(pos !='C')
{
printf("C:\n");
print('C');
}
if(pos !='D')
{
printf("D:\n");
print('D');
}
printf("底牌为:\n");
outputLeftCard();//输出底牌
return 0;
}
⑦ 网址中的sid和aid以及两者之后的东西都是什么意思
sid就是你的密码所编译成的md5,sid码就如同你的密码。而aid好像就是论坛栏目的代码。如灌水专区的aid=1553,就说明灌水专区的栏目id是1553.
满意请采纳
⑧ 谁能讲解一下这句PHP语言是什么意思
/plus/ad_js.php?aid=2
是一个地址
就这个<script></script>而言
/plus/ad_js.php?aid=2 是这个脚本的地址
其中 aid 是参数的名称,2是这个参数的值。
在网站根目录下的 plus 子目录中,文件名为 ad_js.php。
通常脚本的地址是 *.js,但是在有些情况下也可以是一个动态的网址,只要该网址向浏览器输出的是合法的 js 代码就行了。
比方以上的这个地址的代码是
<?php
echo('alert("hello world!")');
?>
就是一个合法的js代码
类似的ASP/JSP都可以作为script的地址
⑨ 编程猜数字游戏
#include<stdio.h>
#include<time.h>
#include<math.h>
#define MAXTIMES 8
#define winer 1
#define loser 0
int main()
{
int aid[4],num[4],i,j,times,key,key2,A,B;
char ch;
time_t now;
Initialize:now=time(0);
srand(now);
aid[0]=(rand()+90)%10;/*生成目标数组*/
delay(20);
aid[1]=(rand()+90)%10;
delay(20);
aid[2]=(rand()+90)%10;
delay(20);
aid[3]=(rand()+90)%10;
for(i=0;i<4;i++) /*判断是否产生相同的数字*/
{for(j=0;j<4;j++)<br/> {if((i!=j)&&(aid==aid[j]))<br/> goto Initialize;<br/> }
}
printf(" ");
times=1;
while(times<=MAXTIMES) /*程序主体部分*/
{
key=0;
key2=0;
printf("NO.%d: Please input 4 different int numbers to play! ",times);
scanf("%d,%d,%d,%d",&num[0],&num[1],&num[2],&num[3]);
for(i=0;i<4;i++) /*判断所输数字是否合法则*/
{
if(!((num<=9)&&(num>=0)))
{
printf(" Error!The numbers you input must be int numbers which from 0 to 9 ");
key=1;
break;
}
}
if(key==1)
continue;
for(i=0;i<4;i++) /*判断是否输入了相同的数字*/
{
for(j=i+1;j<4;j++)
{
if(num==num[j])
{printf(" Error!The numbers you input must be different! ");<br/>key2=1;<br/>}
break;
}
}
if(key2==1)
continue;
A=0;
B=0;
for(i=0;i<4;i++) /*比较两组数字*/
{
if(num==aid)
A++;
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(num==aid[j])
B++;
}
}
B=B-A;
printf(" A%dB%d ",A,B);
if(A==4) /*游戏成功,提示并返回*/
{
printf("Congratulations! ");
printf("Press any key to exit.! a");
getch();
return(winer);
}
⑩ assistance、aid、help的区别
help通常表示"帮助"的意思,意义非常广泛,但是大部分可以用help的地方不可以用aid,
我们通常说I can help you ,但决不能说I can aid you ,
别人寻求你的帮助是说can you help me,而决不说 can you aid me
从英文习惯来讲,aid这个词真正的含义是"援助,支援"的意思,从字面上就可以看出,aid比较正式,当别人需要你help的时候,也许只是举手之劳,而当别人要求aid的时候,那情况通常要重要的多,形势也重要和严峻的多,通常要伴随着比help大的多的体力,经济等等方面的付出,所以,当我们说international aid时,就一定会伴随着大量的人力,物力和财力的消耗...
assist要比help正式的多, 我们通常用help来表示" 通过某人的帮助,让某事变得更容易,更简单", 而assist通常更强调"协助"的内涵,表示提供这种"协助" 的人通常要在某一领域有某种过人的技能,所以,名词的assistance多表示"助手"的意思希望帮到你 满意的话 望采纳
