阳光飞狐

【阳光飞狐__与财富同行】

 找回密码
 手机注册
查看: 1931|回复: 1
打印 上一主题 下一主题

有会编程序的朋友吗?麻烦请进

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-21 10:19:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有会编程序的朋友吗?麻烦请进! {- Y- y2 ]' ]6 e7 j6 O
这是写好的一个源程序吧,能把它变成可运行的软件吗?万分感谢!!!+ v" y2 N$ L0 Y/ {) w8 h6 y

7 w1 F7 d7 n% H8 Z英语单词测试小软件2009-08-04 22:39        今天突发奇想写了这么一个小软件,主要功能就是测试英语单词,事先将本章节的单词记录到任意一个文件中,以便随时进行英语单词侧测试,给出汉意写出英语答案,输入0为推出测试,完后给予评分,一下就是源代码,主要训练的就是文本函数的操作,相对而言没有什么复杂的算法,都是一些很容易理解的函数,就不做介绍,如果使用的cmd无法输入汉字开始->运行->reg add HKCU\console /v LoadConIme /t REG_DWORD /d 1 /f就可以了#define MAXWORD 1002 K) G6 n  R5 [. C
#include<stdio.h>, F0 A5 J% A' ?+ K2 k
#include<stdlib.h>7 q' K6 M* z0 T  F
#include<time.h>
5 Y+ M  {7 C' S/ }$ y#include<string.h>
3 S9 L$ ?# b+ G! k/ G7 Qtypedef struct" K/ h1 e4 j& d2 p
{4 |- {! `- P5 i1 H4 R4 p
char chinese[30];
) T/ K; n6 e* O* Ochar english[20];
# Q+ p5 a( s0 E& v9 `}word;//一个单词
5 H) S" `; P9 v) `. H' C$ Ntypedef struct
6 w6 `* M, @  Z) ?- d7 A{( Y0 }3 }) H7 T  d+ c2 o* }
word danci[MAXWORD];
/ ?! a1 y$ L$ C; f- h; Iint line;! F% a# w  a! f4 m
}group;//单词表/ J5 t' e; V  o. |- i
void openwordlist();//打开已经存在的单词表
3 p7 F! m& V$ m/ ~0 @9 [6 D7 x. ~! z; wvoid foundwordlist();//创建新的单词表
9 w/ S$ G2 i( ]+ s1 \! B; [) }void amendword(char *);//修改单词+ m1 k3 ~6 [, P! [5 X& |& f
void deleteword(char *);//删除单词4 E! J9 V# i) A  W
void appendword(char *);//添加单词
5 k& r7 F- y: |6 y$ g4 Jvoid examination(char *);//对选中单词表单词进行测试
' ]/ C6 `/ y$ ~1 A* B! |* Xvoid putwordlist(char *);//将单词表输出
$ q# K  D( ^& ^2 {2 M' M$ XFILE *fp;
" J1 j3 F+ Q+ z! q2 M2 F$ bmain()$ L3 m/ e7 a" p, _
{# z5 X& E0 e, o( W# e) d
char ch;7 w3 b! h3 Z# H6 P9 X% L4 P
srand((unsigned)time(NULL));
! w2 [+ P8 l7 w' j7 Q  kprintf("是否打开已存在的单词表?(y/n)\n");' {2 K* l  i8 }2 e/ }( `* f$ N
fflush(stdin);
9 k0 A5 N8 k3 ^% Y( H: @0 `7 \0 bch=getchar();3 L. L, i1 V/ D; _0 ^2 p
if(ch=='y'||ch=='Y')5 S% E, B- O0 |- ~; b8 o8 H7 R
   openwordlist();
. n2 l8 A0 j/ m' Q9 Lelse if(ch=='n'||ch=='N')
* P% T" R  N3 t{
6 v1 l7 I1 o1 B$ W   printf("是否要构建新的单词表(y/n)?\n");; a: D% S* I1 E# i9 y1 R
   fflush(stdin);
5 m" w6 V4 m0 S; [+ Y   ch=getchar();
& P% D. V  S/ p( x   if(ch=='n'||ch=='N')
, S2 {4 s+ t3 i- ]: g   {
3 t) u5 i# h  P/ _    printf("退出程序\n");
" E( G) S) d6 y& i& H    exit(1);: }* @3 Y# F% v# g. p( `
   }
9 ]$ q+ g' u/ U4 Z2 ~   else if(ch=='Y'||ch=='y')+ ]8 k" `2 [5 A0 v$ B
    foundwordlist();
5 g6 K/ N( t$ k9 p0 i% M" E# j   else* g" y0 |. B8 ?0 v) I: @  ]
   {
5 A; t  E% ^" w$ p2 y    printf("输入错误程序退出");
  K# n- |8 t& r) O1 [0 d; c    exit(1);
9 |# Q0 T. w3 c- X5 i" h/ W. M; j   }0 H  A" @4 U" i7 Q6 S, f+ K1 ^# b* q
}" ]9 ?5 |% C5 t3 E9 w
else8 i5 t5 a$ G7 s" q/ {- ~# h2 }7 ?
   printf("输入出错退出程序\n");
2 K0 e; m3 i/ H% q/ cexit(1);( y; o9 N$ x# K+ D/ x7 ^% q( [
}
# r( W& E/ x3 ]7 P0 p7 P/ C0 O- bvoid openwordlist()//打开已经存在的单词表
' Z! l' P! b6 D9 O5 S' O5 r{# |& y/ \% S" o
char wordlistname[20],ch;8 F" \7 I% p8 Y2 k' l
printf("请输入要打开的单词表的位置\n");
3 M$ i1 Y3 ^4 J4 ^# h  `4 g9 sfflush(stdin);
/ P: @9 `3 K% H$ tscanf("%s",wordlistname);$ k4 @( g9 \4 C2 q8 C
system("cls");! T% B6 M4 t; W" c9 \6 C' I
while(1)  j5 c; b/ H9 G) N) b; ^
{
( N. J" u0 c; M' [   printf("请选择要进行的操作\n1.输出单词表\n2.修改一个单词\n3.删除一个单词\n4.添加一个单词\n5.对此单词表进行考试\n6.退出本程序\n");2 ?) F$ A4 w" t" h
   fflush(stdin);& H3 o$ k- @: p
   ch=getchar();9 \4 l+ R! ]: G: e
   switch(ch)
, T$ f9 }  ?! P& U; A2 Z   {% h  t' Y: O2 g# q- ]/ e; z
   case '1':system("cls"),putwordlist(wordlistname);break;//输出单词表
+ ]3 o) U, W; S" h   case '2':system("cls"),amendword(wordlistname);break;//修改一个单词
$ K) a5 D# p! J& l0 B   case '3':system("cls"),deleteword(wordlistname);break;//删除一个单词
$ T: k5 {' ^  P8 ]# e   case '4':system("cls"),appendword(wordlistname);break;//添加一个单词
" D; U* O0 @) p$ p   case '5':system("cls"),examination(wordlistname);break;//考试/ l4 e' Y8 w5 f* K0 o
   case '6':break;
; W2 s3 C9 W5 V   default :system("cls"),printf("输入错误\n");
" u. E2 c1 h! K% Y, h) {+ w   }; q* p% s& T3 q
   if(ch=='6')8 `+ W/ D0 Q; y4 n( y
    break;" `9 A. a! T* k8 c" n" i/ h0 l
}
  k; N* Q& o& `. h4 i; `9 ~  X}
