中 国 地 质 大 学
本科生课程论文封面
1
课程设计评语
对课程论文的评语:
平时成绩:
课程论文成绩:
总 成 绩:
评阅人签名:
注:1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
2
目 录
课程设计评语 ....................................................................................................................................... 2
目 录 ..................................................................................................................................................... 3
1.课程论文题目................................................................................................................................. 4
2.程序设计思路................................................................................................................................. 4
3.功能模块图 ..................................................................................................................................... 5
4.数据结构设计................................................................................................................................. 5
5.算法设计......................................................................................................................................... 5
6.程序代码......................................................................................................................................... 6
7.程序运行结果................................................................................................................................. 9
8.编程中遇到的困难及解决方法 ...................................................................................................12
9.总结心得及良好建议 ...................................................................................................................13
10.致谢 ............................................................................................................................................. 13
3
1.课程论文题目
C 语言课程设计的目的:
一、
高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。
其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际
有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能
力。
二,要求一种简单的英文词典排版系统的实现
(1) 能输入和显示打入的单词。
(2) 能分辨出单词。
(3) 对重复的单词和已经输入的单词能自动排除。
(4) 能按 A~Z 的顺序排版。
(5) 能将运行结果以文本形式存储。
(6) 具有添加新单词并重新排版的能力。
2.程序设计思路
构架
建立词库
添加单词
排序
对 单 词 进 行
浏览单词
存储单词
结束
4
3 功能模块图
一种简单的英文词典排版系统
单词录入
单词排序
单词浏览
删除单词
添加单词
单词存储
4.数据结构设计
#include "stdlib.h" ---为 exit()函数提供原型;
#include "string.h"---字符串处理函数原型;
#include "ctype.h"---字符处理函数原型;
#define ROWS 256
#define COLS 32---定义“字典”的大小:可存放 256 个单词,每个单词的长度不超过 31
static FILE *fp;---定义文件指针:内部链接,文件作用域;
static char a[ROWS][COLS];---定义数组:内部链接,文件作用域;该数组的作用是将文
件的内容复制进来,并加以处理。因为处理数组比处理文件方便。
char get_option(void);---接收用户的选项,防止误操作。若输入“a;”(不包括引号),那么
将视为选项 a
int b(int count);---完成选项 b 的作用--接收新单词;
void c(char *pt[], int count);---完成选项 c 的作用--通过指针对数组排序,实际数组元素
位置未改变;
int check(char arr[], int count);---对输入的单词进行分辨,若输入 ni hao ,将视为单词 ni ,
并且提示并剔除重复的单词;
void storage(char *pt[], int count);---在程序结束之前重新排序存储数组中的单词到文件
中。
5.算法设计
整个系统呗设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模块要完成
输入单词、检查是否重复、排序操作。文件存储模块把存放单词的数组中的数据写入文件。
单词浏览模块完成英文词典的输出,即文件的输出操作。
将算法用流程图来表示,则有:
5
一种简单的英文词典排版系统
单词浏览
添加单词
单词排序
删除单词
单词录入
单词存储
6.程序代码
or project specific include files that are used frequently, but
// stdafx.h : include file for standard system include files,
//
//
//
are changed infrequently
#if !defined(AFX_STDAFX_H__4607A810_33E2_483D_80D8_BE41F0D473D5__INCLUDED_)
#define AFX_STDAFX_H__4607A810_33E2_483D_80D8_BE41F0D473D5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Insert your headers here
#define WIN32_LEAN_AND_MEAN
#define DLLEXPORT __declspec(dllexport)
#define DLLIMPORT __declspec(dllimport)
// Exclude rarely-used stuff from Windows headers
#include "stdio.h"
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
// TODO: reference additional headers your program requires here
void Msg(char *szFormat, ...);
void dbMsg(char *szFormat, ...);
6
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif
// !defined(AFX_STDAFX_H__4607A810_33E2_483D_80D8_BE41F0D473D5__INCLUDED_)
#include
#include
#include
#include
#include
void Search()
{
char temp[100];
char buffer[2];
char result[100];
printf("请输入要查询的单词:\n");
scanf("%s",&temp);
buffer[0]=temp[0];
buffer[1]='\0';
int ret=GetPrivateProfileString(buffer,temp,0,result,100,"./date.ini");
if(ret>0)
printf("%s\n\n\n\n\n",result);
else
printf("对不起,没有您要查找的单词.\n\n\n\n\n");
}
void InsertItem()
{
char temp[100];
char buffer[2];
char result[100];
printf("请输入要插入的单词:\n");
scanf("%s",&temp);
printf("请输入单词的解释:\n");
getchar();
scanf("%s",&result);
buffer[0]=temp[0];
buffer[1]='\0';
int ret=WritePrivateProfileString(buffer,temp,result,"./date.ini");
if(ret=0)
7
printf("插入失败。\n\n\n\n\n");
else
printf("插入成功。\n\n\n\n\n");
}
1 英译汉\n");
int main(int argc, char* argv[])
{
int index;
main:
printf("**************MENU***************\n\n");
printf("
// printf("2 汉译英\n");
printf("
// printf("
printf("
printf("
printf("**********************************\n");
do{
3 清空屏幕\n");
4 退出\n\n");
2 插入新的词条\n");
3 删除已有词条\n");
printf("请选择操作(1~4):\n");
scanf("%d",&index); /*输入选择项*/
}while(index<0||index>5); /*选择项不在 0~4 之间重输*/
switch(index)
{
case 1:
Search();
goto main;
break;
case 2:
InsertItem();
goto main;
break;
case 3:
system("cls");
goto main;
break;
case 4:
return 0;
break;
default:
break;
}
return 0;
8