阳光飞狐

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

 找回密码
 手机注册

手机动态码快速登录

手机号快速注册登录

查看: 1896|回复: 1
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-21 10:19:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有会编程序的朋友吗?麻烦请进5 B5 r# a4 o+ A$ }+ Q; u" J7 h
这是写好的一个源程序吧,能把它变成可运行的软件吗?万分感谢!!!
* |2 m3 \% ]* O# k  \5 {, g  ^/ p
! d, C. X2 _" Z3 T英语单词测试小软件2009-08-04 22:39        今天突发奇想写了这么一个小软件,主要功能就是测试英语单词,事先将本章节的单词记录到任意一个文件中,以便随时进行英语单词侧测试,给出汉意写出英语答案,输入0为推出测试,完后给予评分,一下就是源代码,主要训练的就是文本函数的操作,相对而言没有什么复杂的算法,都是一些很容易理解的函数,就不做介绍,如果使用的cmd无法输入汉字开始->运行->reg add HKCU\console /v LoadConIme /t REG_DWORD /d 1 /f就可以了#define MAXWORD 100: V  i7 b* h) P# z% S# M- }
#include<stdio.h>
& c# I# i( F7 n; Z#include<stdlib.h>3 E0 b( c( j. {$ h- s+ M/ l" w
#include<time.h>+ U- p- u0 e8 Z' r
#include<string.h>
8 c- d/ W1 u$ U" e& d( Q- J4 H. gtypedef struct
4 ~7 G9 C5 e# H0 v3 G7 D{9 ?3 D, D! Z- S1 B" Q
char chinese[30];/ W& X; q+ P) v0 G7 c, i6 X
char english[20];
8 v. ^& A7 ~4 v7 @" Z% G7 `' t}word;//一个单词
4 k7 \2 |9 t6 ^# Ztypedef struct2 [  q8 k$ @$ F: o" m/ z
{
7 f' b: p# r1 W- K4 Z" l$ w7 bword danci[MAXWORD];( j. Z7 K" w# ^! d4 ]
int line;
8 ~% L9 Y/ k9 Q6 e}group;//单词表
( N; r! C4 z4 A+ p! j5 Hvoid openwordlist();//打开已经存在的单词表$ h: J4 c/ T) Z& [
void foundwordlist();//创建新的单词表0 X, i8 x: B  C/ Q& X7 Y3 O, M
void amendword(char *);//修改单词- }  K1 X4 @: P; s
void deleteword(char *);//删除单词
* S1 P2 B" Y( d+ @5 O  t& ovoid appendword(char *);//添加单词
6 {6 g& B% r, L1 Svoid examination(char *);//对选中单词表单词进行测试
( B/ M1 v+ ~# Q- Dvoid putwordlist(char *);//将单词表输出( j% z$ n; j; ^& i2 y  m$ n
FILE *fp;. v! Z2 T* }( C: F6 t  ~& @
main()
0 d7 }# B. Q$ u9 \+ R{
# l+ J6 t8 \5 e, p' X3 K+ u# Ychar ch;2 U1 s# B$ ^( u- r
srand((unsigned)time(NULL));5 O3 ]1 p/ n' D7 w( h* u
printf("是否打开已存在的单词表?(y/n)\n");
( P  q. x& N0 ~* |, Y* vfflush(stdin);
) X  D) y7 z6 m) C9 i6 X5 Och=getchar();: W0 e2 M- V; D% n  Y) t
if(ch=='y'||ch=='Y')+ ~% R. ?: b, E
   openwordlist();
% o4 z. @# F; }4 ^; C4 t& u) P' Delse if(ch=='n'||ch=='N')
  J+ _. j6 _# b- A9 w$ B' z{
! K# [1 G& @& O   printf("是否要构建新的单词表(y/n)?\n");* p: f5 u6 c- i7 x& @# m4 f  y7 D7 U
   fflush(stdin);" u  n: z0 L; _3 s7 V
   ch=getchar();
# O* e1 s% O5 U   if(ch=='n'||ch=='N')1 z& Q  r" J" B- `0 j$ N( T
   {
* t1 T& m: j/ E* C0 p) A    printf("退出程序\n");
5 C. F2 c% l8 m. T; ~    exit(1);
: Q, }! S& e! G) E0 k4 u1 V3 Z   }
! f8 v: h2 T; ], \/ D   else if(ch=='Y'||ch=='y')
" ~  Q$ g/ [  Z* B9 [+ E) \    foundwordlist();; {  h7 {0 E3 e
   else$ v5 M8 n: ~9 r" `
   {* b: v5 m* t) F( b/ ]
    printf("输入错误程序退出");) A1 t# P4 B% t
    exit(1);/ f% M, o. q$ ~+ k3 Z
   }
