数学建模社区-数学中国

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

作者: buguniaoo1991    时间: 2011-9-28 18:30
标题: DIY系列之——某校图书证条形码制作
DIY系列之——某校图书证条形码制作- o! n6 ^5 m$ ]' x

- c4 R/ k/ R4 I9 [) O9 C, R3 K" O小谷同学 2011/9/254 r) a8 F' _  H( Y

/ ~( B& P. m" |2 {3 x8 B$ z: P摘要8 p7 L; \) y" n9 t6 f0 r

. c5 v3 k7 W0 [/ Y) J$ S# p3 Z关键词: 条形码0 s% a5 \+ ?/ F+ x
! G  s# k6 l* b7 b1 J. }9 |
由于印刷质量问题和长期的使用,某些同学的读书证可能会产生读卡不灵敏现象。为了便于解决这些问题,本文给出某校图书证上条形码的编码规则,并给出由这些规则生成条形码的过程。最后本文对条形码在日常应用中可能出现的问题进行了分析,并提出相应的解决方案。
6 E) W1 C" {& O1 ?/ z" x( g" a1 v- J5 N3 q3 d
目录
; O0 m1 P8 y# M; U( ?" N* S  V4 g! y9 L- ]  h: [
1.某校图书证编码规则
  y* R6 @+ C4 i- g2 M4 ]% J9 G8 g6 A' t1 r3 K
2.条形码制作的过程+ `1 k* m# n3 t: J; P( U

" F, ?- S  z$ d1 ^: N3.打印与测试
& Q* |' M" f* j  H6 Z, G1 m7 b8 m6 `, I' u2 Z# m" y1 d/ C
4.扩展应用
( k; _1 x  l5 _+ y8 J$ e( o* I. p. Q& b3 a: v, \; i/ O8 F
5.关于本例的一些思考  t+ k# |1 Y5 e. Q8 C8 r+ J! S- N  ~/ y! O

3 ]' u2 H: I+ e3 l8 C# ]5 j6 V3 O6.免责声明与使用注意事项& d( R8 h& L% e2 C7 W

6 h3 B! k; i; r3 z7.参考文献
2 B  o" h  k; o/ W5 y- m) j! A% J  b
8.附录
' h4 I% p' p; y1 E. E& z
1 Y3 [+ B5 D2 o! _$ x" u* G6 D2 \1 D7 `9 |6 z4 Z: P
. }. Z* a2 k0 `9 x" w9 C
& o! Z# j* b: e2 I
条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。有关条形码的更多资料参见文[1]。
  G2 X. o1 O& j6 B. `. H. a. N2 a" `) w8 P- i0 {
在日常生活中,我们不可避免地要接触大量的条形码,其中最常见的就是图书证了。而某些同学的图书证经常丢失。此外,某些同学的图书证由于缺乏保护,会频繁出现录入不灵敏现象。于是在谴责图书证的印刷质量之余,动手DIY一张图书证,自己进行质量控制,则可以使其更加灵敏地识别,大大减少进入图书馆的时间,大大缩短借书时刷卡的时间,提高学习和工作效率。图书证中携带关键信息的就是条形码,于是DIY的重点也是如何得到对应的条形码。
  x# E; w% f# H8 a0 x
( m, ]4 R) l/ j# u  {3 h1.某校图书证编码规则
2 Z0 m9 [8 }# ]+ E+ O, ?1 D: ~3 O; |9 u, o5 I$ Y. F) B7 z
由于所使用的编码方式不同,在了解常用编码规则(参见Internet)的基础上,必须通过对特定图书证的观察才可得出其特殊的编码规则。本文通过,对一种常见的图书证的观察,得出其编码规则如下:
$ t! V+ r! p  u# U* \: ]) E6 a: l5 Z8 `9 [! y7 X* v
①该条形码部分由两种不同宽度的黑白条组成,是一种类code39编码方式;我们假设宽条代表1,窄条代表0;并假设在最后多一个白色宽条,以便使黑白条码的个数相等,方便程序处理。
* j' y0 D- @9 Q9 p1 r- V
- J- Y0 W/ m5 S2 e! O; f②图书证的白色条码都是一样的,分为以下三部分:
, {9 ]& \5 R# c9 K0 p( ]6 G5 \6 r! H1 h+ A7 D& [5 I
1)起始部分:10001;2)数据部分:13个01001;3)终止部分:10001,与起始码一致。8 O' H1 ^$ b2 C
) j; V/ I5 D. j, p- ~7 Q3 u
③图书证的黑色条码是携带学号信息的关键,分为以下三部分:
. b6 Z) D4 Z. E/ A
3 J* v3 o5 O' y7 \. x4 i( H1)起始部分:00110;
  F7 X. z7 F$ j9 v% Z$ _5 ]1 s# D+ w5 o. O( z
