当前位置:文档之家› 投稿管理系统

投稿管理系统

课程设计报告书专用纸淮海工学院课程设计报告书课程名称:计算机技术课程设计题目:投稿管理系统系(院):电子工程学院学期:10-11-2专业班级:电子082姓名:学号:1 需求分析和说明投稿管理系统软件的总体目标:在Visual C++ 6.0,的开发环境下,利用所学C语言和数据结构的相关知识,开发一个具有良好人机界面的投稿信息管理系统软件,本管理系统实现对稿件信息的管理,它的主要功能包括显示全部稿件信息、添加稿件、删除稿件、按稿件编号查询、按稿件名称查询、按稿件名称排序、按稿件浏览量排序。

1.1 基本要求(1)界面友好,易与操作。

采用菜单或其它人机对话方式进行选择。

(2)显示全部稿件信息和稿件的总个数。

稿件基本信息包括:稿件的编号、名称、作者、被浏览次数、添加日期。

(3)实现稿件的添加。

(4)实现稿件的删除。

(5)按稿件编号或稿件名称查询某个稿件的基本信息。

(6)按稿件名称或稿件被浏览的次数进行排序,并显示输出排序结果。

1.2 各功能模块的功能描述:1.系统总控制模块本模块的主要功能实现是系统菜单的输出、系统主要操作的选择控制。

2.稿件信息录入模块本模块的主要功能是根据用户的选择进行文件的创建、结构体类型定义、读写文件、插入法创建有序链表、遍历输出链表等,并且对新建结点录入的各项数据、数据输入格式进行验证。

3.稿件信息删除模块本模块的主要功能是删除用户指定的结点的信息,并将删除后的链表信息保存到文件中。

4.稿件信息查询模块本模块的主要功能是根据用户的选择,按稿件的编号或名称进行查询,并输出稿件的查询结果。

5.稿件信息排序模块本模块的主要功能是根据用户的选择,按稿件的名称或被浏览次数进行排序,并输出稿件的排序结果。

2 详细设计2.1 投稿管理系统结构图如图 1 所示:图1投稿管理系统结构图2.2 数据类型定义#define filename "C:\\wengao.dat"//数据的存储路径struct date//定义时间结构体{int year;//年int month;//月int day;//日};typedef struct WEN//定义稿件信息结构体{char number[10]; //稿件编号char name[20]; //稿件名称char writer[20];//稿件作者int time;// 稿件浏览次数struct date Date; //添加稿件日期struct WEN *next; //指向结构体自身的指针}WENGAO;/*函数声明*/WENGAO *NewNode(WENGAO *head);void Display_Message(WENGAO *head); //显示全部稿件信息void Linked_List(WENGAO *head); //列出链表的全部信息WENGAO * ReadFromFile(int); //从文件读取数据,构造链表void Save_Message(WENGAO *head); //将数据信息保存到文件中WENGAO * INSERT_Node(WENGAO *head,WENGAO *NewNode,int style);//插入结点信息void Free_Linked_List(WENGAO* head); //释放链表空间void deleteByNumber(WENGAO *head); //按稿件编号输出文稿int panduan(WENGAO* head,char * number);//编号唯一性的检验int Check_Date(WENGAO *NewNode, char *tmpDate);//日期合法性的检验void QuByName(WENGAO *head);//按稿件名称排序void QuBytime(WENGAO *head);//按浏览次数排序void searchByName(WENGAO *head);//按稿件名称查找void searchByNumber(WENGAO *head);//按稿件编号查找void mainMenu();//主菜单显示2.3 算法思想2.3.1 判断函数panduan(WENGAO* head,char * number),其功能是判断输入的稿件编号是否唯一。

2.3.2 结点生成模块首先使用malloc函数向系统申请分配指定size个字节的内存空间。

若申请成功则生成一个NewNode指针节点。

给其next域赋值NULL,通过键盘给其数据域赋上相应的值。

即NewNode->number赋上稿件的号码信息,NewNode->name赋上稿件的名字信息,NewNode->writer赋上稿件作者的信息,NewNode->time赋上稿件浏览次数的信息,再在NewNode->Data.year、NewNode->Data.month、NewNode->Data.day赋上添加时间的信息。

这就生成了一个完整的稿件信息,最后再返回新节点。

其流程图如图3所示:图3节点生成流程图2.3.3 稿件信息录入模块节点生成的部分由节点生成模块可得出,可由键盘输入稿件编号、名称、作者、浏览次数、添加日期的信息,同时调用panduan和Check_Date函数检测输入数据的合法性和唯一性。

若输入的信息有效,则返回新节点。

从而完成对一个新成员的转入操作。

其流程图如图 4所示:图 4稿件信息录入流程图2.3.4 稿件排序模块首先定位指针p1,p2,并赋值。

以按浏览次数升序排序为例,若strcmp(p1->time ,NewNode->time)<0,确定按浏览次数排序查找指针插入的位置,如未找到指针p1,p2同步后移。

