数学建模社区-数学中国

标题: DIY系列之——某校图书证条形码制作 [打印本页]

作者: buguniaoo1991    时间: 2011-9-28 18:30
标题: DIY系列之——某校图书证条形码制作
DIY系列之——某校图书证条形码制作
* Q; f' C- R/ j3 Z! ~$ P+ n1 X8 b( L/ F7 y3 _4 F3 q1 |
小谷同学 2011/9/25
( l2 V/ i" a3 y& R0 C" h
9 m8 y$ u7 t( y摘要
! A9 |+ m; W7 w  Y  H& A! R+ ^8 W, ~& i; F9 P) R! l
关键词: 条形码
7 J7 Z0 F* A% _. V  C# D
! V: O/ ~" Z" Y( L- L' p! m由于印刷质量问题和长期的使用,某些同学的读书证可能会产生读卡不灵敏现象。为了便于解决这些问题,本文给出某校图书证上条形码的编码规则,并给出由这些规则生成条形码的过程。最后本文对条形码在日常应用中可能出现的问题进行了分析,并提出相应的解决方案。* n! o" ]( c) k+ j
3 c& X; Z% S+ W8 w1 N1 I/ U
目录
8 x" ?1 b1 z, B
; w7 N% o* e* `1.某校图书证编码规则
, L$ I6 r: z6 R& t7 S: W; r- p7 [* m* H
2.条形码制作的过程) j5 Z: c4 f0 N# |- }
  f8 a  {7 B- g8 g
3.打印与测试
, k' l5 Q. _; _; e! U& s7 K
$ l8 U$ e! `4 y! F4.扩展应用, J% e3 b1 ~& N4 f! ^4 L

* |  v8 _( M  ~8 v+ T) Y+ j+ z% |5.关于本例的一些思考
/ ~8 b2 g* R$ I' ?; T  _1 O9 K" P" n' I2 e
6.免责声明与使用注意事项  [5 q3 W& P% m: V

' R2 d" Q1 p) l0 ~( W" M7.参考文献
+ M/ |6 t  u4 `  O
3 b# S; B* t: Q! D8 }0 d8.附录" y% R' d+ u: }
. Z! |, D3 b; {" f- X* @2 t
; t1 Y; P7 ?# w
8 b, a+ N- y/ v

( M. ?* Z/ Y) l条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。有关条形码的更多资料参见文[1]。8 h7 K1 L# i+ v9 J/ [. Z! ]% O6 w
$ [" e5 p/ }2 S/ ~/ y0 k- O
在日常生活中,我们不可避免地要接触大量的条形码,其中最常见的就是图书证了。而某些同学的图书证经常丢失。此外,某些同学的图书证由于缺乏保护,会频繁出现录入不灵敏现象。于是在谴责图书证的印刷质量之余,动手DIY一张图书证,自己进行质量控制,则可以使其更加灵敏地识别,大大减少进入图书馆的时间,大大缩短借书时刷卡的时间,提高学习和工作效率。图书证中携带关键信息的就是条形码,于是DIY的重点也是如何得到对应的条形码。( r" M, x6 q9 i" Q( x
4 a  O1 u0 t9 b1 [. ]
1.某校图书证编码规则6 M7 g" _+ i' j  z+ [0 J
9 }9 Y8 C6 x' L- a) A. V! S- ?% u( e5 M
由于所使用的编码方式不同,在了解常用编码规则(参见Internet)的基础上,必须通过对特定图书证的观察才可得出其特殊的编码规则。本文通过,对一种常见的图书证的观察,得出其编码规则如下:3 D6 ~1 h# a/ a! Z  F0 Z4 \6 |

( j" @7 [9 Z( ]# X- O8 c3 T* y①该条形码部分由两种不同宽度的黑白条组成,是一种类code39编码方式;我们假设宽条代表1,窄条代表0;并假设在最后多一个白色宽条,以便使黑白条码的个数相等,方便程序处理。: F( o9 U( J  }9 ^& V
1 H1 v+ Y" D# Z, w5 Y. z$ e4 j
②图书证的白色条码都是一样的,分为以下三部分:
2 w3 K6 c3 b4 D* V+ M/ ^: C! i% s/ S* R2 \- K& i" s, P# l( t
1)起始部分:10001;2)数据部分:13个01001;3)终止部分:10001,与起始码一致。1 [; U( J% g  i5 E  W

: a- C+ J( K# s# w' j* F* k7 I% x③图书证的黑色条码是携带学号信息的关键,分为以下三部分:$ x, s9 m. D& G' x3 t3 a; n
+ M" V1 ]3 @, c8 H. e- b! g' F9 T
1)起始部分:00110;! q6 Q# ^' `0 U; R/ J

' u3 E# [; J- u+ s$ ]/ W/ o- ~4 e2)中间部分:13个数字(即学号12位+图书证序号),每个数字对应的代码如表一所示;
, E" t: `/ O2 v. |4 R
% s% u- X) ~+ F表一 某校图书证号每个数字对应的代码
) k, K% d  N+ j5 z) Y) L7 |( A; P4 l7 K
数字 代码 代码数字来源 数字 代码 代码数字来源
7 @+ b3 `+ o) @& O3 C. G1 10001  1:0001                     6 01100 6:0110 * S) b0 C# J9 h
2 01001 2:0010                     7 00011 8:1000 7 ~6 {- f+ E& Y3 E  Q9 U& u+ z6 N
3 11000 3:0011                     8 10010 9:1001 3 v) P  Y1 E' m8 C
4 00101 4:0100                     9 01010 10:1010
$ i" U! _/ Z- O! [5 10100 5:0101                     0 00110 12:1100                    ' b# P3 M. f9 l1 J; k7 a
1 u9 w2 D2 \; O
说明:每个数字由五个黑条组成,两宽三窄;代码前四位是数字的8421码的倒序,由于最多只能出现两个宽条,于是一次选取最多只出现两个1的8421码作为序号的代码;代码的最后一位用以校验,凑齐“两宽三窄”。, W* w: a& h7 R  R- W2 N! `
! y7 u7 L% ?& Z1 T! J/ [9 K
3)终止部分:00110,与起始部分以及数字0的代码都一致。
, }  x; l+ y  F7 t3 `  p3 z& e5 o+ T; _
2.条形码的制作过程) |4 k2 B' _2 r# g1 n
2 A4 U) n& H9 k  C; \, X
黑色和白色可以用二值图像来表示,于是我们的关键是如何得到与条形码对应的二维矩阵。2 j0 a8 L3 p; ^+ E

. k! `7 b) q. s2 @6 Y- F定义窄条即代码0的像素宽度为w,宽条即代码1的像素宽度为2w(一般取w=1即可);定义二维矩阵在黑色像素点处值是0,在白色像素点处值是1。此立即上得出与学号对应的条形码的二值图像的矩阵。
$ J# m, v! n+ v+ F, h; ]; F! z
- d  d; {! {5 h条形码效果如图所示(程序代码见附件所示)。
! m' a: t- x+ B" r& H 1.png 8 U! ?5 m% Y; }8 G9 k, S' a8 O
图一 所得条形码效果图
1 L+ H2 a* m0 I" T2 T, ]5 D, A; c# o+ Y, t( b- T7 s8 [
3.打印与测试# e; ?2 H, b' `& O' Q: S5 h5 z

' I( e2 c. D* x# a6 F/ c  l" F有的制造商在批量打印图书证时不太用心,加上可能设备老旧,所以难免会使某些同学的图书证出现杂纹等印刷质量问题。/ {4 h' M9 O- ?) T: E

7 \& P5 {1 j8 U" k7 o* k2 E因此,在DIY的过程中,尽量采用分辨率较高的打印机。对于分辨率较低的打印机,通过修改程序,扩大条形码的宽度,也可打印出质量上乘的条形码(本文测试时采用HP Color LaserJet 2820彩色激光一体机)。$ }' F/ }$ L- H) L

$ Z1 ]" z4 K5 V( h$ T0 N2 l( l$ g为了方便进行测试,本文打印出不同大小的条形码。
/ N! |' ?1 Q& W3 o% q  e9 P& y
. e& }9 r. Y7 x( M5 N测试一:将其用透明胶带粘在硬纸板上。3 S- F& B  Y/ u1 b3 |
4 p, r, g2 n( S) {/ R: Y
结果令人遗憾,读卡机根本不识别。通过与图书证比较发现:$ C" B; l2 Z6 T: c

6 I( S& [; i. k( f8 B" q( V& u图书证正面的塑胶反射能力很弱,在灯光下几乎看不到灯在其上的虚像;而透明胶带的反射能力很强,可以地清楚灯地虚像。4 D0 O/ t) O2 V# b
* T2 W8 b, u" n, M, K
测试二:找到原因后进行,将与原图书证同样的大小的条形码用胶水贴在硬纸片上,结果顺利该校图书馆通过门禁。We are in now!!/ d! i7 M7 P% T3 d9 N
+ y# B( U3 ~8 ^7 h' h$ A
效果如图二所示。' M5 }# [0 S' ?2 D
2.png
# _  p! q- _% `2 \9 c( l5 L2 b图二 打印效果图/ J0 h8 ?+ X0 ^; L9 B: q. }$ N
测试三:用打印出的不同大小的条形码逐一进行测试,只有在一定的大小范围才可以通过测试。这说明了,条形码扫描器(注:本文使用的是全角度扫描器,其通过光学系统产生多条扫描线)是有一定的大小识别范围的。
8 M, X- j6 u  W, X; r
6 P- B- r5 Z5 F- R2 U6 \4.扩展应用. s; E, v5 s: X

! q3 J, B( E6 T4 C为了达到逼真的效果,我们做出了图书证模板(MATLAB版),该模板根据用户提供的证号、系部和姓名、照片、字体等信息,自动生成可供彩色打印的图书证如图三。2 E) ^. M0 V* g5 G
3.png % h* O5 e* B: M3 z( [( D6 H0 A
图三 可供彩色打印的图书证
; B$ k7 t/ b' u( @$ d7 b3 g% |
% i) w9 N( {' m; s9 i/ w7 Y过后,我们会给出相应的网页版、C++版、VB版等等。
3 H1 t8 W" L9 x# h1 W7 r: U& v" c4 i
5.关于本例的一些思考
! [2 s7 u4 k4 k( ^0 s
7 _, L4 x6 o- s由相关文献,可知条码技术具有以下优点:
3 r) d! T. M) i6 N2 i
5 C$ K; `# e" y6 i& {3 _  1)、输入速度快;
% Y1 g% d5 G1 u5 ?. h6 I0 W, P1 u$ F, T% @/ F! w4 O& b
  2)、可靠性高;8 ]/ i0 H' E3 ]/ d2 [9 O% g- Q) ]

0 x- {/ J& D, [5 D, v" y$ [8 ]  3)、采集信息量大;
! |9 Q. q. P& }+ h% a- H! b8 w2 F# z2 N& Q6 X6 B6 V: q- g8 x
  4)、灵活实用;) f1 W8 P  y; w, r0 J

4 _- i9 m, i* c+ Q. c+ {5)、条码标签易于制作
2 X  b% P7 g* w# N! F
$ _: |; q: l" O! `$ c6)、识别设备操作容易,不需要特殊培训;
- Y; c" x1 j% R9 f2 Y5 y$ Z
+ O  A* W& a2 B( Q7)、设备也相对便宜。
7 s5 [! a9 \% k  I. v
3 K1 n( n7 Z; m" G- W4 ~因此,在平时可以自己构造的加密的编码规则,利用现成的条形码扫描器,可以很快实现特定功能的组建嵌入式的或基于PC的条形码识别系统。" i- Y; o# s$ a
0 T( F) q2 a4 F7 J7 D% _+ l
由本文看,尽管一维条形码在各个领域获得了广泛的应用,但其安全性值得商榷。于是,在安全性要求较高或者要求条形码携带更多信息的领域,人们普遍采用二维码。常见的二维码如图四所示(更多资料参照文[2])。
& \0 x8 Y& |% X- ~ 4.png 4 [/ G' L. o. l
图四:常见的二维码
; s+ v/ H2 g$ \; ^+ H0 M0 @: Z0 E% L5 a4 i8 `! I! K+ v0 M% Q
6.免责声明与注意事项$ s. H  @1 e. s3 C0 H

" V* k. {9 @  ]/ _+ t版权所有,翻版必究。
8 X8 i# f1 X. @* p+ s' F3 X
1 H4 l1 A4 }5 U: _( M: G2 @  \0 T4 Z技术在于交流。本文旨在交流条形码制作技术,并为个人制作提供质量较为上乘的图书证的方法,非经相关方面授权,严禁用于商业用途。有不法分子由此牟利而产生的法律责任,与本人无关。
; Z# m& l1 V% q1 {& w& Z
- F( j4 R7 `4 C任何单位或个人认为本文可能涉嫌侵犯其合法权益,应向本文作者提出书面权利通知,并提供身份证明、权属证明及详细侵权情况证明。作者在收到相关法律文件后,将会依法尽快删除本文中违反法律的内容。
1 _/ J) ~# {7 ?% f
% Q4 V% l- z! p, A3 ^0 W# G7.+ J) K9 E- w0 G" y1 U
参考文献
" }2 r% s7 ^7 }) M. }$ `  O! K- I: r2 }  F$ n+ e! A& z
[1]条形码—百度百科http://baike.baidu.com/view/13740.htm[2010-09-25]
# `8 R2 o& s, T$ `& N$ M5 n0 P( F. b+ h, b6 [2 s3 m& Q, C
[2]二维码—百度百科http://baike.baidu.com/view/132241.htm[2010-09-25]
; }5 ^6 ?% P$ W0 l9 I0 {8 D6 g7 @) E# m" ]9 r4 {
8.
4 N" X1 D- v7 k( h附录
: t/ D( A# J$ ?" d0 h9 t$ L' e! ]( ?3 @
相应的MATLAB程序代码如下(该程序经过简单修改,可以写成函数的形式,更方便地进行各种编码规则的条形码的生成):2 o$ ~. k. ~; D2 @$ O% g/ M

# F* [. O9 B& f0 R1 @( {%barcode.m! }* B) c3 p* o1 f% `
2 j' a8 e" s7 t3 u+ T
%生成学号a对应的条形码2 X' u: i: n/ D* M3 B: r

' t! \8 F6 {+ h5 ^%2011/09/25 13:24 BY小谷同学
/ j! S+ v9 P7 q- J3 f+ K4 S
4 l' Z8 ~$ _3 ?$ Ea='1234567890123';%学号,自行更改: q9 T6 U0 M3 `% x

5 e+ ]1 L* R0 s, e% yBlack_num=[1,0,0,0,1;0,1,0,0,1;1,1,0,0,0;0,0,1,0,1;1,0,1,0,0;
+ A* T& s2 j- m
  `  j1 X& x- Y. F7 ?0,1,1,0,0;0,0,0,1,1;1,0,0,1,0;0,1,0,1,0;0,0,1,1,0];%数字编码
2 Z- L& ?" h/ ~# J3 f! e1 l7 U# c2 G+ B$ w
White_num=[0,1,0,0,1];%插入符的编码: ~1 V6 |( e1 M2 i  b" l
9 ]; ^  r9 l/ k) ^# B
%Black_SE='00110';
1 E" Z  `3 F: W8 G5 n- q2 \% ^$ V9 v; w' K3 z% i6 F
%White_SE='10001';White_M='01001';, L0 A+ d8 ~" i, n
1 B, ]# S/ G/ u
barheight=30;%定义条形码的高度
0 |/ e3 B) }9 k% G
( ]7 O1 M3 Y: T2 ^, h  C) sbarwidth=1;%定义条形码的像素宽度' _3 N0 s! I. n* ^2 O  f; [, e& Q

' v% E7 q& y. K" H5 v: M9 j0 i' V" H
7 v& C$ F* z3 w& I+ ]%可以对特定长度的输入进行控制,本文规定长度为13" L& F, W2 ~* ?5 G* K- D

% S; Z+ E2 v* }) L2 F7 rif length(a)~=13
- S2 G' _5 a2 |( Q! `& X) e: U  J
1 R! e) A) z3 c& @! w% s. K$ ]) D/ `- k! `6 f
error('图书证必须有13个数字');- B0 z: r4 F! E& p
( B/ L- G1 ]; P. h* r
end
8 \% U5 p4 Y( @# X/ Q: v( u: I( x, r9 Y* B# t7 w" u3 h( D$ r; a

9 m& s( v: C) Y4 V% Fbarcode_SE=[0,1,1,0,1,0,0,1,0,0,1,0,1,1];5 d( U- G; W9 a
, P' H# V  }% T3 W) q: A
%为方便,直接人工得出起始与终止部分的条形码2 E3 V: U- F) Z4 k  G7 u
  {: c) Y9 N; n* s
%也可以由程序生成.
9 h5 Z* r) h" l
3 w- }$ D; X& Y8 ctotal=length(a)*(7+7);
- R& @) m0 \  s
9 y$ t: D' n& L* J$ U; m: `7 `%条形码的总像素宽0 S6 I7 _) B( D
7 n$ v9 b9 U7 Q' J* T: V/ b& Y, Q. @
%也可以不用求,因MATLAB提供的均是动态数组
* T) r6 M, M+ [3 @* K' n; J
- P8 ]/ T* Y: h% k$ p& |5 as=1;%计数,记录
5 \: x2 y$ w$ u# H0 `6 {3 D
% k3 Q" x. F1 ^6 h  E  t0 J6 `! n# T
%由于利用for语句容易出现不可预料的错误
% {% F0 x) \( g% F9 x
3 g9 _+ [7 g$ X%大部分是数组的行标与列标的调用问题,于是采用while循环  o5 O, q9 h$ i" M
  j# S5 L, o' j1 R4 N! [3 d! ]
%嵌套循环,得出数据部分( E7 N% T& I9 o/ y( H' l% j# K

6 M; y# i* O) p7 s: d$ _* Nm=1;- `$ M! _# f, C) j: ?

5 E% x- N/ T9 S8 C1 H1 B# Fwhile m<14 3 C+ ?, `& ~! Y% q
' G8 h, Z( k8 N* k7 a5 X2 r" d
4 ]2 I# X( o/ O* t
if a(m)=='0';
# V# T5 t- X3 e0 v" Q: _
( w- ^: T4 q! B& j( M9 L+ B: q8 t/ A: ]& ?# T7 V
t=10;/ Y1 m9 f8 j& ^; J$ a7 X6 U

/ [9 M* I. O" a' \% e5 z
7 `- L4 g+ I, q& u2 E% F6 T%若为数字零,应该调用的下标是10
/ w5 G5 K" t$ U* U0 P. O: c9 G. X1 J8 L3 I& ^, ~

' Q( @' G7 L4 W2 n7 Telse  V4 M4 ?! z' h+ r( m

8 m! n+ A3 l4 B* E
4 i5 g$ n: N/ G1 Ot=double(a(m)-48);
8 ]+ f% f  G5 J2 \; ]
% u. O5 B( Y5 }6 F%由于输入是ascii字符,转换为整数需要减去30H,即48
/ x6 A5 g; S" }' L
$ @" @$ {9 O2 {9 e; D/ g% Z5 Q0 `; K0 g0 x
end
7 q0 m2 o& C, c$ N. P; e0 S) T/ @( S7 G8 C4 l3 F% q

  e' v9 M# d7 U0 xn=1;%同样的while循环# Q/ B7 h" _- M. z5 j. m

0 I* i- N$ z, g7 U4 \' L
" i  k8 P- [0 \5 j; Owhile n<62 C6 C9 S- D& \9 {0 c! c9 ^

! ^8 W- _4 K( u: C$ T. B: _2 f4 g2 l/ X0 f2 o' P8 C7 f9 @6 q, L& ~
if Black_num(t,n)==0
2 Y/ F0 {: I" W0 z+ ]  L; ]6 w% S! z+ _5 M

) a1 R# D/ L. t3 @# T! ]( Q" K7 Q# Fbarcode_M(s)=0;
  R7 f, Y) A5 F4 j/ o& H
/ h) f2 E& u! ^  h( \  a+ x2 `2 D& b4 J' W# U( D2 ]6 _3 @) M: U
s=s+1;
) v/ S3 j+ N0 q, A6 f; x4 |- X7 r+ @1 U5 [5 x) l: ~
3 r$ F. T7 N2 k2 n( r' Y- B! ^- n
else; m+ V- O; b! v1 [" C1 j
% t$ `) Z" ^: |. c5 f

2 G! k( e4 y8 V2 ?barcode_M([s,s+1])=[0,0];, o& M! S4 r4 u

, O" l1 p0 a1 g: M2 d6 j, S
5 F& ]6 a2 j5 q5 Y6 R& ?s=s+2;
; G+ X1 `- y4 a+ N! @2 d( Z7 T  d( r/ Z

- F5 k& ~' b6 E6 `! O6 i- P: nend
0 @! D1 t) z0 }! \) p' g4 \" H( e& u1 S
/ {1 b6 g1 j- X1 m* v
0 n( a' m9 [# f$ ]+ cif White_num(n)==0
5 P* `$ i4 R. L3 ?4 N, b5 G4 q9 v1 \, l

. m" e% L" Z" Y4 {2 ]barcode_M(s)=1;
9 x; B0 N3 v0 x; q* X, A$ R6 W5 T3 p8 M- ~+ @. Y! \6 x( C

9 ^: Y4 g2 l3 t9 Qs=s+1;
4 U6 N- Q8 J- g% j3 }& v1 T. v* i
9 r: d' c5 ]3 a; `" ~7 w5 f6 T1 j0 m& C) u( y3 a
else
  R& R3 }# i. r7 Y) h
7 @0 V* U8 ]) w- S% m
" z! N+ w# ]% C' i3 nbarcode_M([s,s+1])=[1,1];( _# Y+ u9 I( q+ S4 o% z3 g' `