2)中间部分:13个数字(即学号12位+图书证序号),每个数字对应的代码如表一所示; 9 g  x( N1 m  [, r; D) g- t* F# \

5 S- @$ w9 T' ~9 U7 @3 J表一 某校图书证号每个数字对应的代码$ |3 `0 c' A: ?7 X% n

# @1 s# O6 u& e% H- ~6 W数字 代码 代码数字来源 数字 代码 代码数字来源 - [0 g: a$ \* }) F
1 10001  1:0001                     6 01100 6:0110
: y4 a- ~$ K' _' a2 01001 2:0010                     7 00011 8:1000 + L/ A* d+ ^# s; i6 x4 y5 B
3 11000 3:0011                     8 10010 9:1001
7 g+ c* D: `/ _5 r: Y- d( [, O4 00101 4:0100                     9 01010 10:1010 ; i, k8 j9 y/ x( u
5 10100 5:0101                     0 00110 12:1100                    
( O+ b- Y3 S0 E' D
. ?9 r* r& ]  _2 B) S* _, E/ `0 \说明:每个数字由五个黑条组成,两宽三窄;代码前四位是数字的8421码的倒序,由于最多只能出现两个宽条,于是一次选取最多只出现两个1的8421码作为序号的代码;代码的最后一位用以校验,凑齐“两宽三窄”。
7 R0 z4 |* b0 ^3 x3 [. C1 o$ H+ F( \: ^8 m" E9 ^* i
3)终止部分:00110,与起始部分以及数字0的代码都一致。
: y3 t+ L; a+ A: e0 s! Z2 y5 t# Q% o+ C+ @6 t; H- C% z
2.条形码的制作过程
( o: V% T# p4 j3 n3 K' g  A% x! d; [0 V. ]5 H( t; v$ z
黑色和白色可以用二值图像来表示,于是我们的关键是如何得到与条形码对应的二维矩阵。, v! d1 \9 T6 t2 Y  X$ P; ^0 S
, @0 s6 ^  U) U# S0 Y# G
定义窄条即代码0的像素宽度为w,宽条即代码1的像素宽度为2w(一般取w=1即可);定义二维矩阵在黑色像素点处值是0,在白色像素点处值是1。此立即上得出与学号对应的条形码的二值图像的矩阵。
  I) a& Y' u9 _3 f6 R: F- L% _' [  }! J( T# ^
条形码效果如图所示(程序代码见附件所示)。
+ M" `6 n) O+ x- O) }2 N, A% l3 D 1.png % E+ P. m/ }# h* @
图一 所得条形码效果图" o' t& Y0 j4 K* n

% v/ G; c" c9 O% I+ i& A6 N3.打印与测试+ _! c: D+ t! ^& ]
5 C, G* ~1 n# g  Y5 X* `
有的制造商在批量打印图书证时不太用心,加上可能设备老旧,所以难免会使某些同学的图书证出现杂纹等印刷质量问题。) F7 e4 X( P6 F- j' P4 h0 I& r& \% Z( F
% [# O! j* j5 x- @1 H
因此,在DIY的过程中,尽量采用分辨率较高的打印机。对于分辨率较低的打印机,通过修改程序,扩大条形码的宽度,也可打印出质量上乘的条形码(本文测试时采用HP Color LaserJet 2820彩色激光一体机)。- N% M9 S* ?8 }( ]4 f
: Z: K) A9 ?/ |. N/ v1 d
为了方便进行测试,本文打印出不同大小的条形码。/ o" s7 j( s! |, ?8 h% I

1 g$ Z0 L4 O  H1 f' |测试一:将其用透明胶带粘在硬纸板上。
# l2 W( z8 @. N
; X/ H* o, i* L结果令人遗憾,读卡机根本不识别。通过与图书证比较发现:* T/ j" g7 x9 w0 X1 f

# W, m; }0 I4 I图书证正面的塑胶反射能力很弱,在灯光下几乎看不到灯在其上的虚像;而透明胶带的反射能力很强,可以地清楚灯地虚像。) Y% Y7 j' a+ E6 i: O. q' q
4 B( @7 n$ r: X& G- g) `% V0 c4 C
测试二:找到原因后进行,将与原图书证同样的大小的条形码用胶水贴在硬纸片上,结果顺利该校图书馆通过门禁。We are in now!!8 D/ G) K: \6 }
7 }, f1 o2 _, J
效果如图二所示。) l; s2 k6 ~# S) r
2.png
. c8 L; Z7 f# E$ G图二 打印效果图& ?& |: K5 x2 {9 u' f0 y$ L" W% f
测试三:用打印出的不同大小的条形码逐一进行测试,只有在一定的大小范围才可以通过测试。这说明了,条形码扫描器(注:本文使用的是全角度扫描器,其通过光学系统产生多条扫描线)是有一定的大小识别范围的。
5 ^5 }( K0 L+ C# L4 A4 r2 [/ c  F( X0 b/ C, @' \7 Y* T5 u* b
4.扩展应用
& Z. W  v0 p6 S6 ^2 S- o1 g* g% i8 g! i; s; U8 s; F
为了达到逼真的效果,我们做出了图书证模板(MATLAB版),该模板根据用户提供的证号、系部和姓名、照片、字体等信息,自动生成可供彩色打印的图书证如图三。
- j: I6 R3 Z, L- q) s 3.png
0 ?: @1 i( q$ [+ w! s; J( y图三 可供彩色打印的图书证
2 c) w9 ?; b7 H  `, e; |# Z8 W. S- e' K' L3 R+ P
过后,我们会给出相应的网页版、C++版、VB版等等。
, ]2 T: Z  f$ m7 h" d! \6 b' i3 {- @7 l# v4 y* t' I" c: [
5.关于本例的一些思考! U+ X& e( o  V( {: c; l
# @$ @& q! m" V: v
由相关文献,可知条码技术具有以下优点:
. z5 K: v( J+ A, Q
; Z# l- I  y1 G1 z3 Z  1)、输入速度快;
# I: D4 ~" |/ l6 y6 V1 w
3 S$ V3 j5 Q  J# Q3 ]/ z# }7 }  2)、可靠性高;# s* s3 r4 ?# C6 {" F! _7 W
; b" z& b/ }+ v; w/ c
  3)、采集信息量大;' t' S# D. P+ L6 a; v6 h' ^
5 Q3 s8 W: L0 m  W$ C2 r7 p8 [
  4)、灵活实用;; s6 @4 P- |1 Z8 r4 G& R7 Q/ l

; R- h0 R% |9 Z7 ^; g4 P5)、条码标签易于制作
7 _0 Q, t9 Z9 v' X% l2 X
9 i' v0 F; j6 y; E8 e, z) N5 b6)、识别设备操作容易,不需要特殊培训;
9 r% Q% N! T# C+ F
2 m5 H5 g  U! a/ `$ a$ f7)、设备也相对便宜。: `3 e4 b! s, L. r- ^3 |1 E) t

% r+ ~* @8 r" g- y' L因此,在平时可以自己构造的加密的编码规则,利用现成的条形码扫描器,可以很快实现特定功能的组建嵌入式的或基于PC的条形码识别系统。
( E% f/ ~- o+ s
, B- ?: t7 i# T  |0 b由本文看,尽管一维条形码在各个领域获得了广泛的应用,但其安全性值得商榷。于是,在安全性要求较高或者要求条形码携带更多信息的领域,人们普遍采用二维码。常见的二维码如图四所示(更多资料参照文[2])。# B$ j! S& u1 \
4.png 8 C8 r) t0 i( f8 C9 h0 V
图四:常见的二维码: O4 S0 ^3 J8 r$ Z. E5 m
( W0 c) D; k, n: |& `: A, A
6.免责声明与注意事项
3 U! x: b+ A' ?. ^' a8 S8 d, @9 [+ E' J2 C+ }( [
版权所有,翻版必究。
5 s2 h! f3 w+ T# I% h$ ~' t6 j  l3 }0 }) p7 F3 I
技术在于交流。本文旨在交流条形码制作技术,并为个人制作提供质量较为上乘的图书证的方法,非经相关方面授权,严禁用于商业用途。有不法分子由此牟利而产生的法律责任,与本人无关。- i" R8 `) P1 N* f1 ^1 U# O6 ^$ z
3 s9 W- O/ t! k% q+ }
任何单位或个人认为本文可能涉嫌侵犯其合法权益,应向本文作者提出书面权利通知,并提供身份证明、权属证明及详细侵权情况证明。作者在收到相关法律文件后,将会依法尽快删除本文中违反法律的内容。 9 Q$ _4 K5 c: I" w

; ~* d: `( Q" _* n: n+ V7.
' A1 j; |! ~0 O. o2 @8 l/ \参考文献
$ G% `; r! L1 y0 F5 `
% L0 U- I& |5 R2 T; E[1]条形码—百度百科http://baike.baidu.com/view/13740.htm[2010-09-25]
  Q- ]- p: ?5 i5 b+ A1 C' U' P! |8 p# G2 b% M0 ~2 Q! g7 a! p
[2]二维码—百度百科http://baike.baidu.com/view/132241.htm[2010-09-25]1 `! L7 ~, ^7 C- |2 x( E

) c4 r/ |) D7 [. `. Y8.4 i; }2 ?! ]; w/ f6 {' s
附录
0 J: B. i) e" H3 z- q6 P+ ~7 |! K& r3 e
相应的MATLAB程序代码如下(该程序经过简单修改,可以写成函数的形式,更方便地进行各种编码规则的条形码的生成):
) k0 S! ?5 P* V8 [. ]& G
% Y; @7 K+ P! o4 K%barcode.m0 B4 X: n2 o% f
' t$ j: p6 s# X- p% Q4 k" r) K) M
%生成学号a对应的条形码
# X, R: b8 \  Q8 g6 o
4 n: B6 O) n& w& S: F9 w' n( l+ ^0 x" H%2011/09/25 13:24 BY小谷同学
+ ^5 y5 x1 Z4 B; a, O0 h1 O# C1 E# H% Q5 K" n1 p
a='1234567890123';%学号,自行更改
# j* c' a" i- b; _* n0 i$ [- y, J- w2 B) y
Black_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;
3 \1 v2 P9 \- b, j
8 }  X0 y2 m$ i6 _0 N: s0,1,1,0,0;0,0,0,1,1;1,0,0,1,0;0,1,0,1,0;0,0,1,1,0];%数字编码# C# e6 S& Z1 T) R' f9 }. t: O3 L( O
3 X' D: r, t) k: v* i+ v& g
White_num=[0,1,0,0,1];%插入符的编码
3 I  k* a8 z' F4 l  X' X  Q
( w9 D; Q5 F/ [. v! Y' d* }%Black_SE='00110';0 }! h1 y# Z$ h
0 V5 k" C& d& K5 H& u% X
%White_SE='10001';White_M='01001';
7 d# d# m! U) }
8 ~4 f+ @1 E* x" \3 q- ]0 cbarheight=30;%定义条形码的高度" i% B( r0 c& y0 B) ~6 n* X
) P7 ]5 F0 ]- w. r' Y% ]
barwidth=1;%定义条形码的像素宽度/ S) B% s# l" A: Q7 o  _+ f2 J

& m! e. a  g4 _
* F" d: O6 h0 Q%可以对特定长度的输入进行控制,本文规定长度为13
$ K+ w6 J6 K8 h4 Y8 a( Y6 n8 M! j& d, ~* Z' ?* g- i7 x! I
if length(a)~=13! M3 O8 {! {! x$ Y! }9 G8 Y

* ^0 X/ E2 |9 o0 @9 x# E; U+ D1 d# S5 g* ]8 @$ P
error('图书证必须有13个数字');4 O$ B/ L' o* d0 @/ C
% t0 D% E1 [/ @8 |; l
end+ J0 g+ l3 V% `4 e
* Y6 w. X: C2 D8 s1 ^# ?7 m
7 g6 R' G+ r* l" r0 J) m+ J% Q
barcode_SE=[0,1,1,0,1,0,0,1,0,0,1,0,1,1];
& A  {8 S& F3 [- m- D" p4 H- C8 ?. s  c, }( W2 c4 M; u
%为方便,直接人工得出起始与终止部分的条形码9 s, X2 D, J( e$ L
* u" |  h# @8 B0 ^0 \5 ^
%也可以由程序生成.* v; M+ o& h# e; j

5 q* _# [  T( j9 k1 Gtotal=length(a)*(7+7);% X# K  p- `% @
# O5 z  y! d( ^4 M2 w7 R
%条形码的总像素宽
. r+ b) t3 I: g; {: u$ U/ M- \/ k: f7 e
%也可以不用求,因MATLAB提供的均是动态数组5 a- q  [& B( g/ U* [

/ |; \" V2 r- p' u# ms=1;%计数,记录: Z' U% h7 ~: }9 c9 E
7 t. [1 r' |! Q* y" M
( }4 y5 q! z3 [/ K3 P( K
%由于利用for语句容易出现不可预料的错误, F1 a! t2 A, _0 T( W: D

, |+ e7 }% k$ _" L' A7 Y& P%大部分是数组的行标与列标的调用问题,于是采用while循环2 B: U4 T; L/ f# I" @

8 Z9 N$ m! [8 z% E" V! l6 V% C%嵌套循环,得出数据部分
7 l- `/ i# p3 X$ b: A1 n, e, p4 j. y; s2 t
m=1;9 N; N3 X, n$ c9 _

" b8 @& o* t! \& ywhile m<14 , _0 x  o: V! P& y# }/ s+ I

& A, s6 U% |1 r; l' m- A- g! R; L$ Z2 ~6 _# e( M' i9 j  u
if a(m)=='0';
( q( y7 L+ a6 A" R! u1 Q! I" c
) U% Z  i/ y9 s, s4 y8 M& R  y
0 R, i* @" q! z1 m: M! P6 W: `t=10;
$ W* }: W8 G- t/ j6 R8 ~/ |$ S0 X4 N: ^. v* r" W7 |5 v7 B5 ~) p

+ h9 b+ a2 k5 ], ~- Q%若为数字零,应该调用的下标是10
- U1 Z$ X4 t) J* Q* A$ m5 r& |1 V* d, J9 T/ G! I. \( s% c
. s# ?' M) [0 t9 J/ d+ n, ?& v' Z; O; y1 [
else3 A, @; m) j9 B
  m1 Z" J- j/ g. K, B5 C/ T0 o
  L! A4 f2 `5 I0 a# J1 @( l" q+ {0 a
t=double(a(m)-48);0 {2 j7 t/ J5 |, \0 a) B

' h7 R* K- f3 J- Q" a%由于输入是ascii字符,转换为整数需要减去30H,即48( g8 F7 g9 }! A( o4 j! `7 \: Q( ?
# C/ a0 b$ s7 y( ~$ k9 c
! p8 B4 M; G: d
end
3 {( F8 a8 p, ~+ ?* q% }: U) h5 a. g# `! A% C  d. e) H" k) f8 o0 F
, T+ v8 M3 `6 _+ K, a, ~4 I
n=1;%同样的while循环
# r7 ]" B0 e) [  y9 @4 y& k9 I5 b1 k
  J+ d9 H  ~" ~/ W7 a7 R
while n<6
1 z5 o% L. \& z1 E4 ^/ b; Z0 ?4 x4 t4 B) c- A

! e; n9 t& W  b! Q# c$ X" F7 _7 qif Black_num(t,n)==05 g: Z  ]3 n% y8 n* v! L

) K4 w2 A( f  f( f: Y! G6 L$ k0 r* @8 V* g
barcode_M(s)=0;
: v3 a* p2 K& g" U5 W9 M1 a
  q: l" X$ \  z/ @$ ~3 f7 c4 n; V# J: S
s=s+1;
! _$ ]& o/ ^" q* X7 @2 K' e
, d6 x' |% B( T% s) p' P
! [+ K& r: z, p& ]8 I/ B$ kelse& c6 \. G' V/ ?' u' K

& Q5 y9 A% f/ H1 {: U3 b5 V# M0 J$ U! B' f0 s# T% C
barcode_M([s,s+1])=[0,0];
5 c6 a- M* }3 I( F2 q) h9 `$ y* K( c$ H4 I) s8 f7 \( H

" n* z! k  U  K8 n3 j4 ^s=s+2;% f/ K) Y  s8 I6 P$ o
; ^  e. S) f9 U( q  S

) l: V, c% w7 T2 r  O) ~end1 x7 L# F. O5 F% p1 X3 v

) [0 ?, R$ ~' s, f* q" S% s- `- p: W  S' q+ p+ g9 N
if White_num(n)==0
/ o6 {. F- C" k; n1 i- N+ O
& L: E8 N, L! |* h2 h  h- o
& C- j  `; s7 _: mbarcode_M(s)=1;# t7 }- P, n) {" s6 q! i
1 b$ X# L7 ]) }9 d, Q

  H# V. A  r3 H) |# t  T: }, Us=s+1;
: `: g4 w( M4 ~
" f  ?8 k7 m  h  Z9 E
: U, Q% P2 t$ \else( R, w1 ~6 I& t+ \

" y0 Y$ U5 S5 g2 x) F7 p- ]1 }/ A/ Q: q% x
barcode_M([s,s+1])=[1,1];) S8 j- i2 Z! e' m' t6 c
$ y# q2 w& I' }  t8 j# C- U: W
" H0 J) C! T0 T$ C. U& t: X( Z
s=s+2;9 _% A  a% n8 J4 b# N; j) N3 {
0 _0 F8 N( ]7 z, x$ k8 \

: J) [( p- t5 i+ J* W6 f# j9 ?4 hend% i" t; l: K9 H; F

5 R  c2 w6 s" z( a! V# q
0 d: a* Q& s: w' O% [1 p2 @n=n+1;4 i, [1 X& ~( A7 e0 A
3 v. u9 e' ]# i: p8 W9 r" ^" W

# g6 X  O, o9 ~+ bend
5 {% Z% F% ?- p' p! x; X6 U- E2 O$ V7 @: Q# ?( d
m=m+1;
- L2 W: L( S( G% t5 E0 t' M' ?% `4 U+ Z! E8 t7 }* X. B( A, R0 S
end9 d  K  S+ d5 ]0 z' B
, Q4 q0 K+ T8 ?# ]. K7 r! D' R

2 W$ P' g( @2 _6 l* \+ a! Obcode=ones(barheight,1)*[barcode_SE,barcode_M,barcode_SE];5 p9 n# H$ s2 ?: p3 Z' c
/ N" E  }6 k) S6 V+ C2 R
%将一位矩阵拉宽,生成给定高度的条形码对应的二值图像的矩阵' r2 N/ T3 w7 r+ c# |% {( G: b
6 @2 z% Q" t, _- L. ?9 M
bcode=bcode==1;%将数组转换为逻辑数组(Logic Array)
8 n* d- P0 g6 R0 @' T6 @* H5 h7 E
imshow(bcode)%显示所得到得条形码/ X' T# t5 f: w1 X$ h5 V$ W
7 q; a; \% ~5 C; W, U1 R
%然后可以自行存贮得到的条形码
5 N1 ~/ [4 ?; X0 m6 o0 l4 s0 m) J: q7 `, q4 q" F: E
%然后用PS等工具得出具有自己特色图书证啦4 G3 Z+ d4 t4 \& I, R  u, [
( R0 H. i/ R; {4 d
9 Y, k7 U9 i( G. C8 i/ W

作者: 孤独的修行者    时间: 2011-9-29 15:16
够强大!!!
作者: lszf    时间: 2011-9-29 20:04
强啊
作者: freedomfox    时间: 2011-9-29 20:36
很强大啊,
' f. {& N/ N7 a* D- F1 U可惜首先我联想到的是可以用来制作假的书本条形码,用于还不见了的书,,我这是在犯罪吧?
作者: buguniaoo1991    时间: 2011-9-29 23:50
freedomfox 发表于 2011-9-29 20:36
( h; N% z. q1 [很强大啊,
1 P6 `. \8 s9 a可惜首先我联想到的是可以用来制作假的书本条形码,用于还不见了的书,,我这是在犯罪吧?{:3_ ...
1 z' }0 M$ `9 B' N, T7 M* U
可以,不过你的学校肯定有记录,一旦发现,后果很严重的;
. W1 c7 ?0 u- G  r目前我想到是:
2 k- Z# n( ~9 f# P) q3 k一、去周围学校的图书馆。
6 \( O8 |! U8 G) W二、自己丢的图书证自己做一个一模一样的来。
. D( I& P: b0 |+ W3 s! t7 l三、将图片弄到手机上,然后用手机刷进图书馆,吸引眼球
6 _0 ^* h2 g1 y1 u. z四、将来毕业再回学校,再做一个图书证进图书馆+ Y* W) c% H( [3 u

作者: 书呆子    时间: 2011-10-2 22:53
呵呵呵6 u; Q: D' p7 e0 Q! G* T
。。




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