c++程序设计英文打字练习程序

c++程序设计英文打字练习程序,第1张

你可以参考下这个程序 自己写的永远要比原搬别人的强 #include<stdio.h>

#include<string.h>

struct studentInfo

{

char names[20]

char sex[4]

int age

char tel[14]

}

struct studentInfo list[1000]

int count

char choose

int chooses

int i

showWelcome()

{

printf("****************************\n")

printf("** 欢迎进入通讯录系统 **\n")

printf("****************************\n")

}

showMainMenu()

{

printf("1、录入学员信息\n")

printf("2、显示全部信息\n")

printf("3、查找学员信息\n")

printf("4、删除学员信息\n")

printf("5、修改学员信息\n")

printf("0、退出菜单\n")

}

insertStudentInfo()

{

printf("录入学员信息\n")

do

{

printf("姓名:")

scanf("%s",list[count].names)

printf("性别:")

fflush(stdin)

scanf("%s",list[count].sex)

printf("年龄:")

scanf("%d",&list[count].age)

printf("电话:")

scanf("%s",list[count].tel)

count++

printf("是否继续(y/n):")

fflush(stdin)

scanf("%c",&choose)

}while(choose=='y'||choose=='Y')

}

showStudentInfo()

{

printf("所有学员信息如下:\n")

printf("姓名\t性别\t年龄\t电话\n")

for(i=0i<counti++)

{

printf("%s\t%s\t%d\t%s\n",list[i].names,list[i].sex,list[i].age,list[i].tel)

}

}

searchStudentInfo()

{

char name[50]

printf("请输入您要查询的学员姓名:")

scanf("%s",name)

for(i=0i<counti++)

{

if(strcmp(name,list[i].names)==0)

{

printf("您要查找的学员信息如下:\n")

printf("姓名:%s\n性别:%s\n年龄:%d\n电话:%s\n",list[i].names,list[i].sex,list[i].age,list[i].tel)

break

}

}

if(i==count)

printf("很遗憾,没有查找到您需要的信息。\n")

}

shanchuStudentInfo()

{

do{

char shanchu[20]

printf("请输入你要删除的学员姓名:")

scanf("%s",shanchu)

for(i=0i<counti++)

{

if(strcmp(shanchu,list[i].names)==0)

{

for(i=0i<counti++)

{

list[i]=list[i+1]

}

count--

printf("删除完毕!\n")

}

else

printf("对不起没有找到该学员!\n")

}

printf("继续删除吗?(y/n):")

fflush(stdin)

scanf("%c",&choose)

}while(choose=='y'||choose=='Y')

}

xiugaiStudentInfo()

{

do{

char xiugaixm[20]

char xiugaixb[5]

int xiugainl

char xiugaidh[14]

printf("请输入你要修改的学员姓名:")

scanf("%s",xiugaixm)

for(i=0i<counti++)

{

if(strcmp(xiugaixm,list[i].names)==0)

{

printf("1.姓名:%s\n2.性别:%s\n3.年龄:%d\n4.电话:%s\n",list[i].names,list[i].sex,list[i].age,list[i].tel)

printf("请选择你要修改的内容:")

scanf("%d",&chooses)

switch(chooses)

{

case 1:

printf("请输入修改后姓名:")

scanf("%s",xiugaixm)

strcpy(list[i].names,xiugaixm)

break

case 2:

printf("请输入修改后性别:")

scanf("%s",xiugaixb)

strcpy(list[i].sex,xiugaixb)

break

case 3:

printf("请输入修改后年龄:")

scanf("%d",&xiugainl)

list[i].age=xiugainl

break

case 4:

printf("请输入修改后电话:")

scanf("%s",xiugaidh)

strcpy(list[i].tel,xiugaidh)

break

default:

printf("输入错误,请核实。\n")

break

}

printf("修改后信息如下:\n")

printf("姓名:%s\n性别:%s\n年龄:%d\n电话:%s\n",list[i].names,list[i].sex,list[i].age,list[i].tel)

}

else

printf("对不起,没有找到该学员信息!\n")

}

printf("继续修改吗?(y/n):")

fflush(stdin)

scanf("%c",&choose)

}while(choose=='y'||choose=='Y')

}

void main()

{

showWelcome()

do

{

showMainMenu()

printf("请选择功能:")

scanf("%d",&chooses)

switch(chooses)

{

case 1:

insertStudentInfo()

break

case 2:

showStudentInfo()

break

case 3:

searchStudentInfo()

break

case 4:

shanchuStudentInfo()

break

case 5:

xiugaiStudentInfo()

break

case 0:

break

default:

printf("输入错误,请核实。\n")

break

}

}while(chooses!=0)

printf("\n谢谢使用本软件,再见!\n")

}

/*

游戏开始,从天上掉下10个有标号(字母)的炸d,

下面有10颗子d(就是可以按10个字母).

如果所按字母包含在炸d中,就找到相应的炸d并

消灭它,消灭后返回继续利用.如果没有就一直飞到天上最后才返回.

*/

import java.net.*

import java.awt.*

import java.awt.event.*