% x7 b  E* K; p) q0 W2 L% N}6 _/ s: g1 {4 j4 W! u
else3 t: `& a. q; n% }! A, V$ n9 c. \
   printf("输入出错退出程序\n");- R* V1 I. a! X
exit(1);
! J1 Q: g/ I* Z; J/ F$ c: g}2 R" s+ E- a* M( w% K
void openwordlist()//打开已经存在的单词表
, x- Z# m! j9 L% b% n1 @{
3 {  o( b0 `+ a2 tchar wordlistname[20],ch;
5 V' E0 g) Y5 oprintf("请输入要打开的单词表的位置\n");# P# S& Q% J2 n) r* h( x
fflush(stdin);/ ]; i& a" P0 P( G7 I( Y
scanf("%s",wordlistname);
6 r1 C( @: S" P3 Dsystem("cls");; e/ m6 a1 N, B# B% k- C# H% b
while(1)
2 }; b3 l9 u. G$ G) S! H{
2 @# U" p7 L% k" L+ d+ I   printf("请选择要进行的操作\n1.输出单词表\n2.修改一个单词\n3.删除一个单词\n4.添加一个单词\n5.对此单词表进行考试\n6.退出本程序\n");
* [8 Y0 T( `7 W% w5 q# E1 b. E   fflush(stdin);
1 q4 _# u8 L6 n! s6 [   ch=getchar();, B3 n  A2 Y$ g- Z5 `/ g
   switch(ch)/ F" z- M0 [) C# L$ D5 I) Q
   {5 f6 z" O! s. H* c
   case '1':system("cls"),putwordlist(wordlistname);break;//输出单词表, g9 u& ^$ K9 ~+ p
   case '2':system("cls"),amendword(wordlistname);break;//修改一个单词
0 a" n6 x- {0 f# D6 A9 r% f   case '3':system("cls"),deleteword(wordlistname);break;//删除一个单词
9 X# F% W2 Z1 Y3 c9 o5 ^   case '4':system("cls"),appendword(wordlistname);break;//添加一个单词
: n0 @5 `; L( M1 G   case '5':system("cls"),examination(wordlistname);break;//考试- @2 w0 ~) k9 N: X- C5 q  {
   case '6':break;, e, i4 Q% z# i, t. T9 B  ~5 v- I
   default :system("cls"),printf("输入错误\n");
# F$ r9 e; W+ v0 T. O, L/ n   }, r% y* T4 @. N# m0 @% H& C
   if(ch=='6')6 @8 l- y- q# t
    break;
( F' X- H+ r% z7 v: G: J}, U5 E# i! `& }
}  g9 b* ]6 v7 D4 W
void foundwordlist()//新建单词表
2 Z! g+ {, T5 m4 @5 U{
8 ~" E4 u2 V% S0 J  e3 [8 G( p$ {group g;5 X5 f; P2 K7 y
char ch[30];
- b- ~) x* Y7 ^- x5 X* m1 M) vprintf("请输入要创建的文件位置及名称\n");5 M' K( m" O* x# K. E
fflush(stdin);# s/ X7 S  T9 r; _
scanf("%s",ch);
! P( ^. Q* @% m; vif(!(fp=fopen(ch,"w")))
: w& z, x( _2 @{7 Y/ n  X/ |9 V# d
   printf("文件创建失败\n");) f8 W) G* j% Z6 b7 v4 T
   exit(1);7 e- @( C- f( _) V( y
}
: t8 `7 _4 Z6 ?/ _; f1 ~& u9 V( }* s+ V8 gprintf("先输入汉意,再输入英语,汉意0表示结束输入\n");
) G; q7 D5 ^- m. Y# Dg.line=0;& f! W& `9 d/ s) g9 C8 a2 C
while(1)% x! {* q  R" F( A0 {# h6 @& R% D
{9 J8 D: w; Z0 {6 I9 v! t
   printf("请输入第%d个单词的汉意\n",g.line+1);  C) t$ O4 g+ p5 t
   fflush(stdin);
  {+ W5 `: @% k+ d1 d   scanf("%s",g.danci->chinese);+ s# s% A! w) k* A+ S$ }4 H0 [
   if(!strcmp(g.danci->chinese,"0"))3 u5 O- J/ b2 h7 x
    break;7 g- G4 M$ m: a3 _2 v8 U
   printf("请输入第%d个单词的英文\n",g.line+1);
. H+ E- o  ~5 S; L1 G, J   fflush(stdin);  a1 a* m, y& q
   scanf("%s",g.danci->english);3 _% b; {  N4 H
   fprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);
4 ?0 s% P4 ~! F1 h! N. ~$ T6 B- O9 ~   g.line++;
  f7 w* N  H; H9 d' Z3 ?}" a9 _1 f! W  h& L" Y7 e% v/ f4 z
fclose(fp);- Z" `/ `3 T; I$ m
}
/ E& G  a+ ?8 k/ jvoid amendword(char *wordlistname)//修改单词
) t! A. G1 x9 C; B5 I0 L{: Y; R% z. ?6 i( V; ~, Q+ i
group g;
1 d  d9 C6 n% b( Hchar amend[30];
; Q8 f; j1 u# Y+ ?  ilong offset;2 \2 F5 G& \& w6 V2 j' B
int i;
4 M5 {! l8 T; F, f) uif(!(fp=fopen(wordlistname,"r+")))
+ C% h* r, G) G{
3 w6 U# K  I' k7 O   printf("打开文件失败,请检查输入文件路径正确性\n");- ~! M! q/ L/ E3 H: b
   exit(1);  O: E* o4 M; i8 N
}
3 [, F( a+ }0 L/ P; @# Pprintf("请输入要修改的单词的汉意\n");* T5 \8 u1 ]$ s+ q# w5 j
fflush(stdin);6 N8 R" y) J% c4 O  A  L
scanf("%s",amend);
! G! A: R: A3 d. V: ii=0;, C$ x9 @9 Q' [* [5 [5 d) l
while(!feof(fp))
6 e, L) _4 I$ _$ [5 y6 n, Y{( {; ~' m; M8 H1 K5 D
   offset=ftell(fp);
% N: q" ~/ v/ {  O" r* V/ ~   fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);5 ^1 Q! C" k9 w& @7 P
   if(!strcmp(g.danci->chinese,amend))
* F+ W9 m: A2 C( U   {
; X3 ^7 f. e% q    i=1;
8 S5 K* q4 j! I) e3 \    break;
+ ^  h! N3 A0 J' D7 S   }7 v& ^$ C0 i8 n$ h" P
  8 ]- M% ]  c5 P, i; ?6 V/ [2 B
}
7 e; V1 K. K9 lif(i)3 Q( C6 ?3 H2 t' O3 m0 t
{4 t1 T) t/ Z0 i+ V9 h
   printf("已经找到,记录为");! i* M, u9 O! {, h% t
   printf("%s     %s",g.danci->chinese,g.danci->english);
+ h! g5 h  O9 u. f' d/ e1 `   printf("请输入新的汉意及英文\n");
3 D3 u) |9 [0 f: m$ f5 Q   fflush(stdin);
! y$ t' Y* s6 O, {* x0 D, H   scanf("%s%s",g.danci->chinese,g.danci->english);
2 Z( g' F( g! t$ [- E   fseek(fp,offset,SEEK_SET);
4 J! E' \1 M: K0 e   fprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);
+ D" o4 f$ k& Z5 n; i! z6 a) v}7 I' C1 J) b2 P; {9 |
else2 V1 D, u/ i9 k* o9 a) c2 E* K
   printf("对不起,单词表中未找到此单词");
: F4 S# n* i8 S: Wfclose(fp);
4 T! {& U: {* Y0 V# b+ V}8 |# L) d/ H4 L. C4 p0 z  ?6 y7 m
void deleteword(char *wordlistname)//删除单词2 ^) z$ a( b8 c# ]6 \3 i
{/ b2 B) \9 }; C' T2 p: `
group g;
% E$ f+ e! z/ w+ K4 nchar amend[30];. q% Q. x. J9 T- g: ]2 R* {1 E
long offset;
8 a8 Z4 ^7 ~  v( X  ~' U" L! r+ @int i;' ^; N& I) }+ x- U
if(!(fp=fopen(wordlistname,"r+")))
+ P5 Y+ N, d, K" r1 g& T( f{$ C* z7 L3 `/ r
   printf("打开文件失败,请检查输入文件路径正确性\n");
$ T. _* \: G$ M8 [% o  @2 d7 i' o   exit(1);
! f# e( ]. B8 e9 n5 t}
/ g& L& f8 Y5 R4 b. D$ L2 W) Xprintf("请输入要删除的单词的汉意\n");
- W% m% u) G4 ]- R6 {' sfflush(stdin);  m8 F7 g$ j. [+ v
scanf("%s",amend);
$ Y7 Q% E5 |* F4 p1 S, q" f/ _i=0;
% a3 a) W+ H+ `6 ]while(!feof(fp))
: \% Y& M' `6 V5 l( z{: C' j: R* N2 t( Z+ B
   offset=ftell(fp);
( ]: Z! ^5 [6 Q   fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);
: d. [9 E( g0 ~2 G5 p, \1 {# I0 d   if(!strcmp(g.danci->chinese,amend))1 _9 a. Z3 e3 R
   {' M, Y8 {! i* `* r2 B& \7 c( O
    i=1;
! `0 Q% l0 e4 x8 R    break;
: {& Z+ b+ R2 h. ~( X# ?! d9 ]1 _   }/ ^% B( S* J* H3 l# @  Z1 f
  0 s, N+ q9 u3 I9 t2 R
}/ ]! F5 c: G/ X( U: t$ h
if(i): f* V4 ^" v& N" j( }# X8 _! V6 S
{  N! i5 t; y" r! G
   printf("已经找到,记录为");
4 f7 v9 n2 q5 R. @& s2 Q   printf("%-30s%-50s",g.danci->chinese,g.danci->english);
/ i, B; J6 o5 ]   fseek(fp,offset,SEEK_SET);
4 Z+ t! E5 @* Q! o" U7 k   fprintf(fp,"%-30s%-50s\n","","");
& I6 ]$ g8 V6 t* j- [2 N}! G3 B7 {0 Y3 H5 R2 v3 H( I: o
else$ s0 }5 s" n5 a
   printf("对不起,单词表中未找到此单词");
2 R# W5 g7 |0 y5 }5 S" A5 E5 Pfclose(fp);, e! p+ c# Y8 t$ l7 V( E
}: P" |" P' m" P$ n# P$ t1 {$ g  q. L
void appendword(char *wordlistname)//添加单词- K4 R6 T7 r# c( E* p' D8 y/ ]. j: i
{4 A$ s3 A* O4 l0 Z" y( g
group g;
/ y! y! T# H, [5 Jif(!(fp=fopen(wordlistname,"a")))
8 I9 I' z- z6 Q9 k4 A) f: x! m! }, ^{3 r& M5 l0 @7 o0 }
   printf("打开文件失败,请检查输入文件路径正确性\n");
, ]1 S- l" A5 V) D" w   exit(1);' C1 p% A; S- o
}
2 c. U$ Q) ?$ S( U, gprintf("请输入要添加的汉意及英文\n");& j8 ]' Q+ v. A  f: {7 ~# e( Z  L8 I- g
fflush(stdin);
. b5 j# Q, D2 Q& Uscanf("%s%s",g.danci->chinese,g.danci->english);
3 I9 o, {; s0 m9 T5 u5 O3 Hfprintf(fp,"%-30s%-50s\n",g.danci->chinese,g.danci->english);
& p9 P8 p" Q1 Q( Dfclose(fp);3 I4 Q* Y; M' G' Y6 j$ b
}6 V) k+ s7 v4 V% j, |  w
void examination(char *wordlistname)//对选中单词表单词进行测试
7 Y3 x- g4 d0 q7 D5 h; {5 g& q6 \{" p1 @1 F' k' E+ P: E
group g;
6 G+ u" D& W" h2 _+ k; ?4 Q0 H+ |6 Rint i,j,k,l;
1 q6 ]: Q  m/ J# C0 k  hchar resule[30];
$ @  S) i4 q9 }( _' qi=0;
3 o0 {* Z* M7 g- Mif(!(fp=fopen(wordlistname,"r")))
( J' I, s" ^, Q8 c{
: r2 \+ q+ |( G+ A   printf("打开文件失败,请检查输入文件路径正确性\n");* ~; f8 c# j& \; Y4 u% F
   exit(1);
4 R- C, ]+ J$ ]7 U}
- w$ o  a. X1 Y2 ?( G  @( R+ ~0 Nwhile(!feof(fp))+ ~# p5 K" ^: [
   fscanf(fp,"%s%s\n",g.danci[i].chinese,g.danci[i++].english);
- L% I! t8 ?  M8 z" ~7 G2 Pg.line=i;
9 e2 z+ T1 ?) R- M0 n- Ej=0;//计算成绩的4 Q, t4 f8 ^* h( f% k. B' L
k=0;
7 t# r* v2 ?" Z) J! nprintf("答案处输入'0'为退出考试\n");
* ^2 @: r% g+ k2 {& {' |while(1)% `( ^( [( @2 W0 f8 g
{
9 T$ c5 H6 u8 ?: X& d4 G) y   j++;
+ m9 C& [$ R( c- @   i=rand()%g.line;
8 W( l/ m% T/ }   printf("%s",g.danci[i].chinese);6 {- X7 ^) ]) o: j1 p+ c
   fflush(stdin);
. T9 ?0 b2 i+ `  E2 o   scanf("%s",resule);
( a9 i# g4 r$ M. G$ a# m  V3 p   if(!strcmp(resule,g.danci[i].english))7 r# N+ K4 @+ q( S
    k++;
: [& v1 [' i3 s1 V; S4 J  e# R   else if(!strcmp(resule,"0"))
! X3 r% I% I2 L: q5 J- W   {
6 D4 b4 g) A/ c3 x+ ~' }    j--;
4 n' ~' K7 o! k+ p    break;
# b; w* J9 l  b   }3 f' h( z- _2 \$ v/ w* k# \: F" v
   else
# {0 {+ z# C$ s- d    printf("抱歉输入错误正确答案是%s\n",g.danci[i].english);8 e" n! `: [, e& ~7 Z7 v% d
}
' G' H$ Q4 z% c) O7 Pl=k*100/j;
: u: D7 M$ b5 d& fprintf("一共测试了%d个单词,答对%d个,正确率为%d%c\n",j,k,l,37);$ L2 f) x% T% A+ d: g
if(l<60)5 h  ?! @1 T" o2 Z' {# J
   printf("本课程单词掌握程度较差,请加强训练\n");
4 C7 a4 `9 r: f& ]& N6 r* Xelse if(l>60&&l<=99)- o/ V2 K# g/ x
   printf("本科单词大部分已经掌握,但还是有少许错误,请改正\n");
  T4 o! o2 ?9 O! R; A5 }) ~  telse; u1 v' K& k7 W0 E! h
   printf("您太棒了!满分\n");
$ c6 \3 r& v* B' f- U7 H$ kprintf("按任意键继续...\n");
! c2 ^# `+ V" y1 f) j+ F5 Y# s+ D  m2 [getchar();
0 G  ^+ |0 T6 t9 |$ N}# j5 Z/ W  v1 n  C; i! ^
void putwordlist(char *wordlistname)//将单词表输出9 j: ?3 Y4 L6 ^. y/ j- Q% F
{
$ D  ?, G4 G" s+ G* o# J- Ggroup g;' [6 W7 x# D5 y. N3 P7 p
if(!(fp=fopen(wordlistname,"r")))
1 W5 {0 @3 J7 s. @! R{
  Q* u' a! S- f7 \8 W   printf("打开文件失败,请检查输入文件路径正确性\n");
* N  @. i; u( o# ~2 \   exit(1);/ v  J( A1 j6 |6 A$ n/ p9 a
}6 `3 u2 a# U) z' e
fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);4 F  p5 w0 _: D+ {
while(!feof(fp))% E! \: ?" x/ G) h/ z6 w3 ~2 d
{
! E$ Y  t3 s: _" Q- y% o  {, B, v   printf("%s %s       ",g.danci->chinese,g.danci->english);
3 s% _6 {" }5 J   fscanf(fp,"%s%s\n",g.danci->chinese,g.danci->english);7 Z0 Y& {" I2 S
}5 \2 Q0 q' h+ s/ E6 k( [6 N
printf("\n\n\n按任意键退出...\n");# r4 B6 T7 B& R
fflush(stdin);5 s/ \7 ~7 U; Q  J8 S9 M" b
getchar();' V. V- n+ Q. |, A
fclose(fp);
0 P" C: l) Q/ B9 z8 N4 k}' b: e+ d0 t- s3 E- ]' b! L
0 G: F/ ~8 h: E0 _
[[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-7-22 13:34 , Processed in 0.115804 second(s), 19 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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