6 M( ^, ^( ?" }9 ?" `void foundwordlist()//新建单词表- [! e- j: i% ]  z
{
( x1 ?" G0 p, g/ x) F2 E1 lgroup g;
) {: P4 W1 N* u& |) tchar ch[30];
  R6 V, l; @+ ~% J0 eprintf("请输入要创建的文件位置及名称\n");
( R: b! o% `: b: j& ?9 G3 }fflush(stdin);
2 v6 J4 ?% Y" p1 q* Q, hscanf("%s",ch);
/ }) b  k" j' i/ t. b- xif(!(fp=fopen(ch,"w")))
# e4 q9 `" n# M; Q/ z2 d{
' Y0 w/ q& X- l3 S2 s$ V   printf("文件创建失败\n");
' N4 a$ h. W' V+ I) M   exit(1);; l1 b. S8 y8 K# S& Y
}$ d( D6 |8 H2 L+ u4 i/ S
printf("先输入汉意,再输入英语,汉意0表示结束输入\n");/ L  t6 Z# q  Q- d
g.line=0;
8 U3 y5 G) Q$ g* V# ywhile(1)
4 Q1 T, m0 I; C6 A: Y{7 A% H3 s* z5 E* l: F: Z* @
   printf("请输入第%d个单词的汉意\n",g.line+1);( W4 m& q4 K. N+ _
   fflush(stdin);+ t3 @7 g1 L: z# ]
   scanf("%s",g.danci->chinese);
/ ]' U5 g" ^2 {$ g, d   if(!strcmp(g.danci->chinese,"0"))
% u# W: z) ^# ?    break;
7 |3 p) Q8 U) _7 M1 G- b6 R$ `   printf("请输入第%d个单词的英文\n",g.line+1);9 m" }5 c& Y; W2 a- E4 X/ I, E) w
   fflush(stdin);5 [/ w% L0 L, b- A' t& I" ?# v
   scanf("%s",g.danci->english);
. X; T  J" L3 M) ]3 p   fprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);
0 r4 `1 r; ?* l' K5 t4 E4 H   g.line++;
' N/ N! X* U! {}2 R8 Y, i( Z7 v- P% n* Q/ \
fclose(fp);
, C* O+ G1 i( i$ o}
  O" o) C/ t* mvoid amendword(char *wordlistname)//修改单词