import java.applet.*

import javax.swing.*

public class paodan extends Applet implements Runnable,KeyListener

{

private Image bgImage

private Graphics bg

static Thread myThread

static AudioClip ac1,ac2

static JFrame md

String Zi26=""

String pd[]={"a","a","a","a","a","a","a","a","a","a"}//用来存储10个字母做落下的炮d

String fj[]={"","","","","","","","","",""}//用来存储10个字母做反击的防空

int x[]=new int[10]

int y[]=new int[10]

//炸d的坐标

int x1[]=new int[10]

int x2[]=new int[10]

int y1[]=new int[10]

//火箭的坐标

int life=100 //生命

Toolkit KIT=this.getToolkit()

Image paodan=KIT.createImage("paodan.jpg")

Image huojian=KIT.createImage("huojian.jpg")

public paodan() //用来生成一个包含26个英文字母的字符串Zi26

{for (int i=0i<26i++)

Zi26+=(char)((int)'A'+i)

}

public void cushi() //初始各种数据,如炮d与火箭的坐标.

{

try

{URL u1=this.getClass().getResource("huishou.wav")

URL u2=this.getClass().getResource("lanjie.wav")

ac1=Applet.newAudioClip(u1)

ac2=Applet.newAudioClip(u2)

}catch(Exception e){}

for (int i=0i<10i++)

{pd[i]=noRepeat()

x[i]=noHit(i,10)

if (i>=5)

y[i]=5+(int)(Math.random()*50)

else

y[i]=60+(int)(Math.random()*50)

x1[i]=220+i*32+1y1[i]=550

x2[i]=x1[i]

}

}

public void panduan() //用来判断pd[i]的y值是否要到达屏幕下边,如果是就把Y值变为5,并把所有Y值加3.

{ for(int i=0i<10i++)

{ if (y[i]>=500)

{life--ac1.play()y[i]=5}

y[i]+=3

if (life==0) System.exit(0)

}

y[9]+=3

md.setTitle("打字训练室你的生命为"+life+" 提示:白色的字母表示未按,粉红色的表示已按.")

}

public void fk() //防空程序,用来击毁落下的炸d

{ int i=0,j=0

for (i=0i<10i++)

{ if (!fj[i].equals(""))

{

for (j=0j<10j++)

if (fj[i].equals(pd[j]))

{ if (!(x1[i]>=x[j] &&x1[i]<=x[j]+32 || x1[i]+32>=x[j] &&x1[i]+32<=x[j]+32))

if (x1[i]>x[j])

x1[i]-=4

else x1[i]+=4

if (!(y1[i]>=y[j] &&y1[i]<=y[j]+32 || y1[i]+32>=y[j] &&y1[i]+32<=y[j]+32))

if (y1[i]>y[j])

y1[i]-=3

else y1[i]+=4

if (y[j]>=380 &&Math.abs(x[j]-x1[i])>5)

if (x[j]>x1[i]) x1[i]+=5

else if (x[j]<x1[i]) x1[i]-=5

if (y[j]>=380 &&Math.abs(y[j]-y1[i])>5)

if (y[j]>y1[i]) y1[i]+=5

else if (y[j]<y1[i]) y1[i]-=5

if ((x1[i]>=x[j] &&x1[i]<=x[j]+32 || x1[i]+32>=x[j] &&x1[i]+32<=x[j]+32) &&(y1[i]>=y[j] &&y1[i]<=y[j]+32 || y1[i]+32>=y[j] &&y1[i]+32<=y[j]+32))

{life++ac2.play()pd[j]=noRepeat()x[j]=noHit(i,10)y[j]=5x1[i]=x2[i]y1[i]=550fj[i]=""}

break

}

if (j==10) y1[i]-=3

if (y1[i]<=5) {y1[i]=550fj[i]=""}

}

}

}

public void paint(Graphics g)

//根据相应的坐标在屏幕上画炸d和吃炸d的娃娃,并保证白色的字母表示未按,粉红色的表示已按

{int i=0,j=0

g.setFont(new Font("Vrinda",1,21))

for(i<pd.lengthi++)

{ for (j=0j<fj.lengthj++)

if (pd[i].equals(fj[j]))

{g.setColor(new Color(255,93,55))

g.drawImage(paodan,x[i],y[i],this)

g.drawString(pd[i],x[i]+11,y[i]+20)

break

}

if (j==fj.length)

{g.setColor(new Color(255,255,255))

g.drawImage(paodan,x[i],y[i],this)

g.drawString(pd[i],x[i]+11,y[i]+20)

}

g.setColor(new Color(255,93,55))

g.drawImage(huojian,x1[i],y1[i],this)

g.drawString(fj[i],x1[i]+10,y1[i]+22)

}

}

//没有按的显红色,按了的显白色

public void keyPressed(KeyEvent k) //当用户按的是字母时,就生成一个防空字母.

{char z=k.getKeyChar()

int i=0,j=0

if ((z>='A' &&z<='Z') || (z>='a' &&z<='z'))

{ if (z-32>=65) z-=32

String zc=""+z

for(i<fj.lengthi++)

{ if (zc.equals(fj[i])) break

} //保证字母不重复

if (i==fj.length)

for(i=0i<fj.lengthi++)

if (fj[i].equals("")) {fj[i]=zcbreak}

}

}

public void keyReleased(KeyEvent k){}

public void keyTyped(KeyEvent k){}

public String noRepeat() //生成一个不重复的字母.

{int zc,i

String xinx

while(true)

{zc=(int)(Math.random()*26)

xinx=Zi26.substring(zc,zc+1)

for(i=0i<10i++)

if (pd[i].equals(xinx)) break

if(i==10) return xinx

}

}

int noHit(int i,int langth) //让字母保持车距.

{int tmpX,j,k,width=32

while (true)

{ tmpX=(int)(Math.random()*768)+1

for(j=0j<10j++)

{ if (tmpX+width<x[j] || tmpX>x[j]+width) continue//如果欲生成的位置不与当前J所占的位置相交就判断下一个J.

if ((tmpX>=x[j] &&tmpX<=x[j]+width) || (tmpX+width>=x[j] &&tmpX+width<=x[j]+width)) break

//如果欲生成的位置与当前x[j]所占据的范围相交就结束循环,重新生成一个起始位置.

}

if (j==10) {return tmpX}

}

}

public void update(Graphics g)

{if (bgImage==null)

{bgImage=createImage(this.getSize().width,this.getSize().height)

bg=bgImage.getGraphics()

}

bg.setColor(getBackground())

bg.fillRect(0,0,this.getSize().width,this.getSize().height)

//bg.setColor(getForeground())

paint(bg)

g.drawImage(bgImage,0,0,this)

}

public void run() //用线程循环更改Y值,并根据新的坐标在屏幕上重画pd[I]

{

while(true)

{fk()

panduan()

repaint()

try{ myThread.sleep(50) }catch(Exception e) {}

}

}

public static void main(String args[])

{paodan m=new paodan()

md=new JFrame("打字训练室")

md.setSize(800,600)

md.addKeyListener(m)

md.getContentPane().add(m)

m.cushi()

md.setVisible(true)

md.setResizable(false)

myThread=new Thread(m)

myThread.start()

}

}

