完成随机产生并打印学生密码的功能:
用Delphi或ASP编写程序,完成随机产生并打印学生密码的功能:
1、 输入界面:
输入开始学号段和结束学号段,按确定按钮后即成生和学号一一对应的密码,并显示出来。学号输入框内只允许输入数字,且开始学号要小于结束学号。
2、 密码生成规则:
随机生成8位密码,密码的规则为大写字母和阿拉伯数字一次排列,如A1B2C3D4的形式。为便于辨认,密码中不得出现数字0、1和字母O、I。
3、 密码生成后存入表xsmm中,字段为stuno(学号)和password(密码)。
4、 打印出学生密码。我编的生成密码并且将学号和密码存入xsmm(table1)中,但是运行不出来,麻烦各位老师指导。procedure TForm2.SpeedButton2Click(Sender: TObject);
var
mm:string; //密码
book1:=tbook; //定义书签变量function getchar():string; //产生字母的子函数
var
i:integer;
t:char;
begin
i:=randomize[(26:integer)]:integer;
while i=8 or (i=14) do
i:=randomize[(26:integer)]:integer;
i:=i+65;
t:=chr(i);
getchar:=t;
end;function getnum():string; //产生数字的子函数
var
i:integer;
begin
i:=randomize[(10:integer)]:integer;
while i=0 or (i=1) then
i:=randomize[(10:integer)]:integer;
getnum:=inttostr(i);
end;begin
book1:=table1.getbook;
table1.First;
for i=s1 to s2 do
begin
mm=concat(getchar(),getnum(),getchar(),getnum(),getchar(),getnum(),getchar(),getnum());
table1.fieldbyname('学号').value:=i;
table1.fieldbyname('密码').value:=mm;
table1.Next;
end;
table1.gotobook(book1);
table1.FreeBook(book1);
end.
用Delphi或ASP编写程序,完成随机产生并打印学生密码的功能:
1、 输入界面:
输入开始学号段和结束学号段,按确定按钮后即成生和学号一一对应的密码,并显示出来。学号输入框内只允许输入数字,且开始学号要小于结束学号。
2、 密码生成规则:
随机生成8位密码,密码的规则为大写字母和阿拉伯数字一次排列,如A1B2C3D4的形式。为便于辨认,密码中不得出现数字0、1和字母O、I。
3、 密码生成后存入表xsmm中,字段为stuno(学号)和password(密码)。
4、 打印出学生密码。我编的生成密码并且将学号和密码存入xsmm(table1)中,但是运行不出来,麻烦各位老师指导。procedure TForm2.SpeedButton2Click(Sender: TObject);
var
mm:string; //密码
book1:=tbook; //定义书签变量function getchar():string; //产生字母的子函数
var
i:integer;
t:char;
begin
i:=randomize[(26:integer)]:integer;
while i=8 or (i=14) do
i:=randomize[(26:integer)]:integer;
i:=i+65;
t:=chr(i);
getchar:=t;
end;function getnum():string; //产生数字的子函数
var
i:integer;
begin
i:=randomize[(10:integer)]:integer;
while i=0 or (i=1) then
i:=randomize[(10:integer)]:integer;
getnum:=inttostr(i);
end;begin
book1:=table1.getbook;
table1.First;
for i=s1 to s2 do
begin
mm=concat(getchar(),getnum(),getchar(),getnum(),getchar(),getnum(),getchar(),getnum());
table1.fieldbyname('学号').value:=i;
table1.fieldbyname('密码').value:=mm;
table1.Next;
end;
table1.gotobook(book1);
table1.FreeBook(book1);
end.
解决方案 »
- 请大家给点思路
- 统计一下各位兄弟身边的大牛有多少?
- 我的打印与览,为什么只有一行!
- ★★★发现delphi6有一个毛病!大家都来看一下,我给100分。谢谢
- SQL语言执行后的缓冲内存怎么释放?本人用了一些DELPHI的数据库控件,发现在对相关数据库进行频繁操作时,应用程序内存不断增加,请大家
- 用TTable访问Access数据库时,怎么才能不弹出数据库的验证密码窗口?
- 能给一段ProgressBar使用的原代码吗~~
- 谁会使用Delphi编写SmartTag的程序,欢迎指教。。。。。
- SHOWMODAL的奇怪现象?!
- 如何在Grid中显示MEMO字段?
- 如何将一个pbyte类型的数据转换成char数组
- win98和win2000调用计算器通用的怎么写啊,真的真的没有可用分,只能祝你身体健康
var
i:integer;
begin
randomize;
i:=random(26);
while (i=8) or (i=14) do i:=random(26);
i:=i+65;
result:=chr(i);
end;
var
i:integer;
begin
randomize;
i:=random(7);
i:=i+2;
result:=inttostr(i);
end;
这个语句有没有问题啊?
mm=concat(getchar(),getnum(),getchar(),getnum(),getchar(),getnum(),getchar(),getnum());
这个语句有没有问题啊?
-----------------------------没有问题
书签变量的使用对吗?jinjazz(近身剪(N-P攻略))
--------------------------也没有错!
table1.First;
for i=s1 to s2 do
begin
table1.insert;
mm=concat(getchar(),getnum(),getchar(),getnum(),getchar(),getnum(),getchar(),getnum());
table1.fieldbyname('学号').value:=i;
table1.fieldbyname('密码').value:=mm;
end;
table1.gotobook(book1);
table1.FreeBook(book1);
end.
不行,等到的所有密码都是一样的,这个循环不对啊,三友!------------------------那是你的产生密码的函数不具有随机性,你要我帮你修该这个函数吗?
procedure TForm2.SpeedButton2Click(Sender: TObject);
var
k,t:integer;
mm,x,y:string;
s1:integer; // 开始学号段
s2:integer; //结束学号段
book1:tbook; //定义书签变量
function getchar():string; //产生字母的子函数
var
i:integer;
begin
randomize; //随机函数
i:=random(26);
while (i=8) or (i=14) do
i:=random(26);
i:=i+65;
getchar:=chr(i); //将asc码转换成字符
end;function getnum():string; //产生数字的子函数
var
i:integer;
begin
randomize;
i:=random(7);
i:=i+2;
getnum:=inttostr(i); //整数转换成字符
end;begin
mm:='';
table1.refresh;
s1:=strtoint(edit1.text);
s2:=strtoint(edit2.text);
book1:=table1.getbook;
table1.First;
for k:=s1 to s2 do
begin
table1.insert;
for t:=0 to 3 do
begin
x:=getchar();
y:=getnum();
mm:=concat(mm,x,y);
end;
table1.fieldbyname('学号').value:=k;
table1.fieldbyname('密码').value:=mm;
end;
table1.gotobook(book1);
table1.FreeBook(book1);end;
这个随即的次数怎么产生,你可以用当前系统时间的,N=毫秒数+秒数*1000+分钟数*100000
再执行 fro i:=1 to N do
random(26);
你的函数就可以改为
function getchar(N:integer):string; //产生字母的子函数
var
i,j:integer;
begin
N=毫秒数+秒数*1000+分钟数*100000 ;(我在网吧,时间函数不记得)
randomize; //随机函数
fro j:=1 to N do
I:=random(26);
while (i=8) or (i=14) do
i:=random(26);
i:=i+65;
getchar:=chr(i); //将asc码转换成字符
end;2:当然你也可以用学号来实现随机:
function getchar():string; //产生字母的子函数
var
i,j,N:integer;
begin
N=毫秒数+秒数*1000+分钟数*100000 ;(我在网吧,时间函数不记得)
randomize; //随机函数
fro j:=1 to N do
I:=random(26);
while (i=8) or (i=14) do
i:=random(26);
i:=i+65;
getchar:=chr(i); //将asc码转换成字符
end;
你的调用就要改一下:
for t:=0 to 3 do
begin
x:=getchar(k+t);
y:=getnum(k+t);
mm:=concat(mm,x,y);
end;
var
k,t:integer;
mm,x,y:string;
s1:integer; // 开始学号段
s2:integer; //结束学号段
book1:tbook; //定义书签变量
function getchar():string; //产生字母的子函数
var
i:integer;
begin
randomize; //随机函数
i:=random(26);
while (i=8) or (i=14) do
i:=random(26);
i:=i+65;
getchar:=chr(i); //将asc码转换成字符
end;function getnum():string; //产生数字的子函数
var
i:integer;
begin
randomize;
i:=random(7);
i:=i+2;
getnum:=inttostr(i); //整数转换成字符
end;begintable1.refresh;
s1:=strtoint(edit1.text);
s2:=strtoint(edit2.text);
book1:=table1.getbook;
table1.First;
for k:=s1 to s2 do
begin
mm:='';
table1.insert;
for t:=0 to 3 do
begin
x:=getchar();
y:=getnum();
mm:=concat(mm,x,y);
end;
table1.fieldbyname('学号').value:=k;
table1.fieldbyname('密码').value:=mm;
table1.post;
end;
table1.gotobook(book1);
table1.FreeBook(book1);end;
var
k,t:integer;
mm,x,y:string;
s1:integer; // 开始学号段
s2:integer; //结束学号段
book1:tbook; //定义书签变量
function getchar():string; //产生字母的子函数
var
i:integer;
begin
randomize; //随机函数
i:=random(26);
while (i=8) or (i=14) do
i:=random(26);
i:=i+65;
getchar:=chr(i); //将asc码转换成字符
end;function getnum():string; //产生数字的子函数
var
i:integer;
begin
randomize;
i:=random(7);
i:=i+2;
getnum:=inttostr(i); //整数转换成字符
end;begintable1.refresh;
s1:=strtoint(edit1.text);
s2:=strtoint(edit2.text);
book1:=table1.getbook;
table1.First;
for k:=s1 to s2 do
begin
mm:='';//////注意这一行的位置
table1.insert;
for t:=0 to 3 do
begin
x:=getchar();
y:=getnum();
mm:=concat(mm,x,y);
end;
table1.fieldbyname('学号').value:=k;
table1.fieldbyname('密码').value:=mm;
table1.post;///////还须加上提交数据
end;
table1.gotobook(book1);
table1.FreeBook(book1);end;
时间函数。function tdatetime
返回分钟,秒钟和毫秒:procedure decodetime(time:tdatatime,var hour,min,sec,msec:word)
是不是这样:N=msec+sec*1000+min*100000 要不要先把word形式的转换成int形式的?
见笑了,谢谢
呵呵,谢谢!但是运行了之后,还是没有解决问题,所有学号的密码全部都是一样的。
1:用系统时间实现随机
function getchar():string; //产生字母的子函数
var
i,j:integer;
hour,min,sec,msec:word;
begin
decodetime(now,var hour,min,sec,msec:word);
N=msec+sec*1000 ;
randomize; //随机函数
fro j:=1 to N do
I:=random(26);
while (i=8) or (i=14) do
i:=random(26);
i:=i+65;
getchar:=chr(i); //将asc码转换成字符
end;
//调用
for t:=0 to 3 do
begin
x:=getchar();
y:=getnum();
mm:=concat(mm,x,y);
end;
2:用学号来实现随机:
function getchar(N:integer):string; //产生字母的子函数
var
i,j:integer;
begin
N=毫秒数+秒数*1000+分钟数*100000 ;(我在网吧,时间函数不记得)
randomize; //随机函数
fro j:=1 to N do
I:=random(26);
while (i=8) or (i=14) do
i:=random(26);
i:=i+65;
getchar:=chr(i); //将asc码转换成字符
end;//调用
for t:=0 to 3 do
begin
x:=getchar(k+t);
y:=getnum(k+t);
mm:=concat(mm,x,y);
end;
另外,delphi清空数据库但是不删除数据库用什么命令?
____________________没有清空数据库的,只有清空数de
truncate table table_name
var
i: Integer;
book1: tbook;
begin
//
book1:=adotable1.getbook;
if StrToInt(Edit1.Text) > StrToInt(Edit2.Text) then Exit;
for i := StrToInt(Edit1.Text) to StrToInt(Edit2.Text) do
try
if ADOTable1.Locate('ID', i, []) then Exit;
if ADOTable1.State in [dsInsert, dsEdit] then ADOTable1.Post;
ADOTable1.Insert;
ADOTable1.FieldByName('ID').AsInteger := i;
ADOTable1.FieldByName('Pass').AsString := RandomPass;
ADOTable1.Post;
except
end;
adotable1.gotobook(book1);
adotable1.FreeBook(book1);
end;function TForm1.RandomPass: String;
var
i, j: Integer;
begin
//
Result := '';
for i := 0 to 3 do
begin
sleep(100); //好象不sleep,密码就是一样的,可能是系统速度太快,来不及randomize
randomize;
j := random(26);
while (j=8) or (j=14) do
begin
randomize;
j :=random(26);
end;
Result := Result + chr(j + 65);
randomize;
j := random(10);
while (j=0) or (j=1) do
begin
randomize;
j :=random(10);
end;
Result := Result + IntToStr(j);
end;
end;
帮你重新更改了一下代码,你看看!
我这边是d5 + winxp,调试通过!主窗口里,只有一个dbgrid,两个edit,一个button
数据库里有一个表Pass(ID,Pass),其中ID为主健。
谢谢!我试一下。
另外呢,我想请问,
我运行完一次,输入一组数据后,数据库里面相应的存入一组数据,再运行一次,我希望前面的记录全部晴空,这个该如何写程序啊?
麻烦了!!-------------------------用ADOquery控件执行删除的脚本
adoquery1.active:=false;
adoquery1.sql.txt:='delete from your table'
adoquery1.execute;
if ADOTable1.State in [dsInsert, dsEdit] then ADOTable1.Post;
这个语句是什么意思?谢谢各位!
//如果能定位到ID=i的记录就退出.
if ADOTable1.State in [dsInsert, dsEdit] then ADOTable1.Post;
//如果ADOTable1对应的数据被修改了就提交保存.
begin
Close;
SQL.Clear;
SQL.Add('Delete from tablename');
ExecSQL;
end;
begin
Close;
SQL.Clear;
SQL.Add('Delete from tablename');
ExecSQL;
end;
清空全部记录.