3、抽象数据类型串的定义
ADT String{
数据对象:D={ai| ai ∈CharacterSet,i=1,2,?,n,n≥0} 数据关系:R1={| ai-1, ai ∈ D,i=2,?,n} 基本操作:
StrAssign(&T,chars)
初始条件:chars是字符串常量。
操作结果:生成一个其值等于chars的串T。 StrCompare(S,T)
初始条件:串S和串T存在。
操作结果:若S>T,则返回值>0;若S=T,则返回值=0;若S 操作结果:返回S的元素个数,成为串的长度。 Concat(&T,S1,S2) 初始条件:串S1和串S2存在 操作结果:用T返回串S1和串S2联接成的新串 SubString(&Sub,S,pos,len) 初始条件:串S存在,1≤pos≤Strlength(S)-pos+1。 操作结果:用Sub返回串S的第pos个字符起长度为len的子串。 Index(S,T,pos) 初始条件:串S和串T存在,T是非空串,1≤pos≤Strlength(S) 操作结果:若主串S中存在和串T值相同的子串,则返回它在主串S中第pos个字符之后第一次出现的位置;否则函数值为0。 9 }ADT String 4、函数调用关系 ①定长顺序存储表示 GetNext GetNext_val IndexBF IndexKMP1 IndexKMP2 Count lenth StrPP CreateTextFile mandle Reserve main Enter ProgBar() EnterPassword() ② 链式存储表示 strlen ListInseListInsertLine IninLinkList getnext Index printlines main ③登录 ProgBar() Enter() ProgBar() 10 5、主程序调用 void main() { If(登录成功) 执行接下来的操作; Else 程序终止; 选择储存方式(1.定长顺序存储 2.单链表存储) If(1) { do{ 选择相应的功能: 1. 新建文本文件 2.打开文件并匹配; 3.查询历史匹配记录; 0.操作失误,请求退出! case(1): CreateTextFile(); case(2): mandle(); case(3):research(); case(0):退出程序; } } If(2) { do{ 选择相应的功能: 1. 新建文本文件 11 2.打开文件并匹配; 3.查询历史匹配记录; 0.操作失误,请求退出! } case(1): CreateTextFile(); case(2): mandle_lianshi(); case(3):research(); case(0):退出程序; } } 五、详细设计 1、宏定义 ①strMSPP.h: #include #define MAXSTRLEN 256 //字符串最大容量 #include #define OVERFLOW -2//溢出时的值为-2 #define OK 1 //成功时的值为1 #define ERROR 0 //不成功的值为0 typedef int ElemType;//ElemType为任意的数据类型 12 typedef int Status; ②PATH.H: #include\#include #define Password \设定密码 char prompt[100]; 2、数据元素结构定义 ①定长顺序存储表示 typedef struct{ char ch[MAXSTRLEN];//ch是一个可容纳256个字符的字符数组 int length; }SeqString;//定义顺序串类型 ②单链表存储表示 typedef struct Lnode { ElemType data;//数据域 struct Lnode *next; //指针域 }Lnode,*LinkList; 3、 功能具体实现 ⑴ 登录系统 根据窗口下的提示输入密码,输入正确则进入相关操作,当输入错误三次后则程序中断。具体代码实现如下: DWORD WINAPI ProgBar(LPVOID threadNum);// 函数声明:进度条线程函数 13