C语言背单词课程设计报告东北大学秦皇岛分校Word文件下载.docx
《C语言背单词课程设计报告东北大学秦皇岛分校Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言背单词课程设计报告东北大学秦皇岛分校Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
2、课程设计前应书写开题报告主要内容包括(对题目的分析和对该课程设计的概要设计)
3、课程设计后应交《课程设计报告》,和软件原代码及编译后的应用软件
4、课程设计最后一次上机实验时检查题目的完成情况
5、课程设计中必须用到的内容为
a)文件的存取
b)结构体的使用
c)数组的使用
d)指针操作
一、开题报告
1:
变量和结构体说明
1)单词信息的结构体如下:
typedefstructword
//单词的结构体
{
charen[MAX_CHAR];
//英文形式
charno[MAX_CHAR];
//中文形式
}word;
2)存放单词的信息的变量如下:
words[MAX_NUM];
//单词数组
intnum;
//单词个数
2:
概要设计
1)定义结构体数组用来存放单词的信息
2)单词信息存放在data.txt中,文件格式如下:
单词个数—长度为4个字节
第1个单词的信息-----长度为sizeof(word)
第2个单词的信息-----长度为sizeof(word)
。
第n个单词的信息-----长度为sizeof(word)
3)读文件data.txt的过程如下:
先读取单词个数,然后逐个读取单词的信息,采用fread函数
4)写文件data.txt的过程如下:
先写入单词个数,然后逐个写入单词的信息,采用fwrite函数
5)删除单词和修改单词信息的时候,都需要先输入英文,从该英文找到单词的位置
6)程序采用菜单的形式显示,用户可以输入选择进行操作
3:
树型结构模块图
功能模块图如下:
4课程流程图
5:
操作说明
1)本程序需要目录下存在“data.txt”文件
2)系统的菜单如下:
3)添加单词信息的功能操作方法如下:
4)删除单词信息的功能操作方法如下:
5)修改单词信息的功能操作方法如下:
6)显示单词背诵(中至英)功能操作方法如下:
7)显示单词背诵(英至中)功能操作方法如下:
8)成绩查询的功能操作方法如下:
6:
课程详细代码:
#include<
stdio.h>
string.h>
stdlib.h>
#defineMAX_CHAR20//最大字符
#defineMAX_NUM100//单词的最大个数
voidread_from_file()
//从文件中读取单词的信息
FILE*fp;
inti=0;
fp=fopen("
data.txt"
"
rb"
);
if(!
fp)
{
printf("
打开文件data.txt失败!
\n"
return;
}
fread(&
num,1,sizeof(num),fp);
//先读取单词的个数
for(i=0;
i<
num;
i++)
s[i],1,sizeof(word),fp);
//读取每个单词的信息存放到结构体
fclose(fp);
//关闭文件
}
voidwrite_to_file()
wb+"
fwrite(&
//先写入单词的个数
//写入每个单词的信息
voidadd_infor()//添加单词信息
inta,i=num;
请输入单词的英文形式:
"
scanf("
%s"
s[i].en);
请输入单词的中文形式:
s[i].no);
num++;
您输入的信息为:
英文:
%s中文:
%s\nEnter0继续输入;
Enter1返回主菜单"
s[i].en,s[i].no);
voiddel_infor()//删除单词信息
inti=0,j=0;
printf("
请输入你要删除的单词中文形式:
no);
i++)//先找到该中文形式对应的序号
if(strcmp(s[i].no,no)==0)
{
for(j=i;
j<
num-1;
j++)
s[j]=s[j+1];
num--;
//数量减少1
return;
}
没有这个单词!
EnterEnter1返回主菜单"
voidmodify_infor()//修改单词信息
请输入你要修改的单词中文形式:
printf("
请输入单词正确的英文形式:
scanf("
请输入此单词正确的的中文形式:
return;
voidshow_infor()
{inti=0;
单词:
英文中文\n"
%10s%10s\n"
printf("
voidsearch_infor()//查询单词
请输入你要查询的单词中文形式:
{
英文形式中文形式\n"
%10s%12s\n"
没有这个中文形式!
voidzy_infor()
{
charb1[20];
intz,d=0,c=0;
inti;
i=rand()%num;
【%s】请输入英文单词:
b1);
for(z=0;
strcmp(b1,s[i].en)!
=0;
z=z)
{printf("
输入错误!
!
请重新输入:
scanf("
c=c+1;
\n恭喜你,回答正确,加10分!
\n\n"
d=d+1;
Enter2继续输入;
voidyz_infor()
intz,x=41,d=0,c=0;
【%s】请输入中文意思:
strcmp(b1,s[i].no)!
\nEnter3继续输入;
voidchengji_infor()
intc,d;
\n共计输入错误:
%d次**每次扣10分**\n"
c);
共计输入正确:
%d次**每次加10分**\n"
d);
你的总得分为:
%d分\n\n"
10*d-10*c);
voidshow_main_menu()
●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●\n"
◎◎\n"
●背单词系统●\n"
●作者:
4091405吴昊●\n"
●1、添加单词信息2、删除单词信息●\n"
●3、修改单词信息4、显示单词信息●\n"
●5、背诵(中至英)6、背诵(英至中)●\n"
●7、查询成绩8、退出●\n"
//用户界面
请选择您需要的操作序号(1-8)按回车确认:
intmain()
inta,choose=0;
num=0;
//初始化单词个数为0
read_from_file();
//读取文件
show_main_menu();
%d"
&
choose);
while(choose!
=8)
switch(choose)
case1:
add_infor();
break;
case2:
del_infor();
case3:
modify_infor();
case4:
show_infor();
case5:
zy_infor();
case6:
yz_infor();
case7:
chengji_infor();
while(a<
10000){scanf("
a);
if(a==0){
write_to_file();
if(a==1)
write_to_file();
main();
if(a==2)
zy_infor();
if(a==3)
if(a>
3)
{break;
//写入文件
***************谢谢使用单词背诵系统!
再见!
***************\n"
getchar();
return1;
7:
心得体会
通过本次C语言课程设计,是我对C语言的文件的存取、结构体的使用、数组的使用和指针操作有了更深的理解。
还充分体会了从事软件开发工作需要特别严谨认真的态度和作风,一点都马虎不得。
每一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。
有时候,我自己觉得我写的程序非常的正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间还没有一点进展。
这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙了才向同学和老师请教。
尽管向其他人请教解决问题比较快,自己钻研花的时间较多,但我强迫自己独立的思考对我的学习提高帮助非常大。
系统测试达到了良好的效果,编程思路清晰,界面操作简单,功能比较完善,通过此次C语言课程设计,使我提高了编程的经验,为以后的学习打下了坚实的基础。