2 m5 \/ I( z" }; r: x{5 Y! K2 L$ \9 t7 I# E
group g;
: _+ {* |* n4 V1 Schar amend[30];0 E' Z& T# D7 T
long offset;& R8 \' r, y% I; d8 U% u/ i
int i;+ ]. g" G# _/ T: R& h; o( Y7 w' R
if(!(fp=fopen(wordlistname,"r+")))9 v% s+ G2 d/ g+ I) h* g: T
{
; E+ E' b* R7 V7 X' P; D+ p; L$ D   printf("打开文件失败,请检查输入文件路径正确性\n");
1 b! n' m  f; L3 z   exit(1);8 B1 g8 D$ c9 Z6 D) }% d
}
) r2 T8 q4 R5 Jprintf("请输入要修改的单词的汉意\n");9 r. R) h. S- G: @+ @6 c& I9 [* u
fflush(stdin);% i, O% R9 y) h9 v4 D+ r: ~. c
scanf("%s",amend);, u; _6 H. e, F
i=0;. s! L& E- u/ {  r( S! g
while(!feof(fp))+ z( m/ u2 E0 [$ p5 x: G9 s* _% X
{
: A# H1 u( R+ I* }- B: M0 U6 T   offset=ftell(fp);
3 U8 T; o3 a, y1 v' r  I( J' u   fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);9 L/ J( {8 q# B2 \
   if(!strcmp(g.danci->chinese,amend))
& s8 k3 ]7 n. d* |4 }/ T) c   {0 P' X9 i# c( A
    i=1;
) J1 c5 ~, J$ O- u    break;7 Q& F% W. i1 ]( x
   }
3 u" W6 b4 N& b/ ^/ w* p  
# s; `2 E* |1 ?}
5 b8 }( `* g" a; l* tif(i)
6 T0 K" g& W5 F. e3 k& o7 }, j7 B{6 B% l& i9 F0 ~+ D2 T/ C
   printf("已经找到,记录为");: B3 F; C0 p7 O, c; e' I
   printf("%s     %s",g.danci->chinese,g.danci->english);2 L% v2 v1 t( G* v- z. D) y. J
   printf("请输入新的汉意及英文\n");
' D" b9 O& p+ j  s0 T! M. [* `   fflush(stdin);( I% G2 C# g8 I1 R. \
   scanf("%s%s",g.danci->chinese,g.danci->english);  O8 |5 h+ q( T6 V7 l6 |+ p
   fseek(fp,offset,SEEK_SET);9 H1 T9 E1 A4 ?, S
   fprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);
$ x& j- G, f% N9 M& I) ^}$ W" Z) u' A" r+ c! D8 G% d
else6 h3 x; l. T; c4 m
   printf("对不起,单词表中未找到此单词");
0 J; W% f( z7 q# bfclose(fp);6 x+ ]: t, o' k% l: M- A& B
}# R1 m$ {  G: m3 M, s. Y
void deleteword(char *wordlistname)//删除单词, [7 ?3 ^6 u" X% c4 n
{  I+ r$ |& y& X+ r$ o
group g;+ i% Y( H4 r; @4 x
char amend[30];
1 a3 f" d* j' a  O3 y4 ?. u& \long offset;
/ r) T5 v  A" t9 m8 |. eint i;
2 o6 R8 N! \6 Y% u5 b$ N+ tif(!(fp=fopen(wordlistname,"r+")))
6 _. J' B  K6 k, c$ ]" Y{
  f; t7 V- f! W* P   printf("打开文件失败,请检查输入文件路径正确性\n");
( I  T# }+ w7 B   exit(1);8 A7 z$ J2 a$ J- ]9 f7 f* y
}
9 ]) W+ ]/ K: j1 N# Zprintf("请输入要删除的单词的汉意\n");
$ h7 ^& d1 \# q  _fflush(stdin);5 a( `+ r$ f# X4 F1 O9 C2 K* F
scanf("%s",amend);
2 A) r/ ^& {8 {1 u+ V/ ri=0;
" A( n2 X4 o% z% uwhile(!feof(fp))7 h( d3 S/ r$ c3 H
{, j: |/ M. s! X) a7 \1 M
   offset=ftell(fp);0 N/ F8 X3 Z2 w8 r- A: ~
   fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);) o6 k1 d8 ~; Q5 {: Q
   if(!strcmp(g.danci->chinese,amend))0 m. ?7 ]' N4 r" Y$ p& X
   {# Y4 j/ M" ^" Q/ ~, G7 F
    i=1;
% Q5 ?1 X/ L- e4 B' h    break;7 _/ y  a4 b1 [' l: x1 c( u8 ]
   }