3 W- v: z: j5 O" T1 _' }6 e* n
" ~1 N5 z. l' L7 o$ ?s=s+2;0 w2 H, K, x6 ?
% [: f2 J/ v. Q. [/ i& P

' ~% H' N7 Z: T7 pend
4 Z# l, B! y& c" j% E
* X; [+ X2 L3 {) o) P: T; K( ]! k* b
n=n+1;
) ]2 Y! u, D4 R9 G' ?  C
* t3 x7 K9 t, _3 J5 {: W' v! H
  r( W9 m- w+ u  N, N- s& D/ g/ zend
7 t* G4 L2 }" h; i# \% i8 c2 ~/ h% f
m=m+1;
* c% l, B& w+ G
! |8 Q5 b- D/ Jend
4 x/ ]; J4 [0 o. n: u$ {$ o, B4 _2 O  K# P
8 S% r( M+ E) q1 H
bcode=ones(barheight,1)*[barcode_SE,barcode_M,barcode_SE];( P. b9 k# |9 N5 g( r8 q8 {% a

$ w3 h2 K$ Z, B+ U4 u, L%将一位矩阵拉宽,生成给定高度的条形码对应的二值图像的矩阵2 A% C+ e9 V" R6 G0 o$ |$ M# B! u

8 D' l  |5 h+ Z& T; I9 Lbcode=bcode==1;%将数组转换为逻辑数组(Logic Array)- s  J# C9 T3 L
* z$ e% O% G) }1 I1 T
imshow(bcode)%显示所得到得条形码
6 }4 s* n7 [& R. a# u; p: b9 Z
4 k2 J3 x& s# K0 {& g  b4 U$ A%然后可以自行存贮得到的条形码
8 A' }" t- W( L% F2 _$ o) ?' `) ^7 k3 p4 @9 j7 d3 e
%然后用PS等工具得出具有自己特色图书证啦
- f0 Z0 d8 D" Z$ a$ ~& Y
* _+ S( J; f0 ]+ |! ]0 u% E
$ c' I/ r: [: \- i3 T
作者: 孤独的修行者    时间: 2011-9-29 15:16
够强大!!!
作者: lszf    时间: 2011-9-29 20:04
强啊
作者: freedomfox    时间: 2011-9-29 20:36
很强大啊,
* r3 E! j+ b( u' q0 y9 [可惜首先我联想到的是可以用来制作假的书本条形码,用于还不见了的书,,我这是在犯罪吧?
作者: buguniaoo1991    时间: 2011-9-29 23:50
freedomfox 发表于 2011-9-29 20:36
3 U; _7 U$ O" Y; p很强大啊,
  f+ m2 ]+ L- L; t8 W+ C" }可惜首先我联想到的是可以用来制作假的书本条形码,用于还不见了的书,,我这是在犯罪吧?{:3_ ...
' o$ h4 ~# \. l, g5 E) U+ t
可以,不过你的学校肯定有记录,一旦发现,后果很严重的;/ ?+ m: b/ t8 I' z$ T
目前我想到是:
( L2 k4 e( E/ a4 ]( o0 m+ b1 k' ^. P一、去周围学校的图书馆。
, `0 k9 s9 E) T: {& k5 g4 `二、自己丢的图书证自己做一个一模一样的来。
. m; l1 Z- S6 w9 M2 m0 P  W三、将图片弄到手机上,然后用手机刷进图书馆,吸引眼球* b& g$ L- l, q: [
四、将来毕业再回学校,再做一个图书证进图书馆
$ x  G' B" ~! h" Y/ g' ]8 o7 U
作者: 书呆子    时间: 2011-10-2 22:53
呵呵呵
3 }8 V  I) v% B6 a, ?; J。。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5