【阳光飞狐__与财富同行】
标题:
有会编程序的朋友吗?麻烦请进
[打印本页]
作者:
logoslogos
时间:
2009-11-21 10:19
标题:
有会编程序的朋友吗?麻烦请进
有会编程序的朋友吗?麻烦请进
# r# ]( P( p- E9 C1 N/ I$ y. p" L
这是写好的一个源程序吧,能把它变成可运行的软件吗?万分感谢!!!
& }8 m, M2 p' B5 ?2 v
( ?, L" }) [) m% c
英语单词测试小软件2009-08-04 22:39 今天突发奇想写了这么一个小软件,主要功能就是测试英语单词,事先将本章节的单词记录到任意一个文件中,以便随时进行英语单词侧测试,给出汉意写出英语答案,输入0为推出测试,完后给予评分,一下就是源代码,主要训练的就是文本函数的操作,相对而言没有什么复杂的算法,都是一些很容易理解的函数,就不做介绍,如果使用的cmd无法输入汉字开始->运行->reg add HKCU\console /v LoadConIme /t REG_DWORD /d 1 /f就可以了#define MAXWORD 100
: |, M; y4 [8 @2 \" J
#include<stdio.h>
7 |5 ?8 y3 K. `8 [- X$ r8 E# _
#include<stdlib.h>
X0 M) z3 `# S! H& K7 U
#include<time.h>
# K0 K7 J% {' M+ I" e
#include<string.h>
$ o: `* t( K8 m$ a2 g) {2 ~: M: C
typedef struct
( M0 c7 A2 X0 {- K2 u0 [' ?; X0 G
{
/ V3 `( x# _ a+ s4 J
char chinese[30];
0 k; A) O) T8 v5 G
char english[20];
, X7 m* n9 i2 O5 }" {$ ?
}word;//一个单词
) M: H1 J9 |. o& w4 A3 I# N" y; j( V
typedef struct
- J2 Z4 X' m* w* Z$ Z# y' w+ ?
{
! K# y5 r4 F+ D8 S4 N4 O
word danci[MAXWORD];
( u- U$ x4 C# D0 i. P. w! v
int line;
/ a( i+ \( ?- i$ {. ^ ~$ @
}group;//单词表
: N/ @4 ~! t1 r4 I% l$ ]
void openwordlist();//打开已经存在的单词表
- F0 Z* \) K+ T/ ?
void foundwordlist();//创建新的单词表
3 h' ?0 N1 F* F% D# E& s! M
void amendword(char *);//修改单词
$ ^5 `* _, K) i1 o- U
void deleteword(char *);//删除单词
2 B: s& b$ l' ^2 ] Q
void appendword(char *);//添加单词
" A A, X; R9 Q$ q. _3 |& `- c
void examination(char *);//对选中单词表单词进行测试
/ X9 `1 G0 Q$ c8 V1 P. Y
void putwordlist(char *);//将单词表输出
3 P0 h- R: p. X) q
FILE *fp;
* I. g/ C5 _0 K( {* F9 N" c! r
main()
) H9 v6 A- i; h4 L4 _# ^7 C
{
/ i& v- e! z1 l: ], S/ N( r
char ch;
% V# ?5 p7 l: O
srand((unsigned)time(NULL));
& r) ~( x" D9 n$ H I/ Z9 Z
printf("是否打开已存在的单词表?(y/n)\n");
1 \% w. T2 {, v& y$ `3 \! e
fflush(stdin);
! E# X$ N& O* K' {" x7 a3 H
ch=getchar();
$ r. b$ a9 [7 A- ^8 l: `# g
if(ch=='y'||ch=='Y')
% U! L" Q Q% l1 j6 C+ h. K- r
openwordlist();
+ ~" ^8 V8 i! y( `8 f5 I2 x- f
else if(ch=='n'||ch=='N')
% ~5 R5 \& I1 |& I% E
{
- `4 T# p; ~4 S4 y
printf("是否要构建新的单词表(y/n)?\n");
F$ c O2 h5 U4 t# q
fflush(stdin);
4 D. L8 k; V7 }- r" ], e+ |
ch=getchar();
7 _ u3 W' S! A K- p
if(ch=='n'||ch=='N')
6 b) N% w, R& g8 @0 n; h/ }* n( z
{
) r: e$ D/ v U3 h! D9 l
printf("退出程序\n");
# [: R9 L& {. R7 X! F8 k$ M/ |8 Y. c
exit(1);
( P) z3 q' i2 ]7 z$ ]
}
7 c/ j5 s) s+ \; t, u- |
else if(ch=='Y'||ch=='y')
6 E9 X1 J) o+ B0 j/ @6 [
foundwordlist();
4 I" x$ ^2 @* W' H
else
6 B6 N% M% R: E+ s
{
0 g) d! n! U: R: m
printf("输入错误程序退出");
8 |' l8 N+ ? \( V- N
exit(1);
4 s1 x' T- G( n% e z1 `: ?
}
; q; A* ^# k/ b
}
3 s' `2 `3 h' b7 f0 e
else
- d7 C0 W1 t5 l+ [0 }9 ~) m0 r' W
printf("输入出错退出程序\n");
! e J& F! T+ L2 @- p# F v
exit(1);
' l( Q! a4 I7 T
}
/ F5 L5 w8 X: A: _: R- a1 O
void openwordlist()//打开已经存在的单词表
! _1 L" M% H5 ]5 Q0 O8 J$ h
{
" u0 E( f4 v3 {' q5 W* G
char wordlistname[20],ch;
9 s W- n2 m8 L& e/ g
printf("请输入要打开的单词表的位置\n");
$ Q* R* w6 S$ O
fflush(stdin);
]) ]+ m4 d- v7 O6 H
scanf("%s",wordlistname);
- T0 ? F3 E% W. O; f7 o1 i0 D
system("cls");
1 b2 q) I! @( R, d4 ^* o! R
while(1)
+ {# r5 j0 d& J9 {7 A3 A
{
: K" o9 @0 C5 C) f" b
printf("请选择要进行的操作\n1.输出单词表\n2.修改一个单词\n3.删除一个单词\n4.添加一个单词\n5.对此单词表进行考试\n6.退出本程序\n");
3 z7 |6 m3 @* N+ k4 ?3 {5 c
fflush(stdin);
' _8 R& y, Z( P' J2 R V2 C
ch=getchar();
4 |, Y6 E2 L7 ]2 _: V! ~
switch(ch)
7 A8 I5 i" u h( ?' ~3 P8 P' W
{
# x V( I" C' W4 [5 e7 ~
case '1':system("cls"),putwordlist(wordlistname);break;//输出单词表
! ^: r4 C! U( U# o
case '2':system("cls"),amendword(wordlistname);break;//修改一个单词
9 }/ ^0 {6 w3 a; n7 m6 }- [: H
case '3':system("cls"),deleteword(wordlistname);break;//删除一个单词
0 }9 B+ D F$ v2 w7 ~
case '4':system("cls"),appendword(wordlistname);break;//添加一个单词
/ }, h7 w; }- I# d7 _6 M x
case '5':system("cls"),examination(wordlistname);break;//考试
$ W' A9 h2 S7 K
case '6':break;
, q' ]& K, _5 y) O V0 _. {
default :system("cls"),printf("输入错误\n");
/ o& {3 k1 g7 c4 K `2 Q t5 q
}
) o# j: x8 A |) u/ h
if(ch=='6')
) Y$ F0 v$ e% m) l8 v! v1 t6 @
break;
6 k" ]8 ]' c$ C( {
}
; r4 `" k# [5 G) d. ~( c9 n
}
. p2 {2 D2 X. k& `/ Z6 H
void foundwordlist()//新建单词表
3 r1 ~+ e _1 {& t- |
{
d5 C% d/ _. ?9 x- I" X. e4 p
group g;
! @1 i% m' I1 a1 K& P' g( z# f% k
char ch[30];
5 G( u. ^9 Q$ F: c- X
printf("请输入要创建的文件位置及名称\n");
2 @. b3 J9 ~% C% w$ U! p
fflush(stdin);
7 M3 P1 g5 H F6 G. `9 [, @/ h1 a
scanf("%s",ch);
/ |% f" a4 u0 s7 F
if(!(fp=fopen(ch,"w")))
2 |! h8 J; l5 s* h$ \/ E
{
, D* x l) n: k2 f; |
printf("文件创建失败\n");
) ~1 x7 J& K8 |0 k; R& j
exit(1);
2 |9 c' H: f" J& b
}
5 j, Q8 }' x; E; E" d/ i1 f
printf("先输入汉意,再输入英语,汉意0表示结束输入\n");
7 g, L7 M& A8 t; ^2 c8 A6 l! U1 I
g.line=0;
; }3 X; z# t, K3 g1 U& u# }
while(1)
3 K! O! o8 I2 F" o1 t% v4 ]
{
/ U7 I( E# |' {2 y: J; I c
printf("请输入第%d个单词的汉意\n",g.line+1);
' x# |9 X+ b* J
fflush(stdin);
6 l% A& }! G) a7 o' f8 D
scanf("%s",g.danci->chinese);
- y+ b A9 \1 O9 [7 h
if(!strcmp(g.danci->chinese,"0"))
' a3 p" B- Q9 h N a. b
break;
2 C7 A7 s! j4 ^
printf("请输入第%d个单词的英文\n",g.line+1);
# g7 P. W3 N7 G5 U3 ~
fflush(stdin);
% o# }7 c* M6 J) k; D8 L8 l3 b( z
scanf("%s",g.danci->english);
" `7 u, e; D/ K$ w1 {
fprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);
( y- \1 Q8 C# L+ s" Q; {0 y% ]
g.line++;
, K. X9 c- S+ }' Y+ r8 x( O; \
}
: u ~( X3 V" P1 l
fclose(fp);
! i, X) b9 m7 B0 y, K( s
}
+ M- M0 ]3 [5 v4 p2 J
void amendword(char *wordlistname)//修改单词
/ G# Y- `) j/ k6 d" h
{
4 M! B- P% J1 F' |2 t7 I
group g;
4 e4 d, k1 P. r
char amend[30];
9 `3 G8 h. V5 e3 Y9 w
long offset;
( \ z' s0 T! n7 ?, S+ j2 U, I
int i;
) J9 j: }7 a( j$ _8 F) N
if(!(fp=fopen(wordlistname,"r+")))
9 G! z1 k% F; E1 \/ u
{
$ X. M T: o1 T2 i
printf("打开文件失败,请检查输入文件路径正确性\n");
* k# r3 u0 Q# \- n0 s: m
exit(1);
, l& E+ @# R- r9 K1 y }
}
N" L3 p8 A/ _' J) r
printf("请输入要修改的单词的汉意\n");
. B3 F# `; W# m# f& L
fflush(stdin);
% V) v" A9 t- |! n6 ~ n
scanf("%s",amend);
5 T, ?4 e" N- x+ V8 C6 f6 K
i=0;
9 V2 O* T' |0 M/ d) V" `( h' r
while(!feof(fp))
" j$ S5 P( s2 u+ k6 } ~2 b; K2 ^
{
) \3 ?' ]6 W* r, M( J2 x8 f1 W
offset=ftell(fp);
- e) k+ y2 J5 o1 E3 {+ C) r
fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);
, I: w$ T8 a3 j8 n+ C
if(!strcmp(g.danci->chinese,amend))
0 J! e, v8 \ ~: t# f% X; R
{
9 n6 v: f7 F# k$ [* R
i=1;
0 F" l* O I. C* p H
break;
6 L( D- H4 A/ d
}
! p8 [9 E9 J t0 ~0 j- a
" G, b8 A+ L2 y, H$ o4 W
}
( \! t! F2 C1 D9 V, T' o( `
if(i)
0 X' D5 x& A; t
{
7 s0 z% Y7 u; i7 H0 k% A# `
printf("已经找到,记录为");
) `& g& L5 Z2 L$ L
printf("%s %s",g.danci->chinese,g.danci->english);
5 x) V$ e' }' _/ N
printf("请输入新的汉意及英文\n");
' r, {4 D! a: q% {) R7 A+ [1 V
fflush(stdin);
8 v0 t V; `& K; U# r
scanf("%s%s",g.danci->chinese,g.danci->english);
! e" C% y8 Z! Q W5 ~
fseek(fp,offset,SEEK_SET);
2 t3 T1 g3 `. H! P" W1 L
fprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);
! U' b& a7 e* T1 P
}
4 B/ G* Q* q! ~ `1 p: z7 [
else
$ x# L/ A6 W! q
printf("对不起,单词表中未找到此单词");
9 m5 G; ^9 V+ I9 ?1 w
fclose(fp);
* A( e3 O) V! a* Q& k' A
}
# X) J, s1 |+ ~ c+ k/ E( p" g
void deleteword(char *wordlistname)//删除单词
) l* W( l8 N! V1 w
{
/ E- C2 r4 s1 ~! L% q5 H; Y
group g;
- E# O7 p9 `# |# [. b, C2 \
char amend[30];
6 L1 G$ u; j: k
long offset;
1 O3 g Z8 C; T* x' N! k8 l, ^
int i;
- q% Q6 {2 V( D U- |8 l0 x3 G( f
if(!(fp=fopen(wordlistname,"r+")))
* {4 c! _& X) i, I3 q, I/ N) Z5 \
{
8 J1 O+ a W2 H3 U3 v9 k& B# n* g
printf("打开文件失败,请检查输入文件路径正确性\n");
! x5 }; J5 I* K/ \
exit(1);
2 F2 K( L5 I7 s! F K: Q, j
}
# q- i' u6 h5 c
printf("请输入要删除的单词的汉意\n");
% @8 d! W% g1 H, q- o
fflush(stdin);
" `% q( r! k5 [/ W" f# {& `
scanf("%s",amend);
& W& S% @" h% N5 o' Z
i=0;
$ `1 G& `; n/ a+ n5 }
while(!feof(fp))
. K4 {7 R" D+ \6 @/ m& V0 d6 [$ r
{
+ g4 x2 z8 @: Q% `; n4 R
offset=ftell(fp);
1 `) I( h n k: y9 S
fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);
5 y0 `: u+ B5 I$ h% ~# o4 D
if(!strcmp(g.danci->chinese,amend))
6 p7 j, v# y% _9 a" W5 h8 }
{
- c8 L- N' M; r; b% x
i=1;
$ ]7 e! u+ W. a) ?! ~
break;
) p# r! z6 m. [0 R0 K6 M+ u: t; c
}
" M, q6 m: R+ j
+ T9 ~6 U2 p0 |
}
1 Q4 `1 T7 B. Q# N
if(i)
" @ o6 W, I, g; ?# \) Q: C& i. ?
{
( U& Q+ i# l3 @4 A9 r
printf("已经找到,记录为");
. F" k* I& @: F5 K b8 `+ {' E* l
printf("%-30s%-50s",g.danci->chinese,g.danci->english);
( m) D9 L: C5 {1 n# o7 \, q# x' ]
fseek(fp,offset,SEEK_SET);
: i8 {. [8 A; n% {) c6 s
fprintf(fp,"%-30s%-50s\n","","");
. S4 w0 h2 e: I$ H& L* t1 n7 ^. L* A
}
5 t& L& ?: J0 d) ]# F0 x
else
! k4 c" m+ Y4 R+ ~$ G; f
printf("对不起,单词表中未找到此单词");
+ w- G7 w5 n( f3 j! i! W$ L
fclose(fp);
% q. D! i, C7 r6 V7 [+ q
}
0 n+ U `" H+ \) O
void appendword(char *wordlistname)//添加单词
# }& e3 j8 u6 D* w0 W$ K2 b
{
2 J' v* H$ c; z+ S3 ~
group g;
1 x: ]. l4 d) }7 k) u
if(!(fp=fopen(wordlistname,"a")))
3 r; L5 g/ l( l! T; e/ E, ^" H
{
# v, ~; G( S T% j& N5 y
printf("打开文件失败,请检查输入文件路径正确性\n");
6 t+ R$ L8 a5 e2 J8 I9 R, f( r* q
exit(1);
) m% R& [9 [8 L& m" Y/ C4 r* g4 G
}
0 h9 {1 @3 ?% x. l
printf("请输入要添加的汉意及英文\n");
7 K2 B" r+ c6 Q* U% J$ z s
fflush(stdin);
2 f1 V5 A% e0 P0 ]
scanf("%s%s",g.danci->chinese,g.danci->english);
" t7 i8 `; Z8 x5 K1 d
fprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);
! \# u- H3 I7 z: A) |
fclose(fp);
, E; n* M3 ?5 W
}
2 {# ~- Y2 w! o3 C
void examination(char *wordlistname)//对选中单词表单词进行测试
G p, l9 u. D4 g1 |' Z$ v
{
9 T$ x5 a; J5 _6 L0 N t
group g;
- g" d6 C) Y: B2 W9 P
int i,j,k,l;
' z8 ?/ q$ _" W" h
char resule[30];
/ G) @" l. K8 _4 l
i=0;
- m6 _6 O' Q% W$ p9 ~. R
if(!(fp=fopen(wordlistname,"r")))
( Y, T& P$ a& A- g4 b' r
{
" u9 y6 P5 l" P
printf("打开文件失败,请检查输入文件路径正确性\n");
( S( X5 P* }* D; }( ]- X
exit(1);
/ g) f+ u" s. M
}
5 {; x% [, y/ f
while(!feof(fp))
' n0 S8 X: z* n& r* X- w
fscanf(fp,"%s%s\n",g.danci[i].chinese,g.danci[i++].english);
( n7 l4 m0 W w3 F0 S+ X
g.line=i;
$ E# E- a, p% z# e
j=0;//计算成绩的
i1 F2 ]8 M: s3 B9 ?
k=0;
5 ^% G% Q/ J7 p! S
printf("答案处输入'0'为退出考试\n");
% b/ D/ ?4 o& q5 V2 L+ b
while(1)
: N0 y' D0 @: z; U" X3 L% }9 s! o0 a2 l
{
6 V7 d# Y& X; w: i3 ]) p( V
j++;
, j& M3 A2 G. {7 o% a' D6 k5 L
i=rand()%g.line;
) {( G1 S9 t) F6 p" \/ h+ j& a
printf("%s",g.danci[i].chinese);
2 m5 t- y% ]! k: m* n6 V: r
fflush(stdin);
9 }1 H/ y; Y t7 Y1 l. O0 v( A, i
scanf("%s",resule);
9 r# X$ I4 N; X: U) v7 `
if(!strcmp(resule,g.danci[i].english))
2 T5 `0 B4 Z5 g8 p( U
k++;
, M7 G1 l) S- b* _! B
else if(!strcmp(resule,"0"))
1 v8 m2 @1 k# A1 _
{
( z5 H. B2 k3 B+ g
j--;
2 l' p/ h( J8 k9 @& @$ g+ x x, N7 F
break;
% `! D: C! R; ~* O% D
}
$ _6 }0 d7 N! n! f; N- ~
else
4 T9 K% N/ d. k Y' |( R
printf("抱歉输入错误正确答案是%s\n",g.danci[i].english);
' a6 K, I3 L! d6 C) q! c
}
: n: g& I [! x. D0 F
l=k*100/j;
' A+ A2 {" e3 d% J+ Y9 J+ N
printf("一共测试了%d个单词,答对%d个,正确率为%d%c\n",j,k,l,37);
# B1 _! X% B- z6 L7 o
if(l<60)
8 W' [, d- t2 A7 E- L% b @
printf("本课程单词掌握程度较差,请加强训练\n");
# X$ Y2 Z# H4 L4 S# ~
else if(l>60&&l<=99)
. S% A5 ^; B- m8 B
printf("本科单词大部分已经掌握,但还是有少许错误,请改正\n");
# o3 b6 n7 \ {9 L" p% P: @8 l) B
else
3 z; ?; k* y; ~5 a$ L& A. D
printf("您太棒了!满分\n");
3 k/ `* ~. e( E3 m& }
printf("按任意键继续...\n");
4 s1 o' Z1 [8 l, `0 j
getchar();
& y$ h; C }% t7 I3 @+ B
}
, k9 \, @1 f# ^
void putwordlist(char *wordlistname)//将单词表输出
t& p& W) J2 X9 c: d$ K8 y
{
' ?: H2 z6 R% e5 q: a: {. K4 D
group g;
+ ^ M% Z: {2 `4 e* f/ k
if(!(fp=fopen(wordlistname,"r")))
- U3 G/ R9 J1 k& ?+ n
{
& J: x! Q/ h4 W V+ k
printf("打开文件失败,请检查输入文件路径正确性\n");
( c, j# T0 l' R
exit(1);
4 B# ^( }% v6 k! l6 Q. ]0 S+ l' k
}
4 s8 ~# H2 Q6 |4 q N! ^; n
fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);
' t2 ]( B9 ^. d- K
while(!feof(fp))
7 z% v$ n( f2 @
{
6 q6 l; a+ U; T. ]9 w- E- E- G
printf("%s %s ",g.danci->chinese,g.danci->english);
, n* x$ w) L7 L L
fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);
/ Q* T$ X& m' `, ]$ E, k, R
}
, z6 I" e, h, ~- \$ n" n* B4 a% f
printf("\n\n\n按任意键退出...\n");
" F1 W1 y! q% s
fflush(stdin);
4 ~1 U, E1 I) `# x7 S
getchar();
+ Z# }% _) P0 y9 _: ~
fclose(fp);
3 I0 }. D+ P( _
}
8 G* h9 w, N" |; ]- n
+ |( a1 E" n/ i/ \* q5 R6 i; ~
[[i] 本帖最后由 logoslogos 于 2009-11-21 10:22 编辑 [/i]]
作者:
mrgjy1818
时间:
2009-11-21 13:47
好像是TC,到平台上编译一下试试
欢迎光临 【阳光飞狐__与财富同行】 (http://bbs.88158.cn/)
Powered by Discuz! X3.2