C语言课程设计报告_一种简单的英文词典排版系统的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.程序设计思路
在英文词典排版当中,人工统计的速度很慢,且容易出现差错。本英文词典排版系统的自动化加速了排版工作,提高工作效率本程序主要采用对零散的单词进行自动读取,然后按单词首字母顺序讲单词保存到文档,这样的结构化非常便于程序后续的排版工作。排版具体过程涉及到自动排除重复单词与添加新单词并重新排版等问题,将于正问中详细介绍。本程序实现了所有设计要求。
整个系统被设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词、检查是否重复、排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出,即文件的输出操作。
3
4.数据结构设计
数据结构
采用指针数组或二维数组:char* dictionary[N];或char dictionary[N][20]。其中N 是宏定义
#define N 256(表示单词个数)。
(1)单词录入模块
输入一个单词,存放在一个临时字符数组中,以空格或回车表示单词的结束(这也是默认操作),然后换行输出刚刚输入的单词。采用插入排序算法的思想把该单词插入单词数组中,不同的是如果两个单词相同则不插入。
(2)文件存储模块
采用fwrite 或fprintf 把单词数组输入到文件中。
(3)单词浏览模块
采用fread 或fscanf 把单词从文件中读出,然后输出。
5.算法设计
(1)主函数
【流程图】
N
Y
【程序】
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#define ROWS 256
#define COLS 32
static 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;