C语言课程设计报告一种简单的英文词典排版系统的实现

合集下载

C语言课程设计-一种简单的英文词典排版系统的实现

C语言课程设计-一种简单的英文词典排版系统的实现

C语言课程设计-一种简单的英文词典排版系统的实现目录课程设计评语 ..................................................................... ............................. 错误~未定义书签。

2目录...................................................................... ........................................................................ ...... 1 1(课程论文题目 ..................................................................... .. (2)2(程序设计思路 ..................................................................... .. (2)3(功能模块图 ..................................................................... ............................................................... 3 4(数据结构设计 ..................................................................... .. (3)5(算法设计...................................................................... .................................................................. 4 (程序代码...................................................................... ................................................................ 12 6 7(程序运行结果 ..................................................................... (17)8(编程中遇到的困难及解决方法 ..................................................................... .. (19)9(总结心得及良好建议 ..................................................................... (20)10(致谢...................................................................... ......................................................................2011(课程论文题目一种简单的英文词典排版系统的实现【要求】1)能输入和现实打入的单词 ((2)能分辨出单词(3)对重复的单词和已经输入的单词能自动排除(4)能按A~Z的顺序排版(5)能将运行结果以文本形式储存(6)具有添加新单词蹦重新排版的能力[提示](1)需求分析:运行结果以文本形式储存,因而要提供文件的输入输出操作;通过查找操作检查重复单词;提供排序操作现实按A~Z的顺序排版;提供插入操作添加新单词并重新排版。

C语言课程设计之电子词典

C语言课程设计之电子词典
4.C 语言中的单词很少,包含的术语很少。您可能认为,语言包含的关键字越多,其功 能将越强大,情况并非如此。当您使用 C 语言进行编程时将发现,它能够完成任何任务。
5.C 语言是模块化的。可以以函数的方式来编写 C 语言代码,并在其他应用或程序中再 次使用这些函数。通过将一些信息传递给函数,可以创建很有用的、可重用代码。
第四章系统功能实现…………………………………………………………....9
4.1 保存单词…………………………………………………………………………9 4.2 结束界面………………………………………………………………………..11
总结……………………………………………………………………………….. …….. ….13
五、时间进度安排
顺序
1 2 3 4 5
阶段日期
第1天 (2008.03.24 第 2—3 天 (2008.03.25—2008.03.26) 第 4—8 天 (2008.03.28—2008.04.04) 第9天 (2008.04.05) 第 10 天 (2008.04.06)
计划完成内容
阅读资料 系统分析设计 程序编制、调试及运行
态度 能够独立完成设计工作,
按期圆满完成规定的设计任务,工作量饱满,
工作量
0.2 5 4 3 2
难度适宜。
说明书立论正确,论述充分,结论严谨合理, 说明书的
文字通顺,技术用语准确,符号统一,编号齐 0.5 5 4 3 2 质量
全,图表完备,书写工整规范。
指导教师评审成绩 (加权分合计乘以 8)

加权分合计
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到 了什么,哪里遇到了困难,解决的办法以及今后的目标。

英汉电子词典设计报告 设计 C语言 C语言程序设计

英汉电子词典设计报告 设计 C语言 C语言程序设计
1) 设计程序 2) 进行调试与运行 3) 完成设计报告 4) 答辩
四、课程设计进程安排
序号 设计各阶段内容 地点起止日 期1 2 3
下达任务书, 说明设计要求, 收集资料 实验 3#513 总体方案设计、详细设计 编写程序调试分析 实验 3#513 实验 3#513
3.1 3.2 3.3

撰写报告并上交,答辩


5.附录
#include<stdio.h> char word[200][40],meaning[200][40]; int ch; main () {menu:printf("******************MENU******************\n"); printf("1*search\n"); printf("2*creat\n"); printf("3*delete\n"); printf("4*update\n"); printf("5*exit\n"); printf("*******************************************\n"); printf("please make your choice from 1 to 5\n"); scanf("%d",&ch); switch(ch) {case 1:search(); break; case 2:creat(); break; case 3:dele(); break; case 4:update(); break; case 5:break; default:main(); } } int search() {char temp[40]; char s,g; int a,b,d,i,j; printf("\n please press the word\n"); scanf("%s",temp); s=temp[0]; for(i=0,j=0;s!='\0'&&j<=40;) {s=temp[j]; if(strcmp(word[i][j],s)==0) {j++; } else {j=0; i++; }

数据结构课程设计报告(简易英汉词典系统)

数据结构课程设计报告(简易英汉词典系统)

数据结构课程设计报告(简易英汉词典系统)广西大学课程设计报告课程:《数据结构》题目:简易英汉词典系统学院:______计算机与电子信息学院_专业:______计网类___________班级:______计网071_____ ___ _学号: 0707100103学生姓名:蓝冠恒指导教师:__ ________二〇〇九年四月一、实验目的和要求【实验目的】设计一个简易英汉词典系统,实现基本的单词检索功能,即输入英文单词则系统输出其汉语,反之亦然;并能够进行基本的词典维护操作,包括插入和删除,要求按英语的词典顺序排列单词。

【设计要求】(1)使用图形化界面。

(2)建立英语词汇表,输入为小写字母时为合法输入。

(3)每个词条应包含单词的英语形式、汉语释义、发音等基本信息。

二、设计概要:1、根据实验要求,与及所了解的数据类型相关知识,定义了如下数据类型:链接数据库声明的变量:Connection connection = null;Statement statement = null;ResultSet Result = null;声明全局变量:String newWord, pronunciations, indexWord="", deleteWord, searchEnglish, searchChinese,isSound;它们分别是:新增单词、新单词音标、引擎词、删除词、查找的英文、查找的汉语、判断音频是否存在。

2、实验功能所定义的各种按钮、文本框、选择框和列表框:取消删除功能按钮:JButton deleteCancelButton = new JButton();英汉互译面板上的发音按钮:JButton sound = new JButton();浏览词库面板上的发音按钮:JButton scanSoundButton = new JButton();添加单词的按钮:JButton addOkJButton = new JButton();取消添加功能的按钮:JButton addCancelButton = new JButton();删除词库单词信息按钮:JButton deleteOkButton = new JButton();浏览词库按钮:JButton scanButton = new JButton();要查找的英文或汉语的文本框输入框:JTextField inputSearchWord = new JTextField();新增单词文本输入框:JTextField inputNewWord = new JTextField();新增单词音标输入框:JTextField pronunciation = new JTextField();新增单词释义输入框:JTextField newWordChinese = new JTextField();新增单词过去式输入框:JTextField newWordPreterite = new JTextField();新增单词现在进行时态输入框:JTextField newWordModernism = new JTextField();要删除的单词输入框:JTextField inputDeleteWord = new JTextField();新增单词词性复选框:JComboBox newWordClass = new JComboBox();列出要查找的词的记录信息的多行文本框:TextArea outputSearchEnglish = new TextArea();列出要删除的单词的记录信息的多行文本框:TextArea deleteWordChinese = new TextArea();列出浏览时需浏览单词信息的多行文本框:TextArea scanOutput = new TextArea();DefaultListModel model = new DefaultListModel();列出所查找的英文或汉语对应的单词的列表框:JList listSearchEnglish = new JList(model);列出备选英标的列表框:JList pronunciationJList = new JList(listItem);列出可能且可以被删除的单词的列表框:JList deleteJList = new JList(model);列出词库所有单词的列表框:JList scanWordJList = new JList(model);3、实现功能所定义的各种函数:1)public static String Return(String str)将数据库里的单词的音标进行还原。

数据结构 C++ 简单英汉字典 实验报告

数据结构 C++ 简单英汉字典 实验报告

实验报告:简单英汉字典2011-12-22实现目标及要求:1)利用散列表实现英汉字典;2) 实现散列表类,要求实现一种散列表:•散列函数选取建议:将单词转成整数,再用除留余数法获得散列地址。

•冲突解决方法可采用开散列法。

3)实现字典类,字典数据存放在内存,字典类中有两个重要数据成员:•字典数组:存放字典数据的数组(或线性表)。

•散列表对象:作为字典数据索引的散列表。

–散列表元素结构包含单词和对应字典数据在字典数组中的下标,可通过散列表直接获得单词在字典数组的下标。

4)利用上面两个类实现英汉字典。

5)界面要求:键盘输入单词,屏幕输出解释:–界面菜单项:•1.添加新词•2.删除单词•3.查字典–查字典界面:•请输入英文单词:China•中文翻译:中国实验环境与工具:使用Microsoft Visual Studio 2010 在Windows7 64位环境下进行实验。

实验思路:分如下N步:1.先实现链结点类的结构。

2.实现字典类的结构。

3.实现词条类的结构。

4.实现词条的散列表分类方法。

5.整合功能。

主要的数据结构如下://Hash_head.h#include<assert.h>#include<string>#include<stdlib.h>using namespace std;const int defaultDicSize=10;const int defaultTableSize=10;class ChainNode{public:Entry<string> EntryLink;ChainNode *link;};template<class E>class Dictionary{public:Dictionary(E e[]);~Dictionary(){delete []ht;}bool search(string,string &);bool search(string,string &,ChainNode *&);bool insert(E);bool insert(string,string);bool remove(string);void dicPos(E e[]);void outputDic();private:ChainNode *ht;int dicSize;//总词条数int tableSize;//每个索引容量};template<class E>Dictionary<E>::Dictionary(E e[]){//计算词条数,作为字典最大长度dicSize=0;while(e[dicSize].chinese!=""){dicSize++;}//初始化字典ht=new ChainNode[dicSize];for(int i=0;i<dicSize;i++){ht[i].link=NULL;ht[i].EntryLink=Entry<string>();}}template<class E>void Dictionary<E>::dicPos(E e[]){int i;ChainNode *p;for(i=0;i<dicSize;i++){insert(e[i]);}}template<class E>bool Dictionary<E>::insert(E ent){int k;ChainNode *p1,*p2;tableSize=5;k=ent.firstLetter()%tableSize;p1=&ht[k];if(p1->link!=NULL){p1=p1->link;while(p1->link!=NULL){p1=p1->link;}}p2=new ChainNode;p2->EntryLink=ent;p2->link=NULL;p1->link=p2;return 0;}template<class E>bool Dictionary<E>::insert(string str1,string str2){ Entry<string> *e=new Entry<string> (str1,str2);insert(*e);return 1;}template<class E>void Dictionary<E>::outputDic(){int i;ChainNode *p1;for(i=0;i<tableSize;i++){//cout<<"************************************"<<endl;//cout<<i<<endl;//cout<<"****"<<endl;if(ht[i].link!=NULL){p1=&ht[i];while(p1->link!=NULL){p1=p1->link;p1->EntryLink.output();}}}//cout<<"************************************"<<endl;}template<class E>bool Dictionary<E>::remove(string str){string result;ChainNode *ptr;if(search(str,result,ptr)==1){ptr->link=ptr->link->link;return 1;}else{return 0;}}template<class E>bool Dictionary<E>::search(string str,string &result){ChainNode *ptr;return search(str,result,ptr);}template<class E>bool Dictionary<E>::search(string str,string &result,ChainNode *&ptr){ int k;ChainNode *p1,*p2;Entry<string> strEnt(str);k=strEnt.firstLetter()%dicSize;p1=&ht[k];if(p1->link!=NULL){do{ptr=p1;p1=p1->link;if(p1->EntryLink.word==strEnt.word){result=p1->EntryLink.chinese;return 1;}}while(p1->link!=NULL);return 0;}else{return 0;}}//Entry_head.h#include<assert.h>#include<string>#include<stdlib.h>using namespace std;template<class K>class Entry{public:K word;K chinese;public:Entry(K,K);Entry();Entry(K);void output();int firstLetter();};template<class K>Entry<K>::Entry(K w,K c){word=w;chinese=c;};template<class K>Entry<K>::Entry(){word="";chinese="";};template<class K>Entry<K>::Entry(K w){word=w;chinese="";};template<class K>void Entry<K>::output(){cout<<"英文:"<<word<<endl;cout<<"中文:"<<chinese<<endl<<endl;}template<class K>int Entry<K>::firstLetter(){char *strv = strdup (word.c_str());//stringתcharreturn int(strv[0]);}主要代码结构://Hash_main.cpp#include<iostream>#include<string>#include"Entry_head.h"#include"Hash_head.h"using namespace std;const int deafaultSize=10+1;int main(){cout<<"********************************************"<<endl;cout<<"***** *****"<<endl;cout<<"***** 大猫哥*****"<<endl;cout<<"***** Make By LJDe.de *****"<<endl;cout<<"***** E-mail:**********************"<<endl;cout<<"***** *****"<<endl;cout<<"********************************************"<<endl;Entry<string> e[deafaultSize]={Entry<string>("eliminate","消除"),Entry<string>("accommodation ","招待设备"),Entry<string>("convince ","使确信"),Entry<string>("conscience ","良心"),Entry<string>("lantern ","灯笼"),Entry<string>("procession ","队伍"),Entry<string>("quit","离开"),Entry<string>("pudding ","布丁"),Entry<string>("reaction ","反应"),Entry<string>("shrink ","收缩"),Entry<string>()};Dictionary< Entry<string> > dic(e);int deed;string str1,str2;Entry<string> *eLit;dic.dicPos(e);do{cout<<endl<<"*************************************************************** *************"<<endl;cout<<"1.查看已有的字典词条。

C语言英汉词典课程设计

C语言英汉词典课程设计

C语言英汉词典课程设计一、课程目标知识目标:1. 学生能够掌握C语言基础语法,包括变量声明、数据类型、运算符、控制结构等。

2. 学生能够理解结构体在C语言中的应用,并能够使用结构体创建英汉词典的数据结构。

3. 学生能够运用文件操作函数实现英汉词典的存储与读取。

技能目标:1. 学生能够运用C语言编写程序,实现英汉词典的增删查功能。

2. 学生能够通过调试和优化程序,提高英汉词典的运行效率。

3. 学生能够通过小组合作,共同完成一个具有实用价值的英汉词典项目。

情感态度价值观目标:1. 学生培养对编程的兴趣,提高解决实际问题的能力。

2. 学生在团队合作中,学会相互尊重、沟通协作,培养团队精神。

3. 学生通过英汉词典项目,认识到编程在生活中的应用,激发创新意识。

课程性质:本课程为C语言编程实践课程,以项目为导向,注重培养学生的动手能力和实际应用能力。

学生特点:学生为高年级学生,已具备一定的C语言基础,对编程有一定了解,具备一定的自学和解决问题能力。

教学要求:教师需引导学生运用所学知识,以小组合作形式完成英汉词典项目,注重培养学生的编程思维和实际操作能力。

在教学过程中,关注学生的情感态度价值观的培养,激发学生的学习兴趣和团队协作精神。

通过课程目标的分解,确保学生能够达到预期学习成果,为后续教学设计和评估提供依据。

二、教学内容1. C语言基础回顾:变量声明、数据类型、运算符、控制结构(条件语句、循环语句)。

2. 结构体概念与应用:结构体的定义、声明、初始化;结构体数组、结构体指针。

3. 文件操作:文件的打开、关闭、读写操作;二进制读写;文本文件与二进制文件的转换。

4. 英汉词典项目实战:a. 数据结构设计:定义单词结构体,创建单词列表。

b. 功能模块设计:实现添加、删除、查找、显示全部单词等功能。

c. 文件操作:实现词典的存储与读取。

d. 界面设计:设计简单易懂的用户界面,提供用户操作接口。

5. 调试与优化:分析程序性能,进行调试优化,提高词典运行效率。

课程设计报告---学生背单词系统设计(C语言)

课程设计报告---学生背单词系统设计(C语言)

课程设计课程名称:管理信息系统课程设计题目:学生背单词系统设计(C语言)学生姓名:学号:班级:专业:信息管理与信息系统指导教师:目录1系统的背景分析 (3)1.1 课程设计的目的 (3)1.2 对课程设计的基本要求 (3)2学生背单词系统的设计过程 (3)2.1 变量和结构体说明 (3)2.2 概要设计 (4)2.3 树形结构模型图 (5)2.4 课程流程图 (5)2.5 背单词系统的操作演示 (6)3总结和心得体会 (10)附录课程详细代码............................................................................... 错误!未定义书签。

学生背单词系统设计(C语言)1 系统的背景分析该系统是帮助单词背诵单词的软件,要求用户可以选择背诵的词库,并可以编辑自己的词库,系统可以给出中文,让单词输入其英文意思,也可输出英文让单词输入中文意思,并判定词义是否正确,如不正确给出提示并要求用户重新输入,如正确给以鼓励,还应有词语预览功能。

它的基本功能如下:词库的维护,课程预览,显示中文用户输入英文的背诵方法,显示英文用户输入中文的背诵方法,背诵成绩的记录。

1.1 课程设计的目的:综合训练单词用C语言编程解决问题和处理问题的能力,巩固其对C语言课程内容和知识的掌握。

1.2 对课程设计的基本要求:1 尽量多的应用C语言中所学到的知识和语句;2 课程设计前应书写开题报告主要内容包括(对题目分析和该课程设计的概要设计);3 课程设计后应交《课程设计报告》,和软件原代码及编译后的应用软件;4 课程设计最后一次上机实验时检查题目的完成情况;5 课程设计中必须用到的内容为:(1) 文件的存取;(2) 结构体的使用;(3) 数组的使用;(4) 指针操作;2 学生背单词系统的设计过程2.1变量和结构体说明(1) 单词信息的结构体如下:typedef struct word//单词的结构体{char en[MAX_CHAR]; // 英文形式char no[MAX_CHAR]; //中文形式}word;(2) 存放单词的信息的变量如下:word s[MAX_NUM]; //单词数组int num; //单词个数2.2 概要设计(1) 定义结构体数组用来存放单词的信息(2) 单词信息存放在data.txt中,文件格式如下:单词个数—长度为4个字节第1个单词的信息-----长度为sizeof(word)第2个单词的信息-----长度为sizeof(word)第3个单词的信息-----长度为sizeof(word)第4个单词的信息-----长度为sizeof(word)第5个单词的信息-----长度为sizeof(word)第6个单词的信息-----长度为sizeof(word)第7个单词的信息-----长度为sizeof(word)第8个单词的信息-----长度为sizeof(word)。

c课程设计英汉词典

c课程设计英汉词典

c课程设计英汉词典一、课程目标知识目标:1. 学生能掌握英汉词典的基本结构和使用方法。

2. 学生能识别并理解本章节中出现的关键英语词汇及其汉译。

3. 学生能通过英汉词典查找并正确使用至少10个新词汇。

技能目标:1. 学生能运用英汉词典提高阅读理解能力,快速获取英文信息。

2. 学生能培养通过词典学习新词汇的自学能力,形成良好的学习习惯。

3. 学生能通过小组合作,共同探讨词典使用技巧,提高团队协作能力。

情感态度价值观目标:1. 学生对英语学习保持兴趣,增强学习信心。

2. 学生在英汉词典使用过程中,培养耐心和细心的品质。

3. 学生通过学习,认识到词汇学习对英语水平提升的重要性,树立正确的学习观念。

课程性质:本课程为英语学科选修课程,旨在帮助学生掌握英汉词典的使用方法,提高英语词汇学习效率。

学生特点:学生为五年级学生,具有一定的英语基础,但词典使用能力较弱,对英语词汇学习有较高兴趣。

教学要求:课程应注重实践性,结合课本内容,引导学生学会使用英汉词典,培养自学能力和团队协作精神。

同时,关注学生情感态度价值观的培养,激发学习兴趣,提高学习效果。

通过具体的学习成果分解,使学生在课程结束后能够达到预期目标。

二、教学内容本章节教学内容以课本第五单元“Word Power”为基础,涵盖以下方面:1. 英汉词典的基本结构介绍:包括词典的序言、目录、词汇表、附录等部分,使学生了解词典的编排规律。

2. 词典查词技巧:教授学生如何快速查找单词,包括使用音标、词性、释义等,提高查词效率。

3. 词汇学习:选取课本第五单元中的重点词汇,通过英汉词典查找,学习词汇的用法和搭配。

4. 词汇拓展:以课本词汇为出发点,引导学生通过英汉词典查找相关词汇,拓展词汇量。

5. 实践活动:组织学生进行小组合作,共同完成词汇查找、释义、造句等任务,巩固所学知识。

教学大纲安排如下:第一课时:英汉词典基本结构介绍,学会使用目录和词汇表。

第二课时:词典查词技巧,以课本词汇为例,进行实际操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

..中国地质大学本科生课程论文封面课程名称 C语言课程设计教师姓名本科生姓名本科生学号本科生专业所在院系日期:课程设计评语注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

目录课程设计评语 (2)目录 (3)1.课程论文题目 (4)2.程序设计思路 (4)3.功能模块图 (5)4.数据结构设计 (5)5.算法设计 (5)6.程序代码 (16)7.程序运行结果 (21)8.编程中遇到的困难及解决方法 (24)9.总结心得及良好建议 (24)10.致谢 (24)1.课程论文题目一种简单的英文词典排版系统的实现:【要求】(1)能输入和现实打入的单词;(2)能分辨出单词;(3)对重复的单词和已经输入的单词能自动排除;(4)能按A~Z的顺序排版;(5)能将运行结果以文本形式储存;(6)具有添加新单词重新排版的能力。

[提示](1)需求分析:运行结果以文本形式储存,因而要提供文件的输入输出操作;通过查找操作检查重复单词;提供排序操作现实按A~Z的顺序排版;提供插入操作添加新单词并重新排版。

另外通过键盘式菜单实现功能选择。

(2)总体设计:整个系统被设计为单词录入模块,文件存储模块和单词浏览模块。

其中单词录入模块要完成输入单词,检查是否重复,排序操作。

文件存储模块把存放单词的数组中的数据写入文件。

单词浏览模块完成英文词典的输出,即文件的输出操作。

(3)数据结构采用指针数组或二维数组。

以【Enter】键或者空格键作为单词输入结束标志,对重复的单词自动排除可选用查找方法,数据结构可采用指针和数组。

2.程序设计思路在英文词典排版当中,人工统计的速度很慢,且容易出现差错。

本英文词典排版系统的自动化加速了排版工作,提高工作效率本程序主要采用对零散的单词进行自动读取,然后按单词首字母顺序讲单词保存到文档,这样的结构化非常便于程序后续的排版工作。

排版具体过程涉及到自动排除重复单词与添加新单词并重新排版等问题,将于正问中详细介绍。

本程序实现了所有设计要求。

整个系统被设计为单词录入模块、文件存储模块和单词浏览模块。

其中单词录入模块要完成输入单词、检查是否重复、排序操作。

文件存储模块把存放单词的数组中的数据写入文件。

单词浏览模块完成英文词典的输出,即文件的输出操作。

34.数据结构设计数据结构采用指针数组或二维数组:char* dictionary[N];或char dictionary[N][20]。

其中N 是宏定义#define N 256(表示单词个数)。

(1)单词录入模块输入一个单词,存放在一个临时字符数组中,以空格或回车表示单词的结束(这也是默认操作),然后换行输出刚刚输入的单词。

采用插入排序算法的思想把该单词插入单词数组中,不同的是如果两个单词相同则不插入。

(2)文件存储模块采用fwrite 或fprintf 把单词数组输入到文件中。

(3)单词浏览模块采用fread 或fscanf 把单词从文件中读出,然后输出。

5.算法设计(1)主函数【流程图】NY【程序】#include "stdio.h"#include "stdlib.h"#include "string.h"#include "ctype.h"#define ROWS 256#define COLS 32static FILE *fp;static char a[ROWS][COLS];char get_option(void);int b(int count);void c(char *pt[], int count);int check(char arr[], int count);void storage(char *pt[], int count);int n; //****n全局变量*****//char word[N][20];void menu()//***主界面***//{int n,w;//*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*//do{puts("\t\t********************MENU********************\n\n");puts("\t\t\tWelcome to dj's program!\n\n");puts("\t\t\t\t 1.Add new word.");puts("\t\t\t\t 2.Browse all the words.");puts("\t\t\t\t 3.Search the word.");puts("\t\t\t\t 4.Sort the words.");puts("\t\t\t\t 5.Order by A-z.");puts("\t\t\t\t 6.Exit!");puts("\n\n\t\t****************************************\n");printf("Choice your number(1-6): [ ]\b\b");scanf("%d",&n);if(n<1||n>6)//*对选择的数字作判断*//{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:add();break;//*追加模块*//case 2:browse();break;//*浏览模块*//case 3:search();break;//*查找模块*//case 4:sort();break;//*分类模块*//case 5:order();break;//*排序模块*//case 6:exit(0);//*退出*//}}void main() //********主函数*********//{menu();}(2)公共函数【程序】int load()//*加载函数*//{int i,count;int start;char *pt[ROWS];char ch, len;char input;if((fp=fopen("words.txt","a+"))==NULL)//*以输出打开方式,在此前的记录被覆盖*//{printf("\nCannot open file!\n");return NULL;}for(i=0;!feof(fp);i++)fscanf(fp,"%s",&word[i]);fclose(fp);return i+1;//*返回记录个数*//}void save(int n)//*保存函数,保存n个记录*//{FILE *fp;int i;if((fp=fopen("words.txt","a+"))==NULL)//*以输出打开方式,在此前的记录被覆盖*//{printf("\nCannot open file!\n");exit(0);}for(i=0;i<n;i++)fprintf(fp,"%s",&word[i]);fclose(fp);}(3)各功能模块设计1)分类模块【程序】void sort(){int i,j,k;char c[20];if((n=load())==0){printf("\nCannot open file!\n");exit(0);}for(i=0;i<n;i++)for(j=0;j<n-i-1;j++);if(strcmp(word[j],word[j+1])>0){strcmp(c,word[j]);strcmp(word[j],word[j+1]);strcmp(word[j+1],c);}save(n);printf("Successful!^_^.\n");printf("\nNow? 1.browse all 2.back");scanf("%d",&k);if(k==1)browse();else if(k==2)menu();}2)排序模块【流程图】【程序】void order() //*排序模块*//{int a[N],i,j,t;struct words;n=load();for(i=0;i<N;i++)for(i=0;i<N-1;i++)for(j=i+i;j<N;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(j=0;j<N;j++)printf("%3d",a[i]); }3)修改模块【流程图】【程序】void modify(int a) //*修改模块*//{char c[20];printf("Enter the new word:");scanf("%s",c);strcpy(word[a],c);save(n);}4)删除模块【流程图】【程序】void del(int a) //*删除模块*//{int x,i,y;printf("Are you sure to delete this word?\n\t1).sure 2).no and back menu [ ]\b\b");scanf("%d",&x); //*输入要修改的单词*//if(x==1){for(i=a;i<n-1;i++) //*查找要修改的单词*//strcpy(word[i],word[i+1]);save(n-1);printf("Successful!^_^.\nNow? 1).one more 2).back menu");scanf("%d",&y);if(y==1)search();}else if(x==2){menu();}}5)追加模块【流程图】【程序】void add() //*追加模块*//{int i,x,w1,w2,w;char c[20];if((n=load())==0)exit(0);else{puts("Enter the new word!\n");scanf("%s",c); //*输入要追加的单词*//for(i=0;i<n;i++)break;}if(i<n){w=1;do{printf("The word has already exit!\n");printf("\n\nWhat do you want to do?\n\t1).enter one more 2).back menu [ ]\b\b");scanf("%d",&x);if(x<1||x>2)w1=1;elsew1=0;}while(w1==1);}else{w2=1;strcpy(word[i],c);save(n+1);printf("Successful!^_^.Now choose what you will do next?\n\t1).add another 2).back menu [ ]\b\b");do{scanf("%d",&x);if(x<1||x>2)w2=1;elsew2=0;}while(w2==1);}switch(x){case 1:add();break;case 2:menu();break;}}6)浏览(全部)模块【流程图】【程序】void browse() //*浏览(全部)模块*//{int i,w;if((n=load())==0) //*加载记录*//{printf("\nCannot open file!\n");exit(0);}for(i=0;i<n-1;i++)printf("%s/n",word[i]);puts("Successful!^_^.Now 1.back menu 2.sort");scanf("%d",&w);if(w==1)menu();else if(w==2)sort();}7【流程图】【程序】void search() //*查找模块*//{int i,x,y;char vs[20];if((n=load())==0) //*加载记录*//{printf("\nCannot open file!\n");exit(0);}printf("Enter the word what you want to search!");scanf("%s",vs); //*输入要查找的单词*//for(i=0;i<n;i++) //*查找要修改的单词*//if(strcmp(word[i],vs)==0){printf("Successful!^_^.\nThe word is:%s\n",word[i]);//*找到需要修改的单词*//printf("What would you like to do with the word?\n\t1).modify 2).delrte 3).nothing []\b\b");modify(i);else{del(i);}}if(i==n)printf("HOHO!Sorry........Not found~~~");printf("Now.....1).one more 2).back 3).exit");scanf("%d",&x);switch(x){ case 1:search();break;case 2:menu();break;case 3:exit(0);}}6.程序代码#include "stdio.h"#include "stdlib.h"#include "string.h"#include "ctype.h"#define ROWS 256#define COLS 32static FILE *fp;static char a[ROWS][COLS];char get_option(void);int b(int count);void c(char *pt[], int count);int check(char arr[], int count);void storage(char *pt[], int count);int main(void){int i,count;int start;char *pt[ROWS];char ch, len;if((fp=fopen("words.txt","a+"))==NULL){fputs("不能打开或建立文件!\n",stderr);exit(1);}fseek(fp,0L,SEEK_END);start=(int)ftell(fp)/32;count=start;rewind(fp);if(fread(a,32*sizeof(char),start,fp)==0){i=0;puts("开始创建词库");puts("请输入单词(每行一个)");puts("在新行输入END结束输入:");while(i<ROWS&&scanf("%s", a[i])==1){fflush(stdin);if(strncmp(a[i],"END",3)==0){count+=i;break;}if(check(a[i], i))continue;i++;}}puts("\t\t*********************欢迎使用字典排版系统*******************\n\n");puts(" MENU ");puts("您要做些什么?");puts("a. 显示已有的单词 b. 添加新单词");puts("c. 对已有的单词进行排序 d. 退出");puts("\n\n\t\t**********************************************************\n");while((input=get_option())!='d')puts("已有的单词:");for(i=0;i<count;i++){printf(" ");puts(a[i]);}}if(input=='b'){puts("开始创建词库");puts("请输入新的单词(每行一个)"); puts("在新行输入END结束输入: "); count=b(count);}if(input=='c'){puts("对单词进行排序:");c(pt, count);for(i=0;i<count;i++){printf(" ");puts(pt[i]);}}puts("还要做些什么?");}storage(pt,count);fclose(fp);puts("谢谢使用,再见!");return 0;}char get_option(void){char ch;while((ch=getchar())<'a'||ch>'d')puts("请输入a,b,c或者d.");}fflush(stdin);return ch;}int b(int count){int i;i=count;while(i<ROWS&&scanf("%s", a[i])==1) {fflush(stdin);if(check(a[i], i))continue;if(strncmp(a[i],"END",3)==0){count=i;break;}i++;}return count;}void c(char *pt[], int count){int i,j;char *temp;for(i=0;i<ROWS;i++)pt[i]=a[i];for(i=0;i<count;i++)for(j=i+1;j<count;j++){temp=pt[i];pt[i]=pt[j];pt[j]=temp;}}}int check(char arr[], int count){int i;int flag=0;for(i=0;i<strlen(arr);i++)if(isalpha(arr[i])==0){printf("%s不是一个单词.\n",arr);flag=1;break;}for(i=0;i<count;i++)if(strncmp(a[i],a[count],strlen(a[count])+1)==0) {puts("重复的单词!");flag=1;}return flag;}void storage(char *pt[], int count){int i,j;char ptr[ROWS][COLS];c(pt, count);for(i=0;i<count;i++)for(j=0;pt[i][j]!='\0';j++)ptr[i][j]=pt[i][j];fp=fopen("words.txt","w+");rewind(fp);7.程序运行结果(1)输入单词(2)显示打入的单词(3)能分辨出单词并对重复的单词和已经输入的单词能自动排除(4)按A—Z的顺序排版(5)添加新单词并重新排版(6)退出(7)将运行结果以文本形式(word.txt)存储8.编程中遇到的困难及解决方法在编程的过程中,很容易出现多个小问题,比如缺少“;”或者“}”。

相关文档
最新文档