然后将待插入节点插入到链表中,从而达到按浏览次序升序排序的效果。

同理亦可得其他四个类型排序。

排序流程图如图 5所示:图5排序流程图首先以rb形式打开一个文件。

ReadFromFile函数利用形参style, 调用INSTER生成有序链表的排序方式, 用插入法生成链表并返回头指针head,生成链表的头指针。

从文件中把数据全部读出。

从而达到从文件读取信息的功能。

从文件读取稿件信息流程图如图6所示:2.3.6 将链表信息写入文件流程图Save_Message(WENGAO *head)函数。

形参:要写入的链表的头指针。

其功能是将头指针为head的链表全部写入到文件中。

将稿件信息写入文件流程图如图 7所示:图7 稿件信息写入文件流程图2.3.7 将链表结点释放流程图释放链表所有结点所占内存。

函数Free_Linked_List(WENGAO* head)。

形参:要释放的链表的头指针。

Free_Linked_List函数实现的流程图如图8所示:图8 释放链表结点所占内存2.3.8 添加新稿件流程图函数WENGAO_add(WENGAO *head),形参:要处理的链表头指针head,其功能是添加若干个队员结点,然后保存结果到文件。

添加稿件流程图如图9所示:图 9 添加新稿件流程图2.3.9 删除稿件模块函数deleteByNumber(WENGAO *head),形参:要处理的链表头指针head,其功能是遍历链表删除指定的记录。

其流程如图10所示:图 10 删除稿件流程图3 用户手册用户打开C盘根目录,双击投稿管理系统.exe,则投稿管理系统软件被打开,出现如图11所示的画面,即系统主菜单画面。

图11系统主菜单用户可根据系统主菜单上的数字提示和自身的需求进行相应的操作。

选择1则可以显示全部稿件信息和稿件总数;选择2则可以添加新的稿件;选择3则可以删除自己已上传的稿件。

依此类推可知选择相应的数字,系统就会执行自动执行相应的操作。

选择7为例,显示画面如图 12 所示。

图12 按浏览量排序图 13 添加新稿件若选择2,按照相应的对话内容输入数据就能够完成新稿件的添加,如图13;若输入有误,则按照相应的提示,直到输入正确,如图 14所示。

图 14 输入有误的操作如果不想使用投稿管理系统或者已经完成了自己想要的操作,可以选择8或者点击退出系统。

4 测试结果4.1 测试数据及运行结果输入表1中十五组数据进行测试。

输入数据后选择1操作,运行结果如图15。

图15 测试数据输出4.1.1 稿件的删除图16 删除后的稿件显示输入相应的稿件编号存在(如编号15),则文稿就会被立即删除,如图16,若输入的编号不存在(如编号16),则会出现如图17所示的画面。

图17 删除不成功4.1.2 按名称排序输出图 18 按名称降序排序测试中选择了按稿件名称降序排序的测试途径,测试结果如图 18所示。

4.1.3 按浏览量排序图 19按浏览量降序查询测试中选择了按稿件浏览量降序的测试途径,测试结果如图19所示。

4.1.4 按名称查找图20按名称查找(有查找结果)若输入的名称存在时,则显示该稿件的基本信息,如图20所示。

否则输出“对不起,没有符合条件的结果!”即图21中所示。

图21 按名称查找(无查找结果)4.1.5 退出程序输入8,再按enter,直接了退出程序。

4.2 运行结果分析运行结果符合预定目标。

5 心得体会5.1 遇到的问题1.关闭程序后,输入的数据没有保存在程序中添加了Save_Message函数,把数据保存到了"C:\\wengao.dat"。

2.输出数据出现乱码检查程序后发现输出格式有误。

5.2 心得体会课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

如今随着科学技术发展,计算机应用在生活中可以说得是无处不在,因此作为二十一世纪的大学来说掌握计算机软件开发技术是十分重要和必要的。

回顾起此次课程设计,我有许多感触和体会,从确定《投稿管理系统》课题,到最后程序的调试成功,可以说在软件设计过程中经历的几番挫折。

在设计的过程中遇到了各种问题,例如:结构体的定义、结构体和指针之间的运用及函数的调用问题等,同时在调试程序的过程中也出现了一些问题,我想这是由于我对以前所学过的知识理解得不够深刻,掌握得不够牢固造成的。

不过我也从这次的课程设计中学到软件设计开发的的要点,并且巩固了大一学习的C语言知识和大三学习的软件工程知识。

同时,我也深刻的认识到了把基本理论知识学好的重要性,因为只有把基本理论知识掌握好,我们才能胜任未来的工作,并在工作岗位上有所创新!在李老师的辛勤指导下,这次课程设计终于顺利完成了。

在此要谢谢李老师在我调试程序的过程中给予的意见和指导!6 参考文献【1】谭浩强著.C语言程序设计(第三版),北京:清华大学出版社,2005.7【2】张海潘著.软件工程导论(第五版),北京:清华大学出版社,2008.2。

相关主题