1、a) 文件的存取b) 结构体的使用c) 数组的使用d) 指针操作一、开题报告 1:变量和结构体说明 1)单词信息的结构体如下:typedef struct word/单词的结构体 char enMAX_CHAR; / 英文形式 char noMAX_CHAR; /中文形式word;2)存放单词的信息的变量如下:word sMAX_NUM; /单词数组int num; /单词个数2: 概要设计1)定义结构体数组用来存放单词的信息2)单词信息存放在data.txt中,文件格式如下:单词个数长度为4个字节第1个单词的信息-长度为sizeof(word)第2个单词的信息-长度为sizeof(word)
2、。第n个单词的信息-长度为sizeof(word)3)读文件data.txt的过程如下:先读取单词个数,然后逐个读取单词的信息,采用fread函数4)写文件data.txt的过程如下:先写入单词个数,然后逐个写入单词的信息,采用fwrite函数5)删除单词和修改单词信息的时候,都需要先输入英文,从该英文找到单词的位置6)程序采用菜单的形式显示,用户可以输入选择进行操作3:树型结构模块图功能模块图如下:4课程流程图5: 操作说明1)本程序需要目录下存在“data.txt”文件2)系统的菜单如下:3)添加单词信息的功能操作方法如下:4)删除单词信息的功能操作方法如下:5)修改单词信息的功能操作方法
3、如下:6)显示单词背诵(中至英)功能操作方法如下:7)显示单词背诵(英至中)功能操作方法如下:6: 课程详细代码:#include string.hstdlib.h#define MAX_CHAR 20 / 最大字符#define MAX_NUM 100 / 单词的最大个数void read_from_file()/从文件中读取单词的信息 FILE *fp; int i=0; fp=fopen(data.txt,rb); if(!fp) printf(打开文件data.txt失败!n return ; fread(&num,1,sizeof(num),fp); /先读取单词的个数 for(i=
4、0;inum;i+)si,1,sizeof(word),fp); /读取每个单词的信息存放到结构体 fclose(fp);/关闭文件void write_to_file()wb+ fwrite(& /先写入单词的个数 /写入每个单词的信息void add_infor()/添加单词信息 int a,i=num;请输入单词的英文形式: scanf(%s,si.en);请输入单词的中文形式:,si.no); num+;您输入的信息为: 英文: %s 中文: %s n Enter 0 继续输入; Enter 1 返回主菜单,si.en,si.no);void del_infor()/删除单词信息 in
5、t i=0,j=0; printf(请输入你要删除的单词中文形式:,no);i+)/先找到该中文形式对应的序号 if(strcmp(si.no,no)=0) for(j=i;jnum-1;j+) sj=sj+1; num-; /数量减少 1 return; 没有这个单词!Enter Enter 1 返回主菜单void modify_infor()/修改单词信息请输入你要修改的单词中文形式: printf(请输入单词正确的英文形式: scanf(请输入此单词正确的的中文形式: return;void show_infor()int i=0;单词: 英文 中文 n %10s%10snprintf(
6、void search_infor()/查询单词请输入你要查询的单词中文形式: 英文形式 中文形式 n%10s%12sn没有这个中文形式!void zy_infor() char b120; int z,d=0,c=0; int i; i = rand()%num;【%s】请输入英文单词:,b1); for(z=0;strcmp(b1,si.en)!=0;z=z) printf(输入错误!请重新输入:scanf(c=c+1;n恭喜你,回答正确,加10分!nnd=d+1;Enter 2 继续输入;void yz_infor() int z,x=41,d=0,c=0;【%s】请输入中文意思:str
7、cmp(b1,si.no)!n Enter 3 继续输入;void chengji_infor() int c,d;n 共计输入错误:%d次 *每次扣10分*n,c); 共计输入正确:%d次 *每次加10分*n,d); 你的总得分为:%d分nn,10*d-10*c);void show_main_menu() #n n 背 单 词 系 统 n 1、添加单词信息 n 2、删除单词信息 n 3、修改单词信息 n 4、显示单词信息 n 5、背诵(中至英) n 6、背诵(英至中) n 7、查询成绩 n 8、退出 n /用户界面 请选择您需要的操作序号(1-8)按回车确认:int main() int
8、a,choose=0; num=0;/初始化单词个数为0 read_from_file(); /读取文件 show_main_menu();%d,&choose); while(choose!=8) switch(choose) case 1: add_infor();break; case 2: del_infor(); case 3: modify_infor(); case 4: show_infor(); case 5: zy_infor(); case 6: yz_infor(); case 7: chengji_infor(); while (a3) break;/写入文件 *谢谢
9、使用单词背诵系统!再见!* n getchar(); return 1;7: 心得体会通过本次C语言课程设计,是我对C语言的文件的存取、结构体的使用、数组的使用和指针操作有了更深的理解。还充分体会了从事软件开发工作需要特别严谨认真的态度和作风,一点都马虎不得。每一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。有时候,我自己觉得我写的程序非常的正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间还没有一点进展。这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙了才向同学和老师请教。尽管向其他人请教解决问题比较快,自己钻研花的时间较多,但我强迫自己独立的思考对我的学习提高帮助非常大。系统测试达到了良好的效果,编程思路清晰,界面操作简单,功能比较完善,通过此次C语言课程设计,使我提高了编程的经验,为以后的学习打下了坚实的基础。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1