资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
学生课程设计设计案例编写程序实现对学生四门课程的考试成绩进行管理的功能。 其功能包括:1. 增加学生成绩记录2. 修改学生成绩记录3. 删除学生成绩记录4. 学生成绩记录列表5. 成绩记录写入文件6. 学生成绩记录文件读取7. 按学号排序和按名称搜索。程序界面要求:仿 windows 窗口风格以菜单方式驱动,并每个功能都在字符窗口中实现。 题目分析: 程序的几个需要考虑的问题: 1 、一个实用的应用程序必须提供一个相对比较简单、清晰的操作界面。目前大多数在 windows 中实现的应用系统都可以借助其开发接口很简单的产生标准的窗口界面。然而这样的界面风格在 Dos 中实现并非一件简单的任务,我们必须清晰的规划出屏幕和窗口的规格以及和应用结合的接口。 2 、我们面临的应用程序不是简单的实现一个算法的程序,是一个针对学生成绩记录的多功能的小型系统,而且扩充的可能性非常大,需要我们按照自顶向下,逐步求精的设计思想先从功能上将系统划分为多个模块,再从模块细节来把握和分解系统,降低其复杂度直至可以编写程序。 3 、程序完成的是对学生成绩记录的多种独立的操作,需要进行功能规划。总体上划分为三个功能部分:( 1 )文件接口功能部分:完成学生成绩记录的文件读取和写入。( 2 )学生记录的操作功能:完成向记录集添加成绩记录、删除成绩记录、修改成绩记录等功能。( 3 )察看学生记录,完成学生成绩记录集的排序、搜索、列表等功能。 4 、界面组成设计分析:( 1 )整个屏幕用背景覆盖,称为桌面( 2 )屏幕最顶一行用于显示主菜单行。( 3 )最底一行用于显示提示行。( 4 )子菜单由菜单盒显示。( 5 )单一的输入,使用单行输入框。( 6 )提示信息使用信息提示框显示。( 7 )记录信息的输入使用录入框实现。 结构分析1 、功能模块的划分:划分的情况见下图 2 、软件运行模式:软件的运行采用菜单驱动,选取菜单项后,启动相关功能,进入每个功能后,都通过独立的窗口执行相应流程。功能执行退出后,由主菜单继续获得控制权。 3 、程序单元结构设计: 序号 单元名称 单元头文件 单元实现文件 单元说明 1 stmain stmain.h stmain.c 全局变量的定义和 main 主控函数,菜单及模块调度执行函数 2 student student.h student.c 学生成绩结构定义和记录基本运算函数 3 basefile basefile.h basefile.c 学生成绩结构的文件接口函数 4 basemenu basemenu.h basemenu.c 菜单的构造、控制基础功能函数 5 basewin basewin.h basewin.c 所有类型界面及其窗口绘制控制函数 6 menudo menudo.h menudo.c 对应菜单项直接驱动的功能模块函数 4 、各单元主要数据结构、全局变量与处理函数: (1)stmain 单元 名称 类型 原型 说明 studentcount 全局变量 int studentcount=0 ; 当前学生记录的个数 studentarr 全局变量 STUDENT studentarr200 ; 存储当前学生成绩记录的总缓冲区,实际记录的个数在变量 studentcount 中 winbuf 全局变量 char winbuf4096 ; 保存在桌面中的画面区域的缓冲区 menuareabuf 全局变量 char menuareabuf34096 ; 保存子菜单画面区域的缓冲区 menu 全局 MENUITEMNODE *menu ; 第一项菜单结构节点的变量 指针 pcurrent 全局变量 MENUITEMNODE *pcurrent ; 当前菜单结构节点的指针 selectedid 全局变量 int selectedid ; 当前菜单项选取后的返回 id initmenu 函数 int initmenu(void) ; 构造系统菜单结构的函数 dealselect 函数 int dealselect(void); 依据 selectedid,执行模块调度的函数 (2)student 单元名称 类型 原型 说明 STUDENT 学生成绩结构类型 typedef struct _student char stid20; char name20; float mathscore; float englishscore; float computerscore; float politicsscore; STUDENT ; 学生成绩的结构类型,是系统数据处理的基础 addstudent 函数 void addstudent( STUDENT *pliststudent , int stcount , STUDENT *pstudent ) ; 向 pliststudent 结构数组中添加一个学生记录pstudent,结构数组中有效记录个数通过 stcount传递 findstudent 函数 STUDENT *findstudent( STUDENT *pliststudent , int stcount , char *stid ) ; 在 pliststudent 结构数组中查找学号为 stid 的记录,结构数组有效记录个数通过 stcount 传递。返回查找的结果,成功返回找到记录的指针,失败返回NULL modifystudent 函数void modifystudent( STUDENT *pliststudent , int stcount , char *stid , STUDENT *newpstudent ) ; 将 pliststudent 结构数组中学号为 stid 的记录,替换为新记录 newpstudent 。 结构数组有效记录个数通过 stcount 传递。 deletestudent 函数 void deletestudent( 将 pliststudent 结构数组STUDENT *pliststudent , int stcount , char *stid ) ; 中学号为 stid 的记录删除掉。结构数组有效记录个数通过 stcount 传递。 (3)basefile 单元 名称 类型 原型 说明 readfiletobuf 函数 int readfiletobuf( char *readfilename ,STUDENT *pliststudent ,int *readcount) ; 从结构文件 readfilename中读取学生成绩结构到结构数组 pliststudent 中,读取的记录个数通过变量readcount 输出 writebuftofile 函数int writebuftofile( char *writefilename ,STUDENT *pliststudent ,int stcount) ; 将结构数组 pliststudent中的学生成绩记录写入结构文件 writefilename ,写入记录的个数在变量 stcount 中 (4) basemenu 单元 名称 类型 原型 说明 MENUITEMREC 菜单项结构类型 typedef struct menuitemrec int itemid; char itemtext20; int level; MENUITEMREC; itemid 菜单项标识号 itemtext 菜单项显示文本 level 菜单项级别 MENUITEMNODE PMENUITEMNODE 菜单项节点结构类型 菜单项节点结构指针类型 typedef struct menuitemnode MENUITEMREC item ; int x , y , w ; struct menuitemnode *pprev ; struct menuitemnode *pnext ; struct menuitemnode *pchild ; struct menuitemnode *pparent ; item 菜单项信息 x,y 菜单项屏幕位置 w 菜单项宽度 pprev 前项指针 pnext 后项指针 pchild 子菜首项指针 pparent 父级菜单项指针 MENUITEMNODE, *PMENUITEMNODE ; makemenuitem 函数 MENUITEMNODE *makemenuitem( int id , char *text , int level ); 构造菜单项记录并返回其指针 id:设置的菜单项标号 text:设置的菜单项文字 level:菜单项级别 addnext 函数 MENUITEMNODE *addnext( MENUITEMNODE *current , MENUITEMNODE *next ) ; 向当前菜单节点 current 中加入同级别相邻下一个节点 next addchild 函数 MENUITEMNODE *addchild( MENUITEMNODE *current , MENUITEMNODE *child ); 向当前菜单节点 current 中加入下一级第一节点 child initmenuposition 函数void initmenuposition( MENUITEMNODE *menu ) ; 初始化菜单中 menu 所有节点菜单项的屏幕位置和宽度 showmenu 函数 void showmenu( MENUITEMNODE *menuptr ) ; 显示主菜单条 menuptr 在屏幕顶行,并激活第一项菜单 menuselect 函数 int menuselect(void); 激活菜单控制,返回选择的菜单项的标识号 (5) basewin 单元 名称 类型 原型 说明 editbox 编辑框结构类型 typedef struct _EDITBOX char *label ; int x,y ; int labelwidth ; int editwidth ; editstyle edittype ; char *strptr ; float *floatptr ; 自定义控制编辑框输入文本,转换存到字符串或实数中的结构 label:显示的提示信息 x,y:编辑框的屏幕位置 labelwidth:提示显示的宽度 editwidth:编辑框的宽度 edittype:编辑目标的类editbox ; 型 strptr:编辑字符串存入的目标 floatptr:编辑实数存入的目标 pusharea 函数 void pusharea( int left , int top , int w , int h , char *buf ) ; 保存一个矩形屏幕区域到缓冲区 buf 中,保存区域的左上角为(left,top),宽高为w,h, poparea 函数 void poparea( int left , int top , int w , int h , char *buf ) ; 恢复保存的缓冲区 buf到一个矩形屏幕区域,恢复左上角为(left,top),宽高为 w,h drawdesktop 函数 void drawdesktop(void); 绘制桌面区域 msg 函数 int messagebox( char *msg ) ; 在屏幕中显示一个消息框 msg:要显示的消息字符串 inputbox 函数 int inputbox( char *lable , char *savestr ) ; 输入单行字符串的输入窗口 label:提示字符串 savestr:输入后保存的目标字符串 inputeditbox 函数 int inputeditbox( editbox *ebptr , int inputcount ) ; 用于在编辑窗口中控制多栏编辑输入 eb
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号