# i$ z8 @" k; P- j+ s  
' Z$ H" ~! v, T( q  P}
0 ~: |  c! F' a# A% |* N6 pif(i)
. l8 n, R% L2 }$ s4 y8 }{
7 c9 S0 K7 B% [6 O# G3 H   printf("已经找到,记录为");& }* i! o1 p3 H! Q: c2 g7 W  p1 ~
   printf("%-30s%-50s",g.danci->chinese,g.danci->english);
# n5 {; T# t1 Z   fseek(fp,offset,SEEK_SET);+ @6 H( y# R7 Z4 `! J
   fprintf(fp,"%-30s%-50s\n","","");
2 C9 k' q" `7 v  q  [; S}2 v+ A0 H! B& m
else, L7 h& d* D7 ]. F  V9 L
   printf("对不起,单词表中未找到此单词");9 i! i( W: w0 G# Z
fclose(fp);6 e6 b0 }$ I+ z8 S9 I
}
! J, G: Z2 F* lvoid appendword(char *wordlistname)//添加单词9 Z( [* \  L4 c, x$ ^$ {
{1 t+ ]+ z! V, E5 |' Y2 h3 b) L
group g;
- p  E- t! `  _# j2 Y, q8 Oif(!(fp=fopen(wordlistname,"a")))
" q6 n; ^5 O7 y# p{
- g3 F: |0 Q/ T" [; G; |' k! r   printf("打开文件失败,请检查输入文件路径正确性\n");
+ w1 W" [7 T# b. Z" {8 w   exit(1);
) w+ w0 J* \0 `$ W/ B}
" a; J! B% X. \# p' x1 p1 h5 M4 ^printf("请输入要添加的汉意及英文\n");
5 s. X5 Z4 S; d9 xfflush(stdin);- K; w- [0 o$ j+ C. l% v- T
scanf("%s%s",g.danci->chinese,g.danci->english);
7 r4 k8 \) N) ofprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);9 s# Q0 p5 e2 b/ P7 @
fclose(fp);
: T0 Y& V( H! r' p* J0 F}
. ]1 _6 F/ I) w1 u5 y, ivoid examination(char *wordlistname)//对选中单词表单词进行测试# k) k9 X5 k6 F! E) x2 h1 L
{
+ x. z/ Q  [2 |2 S% ogroup g;) ~' F% Q9 t1 A7 ]
int i,j,k,l;9 U: I6 `6 C* w( I% v& {' z
char resule[30];! u. Q. ?. }3 V* w: @+ G
i=0;' [& ~; ]9 F% ]
if(!(fp=fopen(wordlistname,"r")))2 _( T% m! l0 T
{
3 \7 {& [8 ]  a( G6 m   printf("打开文件失败,请检查输入文件路径正确性\n");3 T) ]$ |  D: i4 Y
   exit(1);9 t2 F8 P3 F3 Z5 {
}
# ]; @8 E/ C# I3 M' ]while(!feof(fp))+ D4 M6 _! d4 ?
   fscanf(fp,"%s%s\n",g.danci[i].chinese,g.danci[i++].english);
- H  N, T) Q" D. p, @! ^% J' Mg.line=i;3 q0 V  l& N  P& P- a3 M, ~7 [
j=0;//计算成绩的
/ T) a  y$ C  Wk=0;, E8 S% C" T1 h- W
printf("答案处输入'0'为退出考试\n");- \* {. Z0 F* ^- v4 R. R$ P( H
while(1)
. m& \6 [. {; z  M! j" h{
; J5 m0 B! a, E+ g( ^   j++;
* [- x% B) D, H6 u+ V   i=rand()%g.line;5 T( \  f& d1 l1 U0 n/ `( }) U
   printf("%s",g.danci[i].chinese);