注:源代码取自编程中国

本人一点建议:其实你这样学Java是没用的,你应该知道你做的项目思想,先做什么后做什么,然后在亲自动手去敲代码!一点建议!

一、金山打字通金山打字通

金山打字通是一款功能齐全、数据丰富、界面友好的、集打字练习和测试于一体的打字软件,金山打字通针对用户水平的定制个性化的练习课程,循序渐进,提供英文、拼音、五笔、数字符号等多种输入练习,并为收银员、会计、速录等职业提供专业培训。

软件特色 1、零基础入门 轻松学打字无需学习特殊的打字技巧、零基础即可入门练习,学习打字的过程轻松快速

2、全新独特的关卡模式一关连着一关,像是游戏的通关一般,培养用户学习打字的兴趣,避免急于求成的挫败感

3、各类主流输入法学习金山打字通拥有英文打字、拼音打字、五笔打字等主流输入法

4、从难到易 循序渐进

先通过知识讲解了解字母、字根、词组,了解后进行实战文章练习

二、拼音打字练习拼音打字练习

拼音打字练习是一款适合打字初学者快速上手入门的汉语拼音打字练习软件,软件内含六大易用的打字练习功能,软件完全免费,通过此拼音打字软件也可以学习汉语拼音,助你快速提高汉字打字水平。

软件特色此软件使用简单,设计傻瓜化,易 *** 作上手,可以帮你循序渐进地提高汉语拼音打字水平。

在此软件的练习过程中,都有汉字对照的拼音提示,键位提示,你不用担心不熟悉某些汉字的拼音,就算是多音字都会有相应的拼音提示。

软件里集成了大量拼音打字练习文章,其中还包含了小学一到六年级的课文,可以很好地帮助小学生、零基础用户轻松成为打字高手。

此软件免费,适合从头起步学拼音打字的成人,也适合学拼音不久的小学生。

三、雨阳打字通雨阳打字通

雨阳打字通和当年风靡一时的WT、金山打字通一样,以五笔打字练习为主,先易后难,骤步提升训练等级。其软件体积小巧,介面简洁 *** 作简单,适合电脑入门者练习使用。

使用方法点击课程按钮,选择要进行的练习或测试。

箭头后面的符号为回车符。

本窗口和课程对话框支持文件拖放、文本拖放、文本粘贴。

拖主入图片文件到本窗口或界面设置对话框来改变窗口背景。

四、轩软打字软件轩软打字软件是一款新型的打字训练软件。针对多种不同类型的用户,帮助您迅速提高打字速度。本软件支持字根、英文、数字、简码、文章等的练习。

五、老年人打字软件老年人打字软件

老年人打字软件是一款给一些识字但不懂得拼音五笔的老年人或者幼儿园的小孩打字软件。软件的原理很简单,只要让儿女输入一些常用的字到字库,字库中字会显示在界面提供给老年人选择,


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11614796.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存