: O- D. U, Y- m; {! v   fflush(stdin);5 s0 ]* T, E! g# g) v6 j# j( d
   scanf("%s",resule);
3 M! p; Q' U, b* f, E0 N/ u   if(!strcmp(resule,g.danci[i].english)): B' |! Q+ d, C! b
    k++;
9 E  j1 }) d5 m$ n$ \$ m   else if(!strcmp(resule,"0"))
2 n8 E* i" X3 }. ~9 W+ g   {
; O4 L- d6 \# Q% E9 p    j--;( @+ m' y  G& s  l) X1 w4 P
    break;# I. L( h: ~* n
   }
& [0 @2 G+ F4 @1 A$ T9 C4 g" U   else
1 S6 S; |0 z: S0 @/ P2 F* `& g5 p    printf("抱歉输入错误正确答案是%s\n",g.danci[i].english);; Z5 f8 H( w$ ^
}
) t' n' Q1 q  }  P# b1 |/ N0 X) nl=k*100/j;
0 z5 a5 x  l& w# Lprintf("一共测试了%d个单词,答对%d个,正确率为%d%c\n",j,k,l,37);9 W9 Z: _2 _) D8 s) B
if(l<60)
$ x. u- n; A6 x7 c( h0 l   printf("本课程单词掌握程度较差,请加强训练\n");
6 c; z2 w) Q- s) r5 d8 G6 f! Welse if(l>60&&l<=99)* T4 ~2 C! Q! i! {2 D& Y
   printf("本科单词大部分已经掌握,但还是有少许错误,请改正\n");
0 c. @5 }, m( ~) @7 ]  xelse
& s, c+ u* n3 A# v( c: p: M& M   printf("您太棒了!满分\n");
; f" }: [9 L0 S1 Wprintf("按任意键继续...\n");9 W% `6 e2 Q( z% {' \6 T$ J1 I
getchar();8 w/ |; t' e0 i6 B- ~, X: e
}6 q; n- H7 P2 A5 E: e- }1 S; N7 Z9 {( y
void putwordlist(char *wordlistname)//将单词表输出+ w9 ~' I0 L. r4 n& |0 g
{/ |; Y4 v- e8 V0 q' Q( Z/ O
group g;
2 b# D3 N1 C" x! Zif(!(fp=fopen(wordlistname,"r")))
  ]: W* X2 m$ w, s8 e! `{6 u( \3 p/ F5 _9 \4 F
   printf("打开文件失败,请检查输入文件路径正确性\n");
! Q  {8 l- A0 B2 Q   exit(1);7 k# Z0 Q9 {9 O1 v& z% T" b! m
}; R1 p8 X/ z3 d4 |  h
fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);+ [9 G3 y! t: f& K* j9 f& O
while(!feof(fp)), \5 X$ l# q: G4 x" T. L
{
+ K8 i3 X5 z3 n6 N# j   printf("%s %s       ",g.danci->chinese,g.danci->english);
+ s7 ~# x$ b/ X6 C3 J( h   fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);
" Z! H, F$ I6 e8 g}: P5 `* i( n# i% {
printf("\n\n\n按任意键退出...\n");
6 w+ C# _% I# |7 U4 l& ^5 e9 u. Dfflush(stdin);7 J1 @- I2 j( B- X( }8 Q
getchar();
4 ^5 }6 [7 y% L. B) |- w8 W- t, }3 V; Lfclose(fp);
. C) E* b7 D8 X5 C}
% a' k- c4 I5 o9 k1 \: P: c1 L- F" r' X3 m$ \; X( A1 `& l
[[i] 本帖最后由 logoslogos 于 2009-11-21 10:22 编辑 [/i]]
2#
发表于 2009-11-21 13:47:36 | 只看该作者
好像是TC,到平台上编译一下试试
您需要登录后才可以回帖 登录 | 手机注册

本版积分规则

QQ|小黑屋|手机版|Archiver|【阳光飞狐】 ( 网站ICP编号:京ICP备06013475号-7 )

GMT+8, 2026-10-10 07:24 , Processed in 0.103893 second(s), 18 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表