ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:110.78KB ,
资源ID:26621661      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26621661.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(南邮级软件设计资料分数统计想拿优秀的看过来.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

南邮级软件设计资料分数统计想拿优秀的看过来.docx

1、南邮级软件设计资料分数统计想拿优秀的看过来可以通过方向键和Enter键选择菜单注释和命名都很明白已测试基本没有什么Bug我还封装了一个可以用方向键选择的菜单的类,可以很方便的使用相应的代码和文件名列在下面,用visual c+添加到工程里即可运行有什么问题请私信一、 ChoiceMenu.h#ifndef CHOICEMENU#define CHOICEMENU#include #include #include #include ConsoleTools.husing namespace std;#define DEFAULT_MENUITEM_WIDTH 40struct ChoiceMe

2、nuStruct;typedef struct ChoiceMenuStruct ChoiceMenuStruct;typedef void (*PMenuHandleFunction)(const ChoiceMenuStruct* mainmenu);/菜单项结构typedef struct ChoiceMenuItemInfo string content; /选择菜单后发生的动作 PMenuHandleFunction func; /这项由程序处理,不需要填写 string _menuitems_content_for_show; ChoiceMenuItemInfo;/菜单的结构及类

3、型struct ChoiceMenuStruct vector menuitems; ChoiceMenuItemInfo title; unsigned int MenuItemWidth=DEFAULT_MENUITEM_WIDTH; /菜单项宽度(英文字符个数) /标题风格 WORD TitleTextColor= FOREGROUND_RED; WORD ItemTextColorDefault; WORD ItemTextColorSelected; /以下不需要填写 /表格间的分割线 string _MidSeperateLine; string _TopSeperateLine;

4、 string _BotSeperateLine; string _BlankLine; string _BlankLineWithSep; ;void ShowChoiceMenu(ChoiceMenuStruct& mainmenu);void SelectPos(ChoiceMenuStruct& mainmenu, signed int index, signed int lastindex);#endif二、 ConsoleTools.h#include /字符缓冲区的默认大小#define BUFFERSIZE_SMALL 10#define BUFFERSIZE_MID 40#d

5、efine BUFFERSIZE_BIG 100/控制台背景#define BLACK 0#define BLUE 1#define GREEN 2#define LAKEBLUE 3#define RED 4#define PURPLE 5#define YELLO 6#define WHITE 7#define GRAY 8#define LIGHTBLUE 9#define LIGHTGREEN A#define LIGHTLIGHTGREEN B#define LIGHTRED C#define LIGHTPURPLE D#define LIGHTYELLOW E#define LIG

6、HTWHITE Ftypedef char COLORTYPE;void setConsoleBackground(COLORTYPE color);/控制台字体格式#define FOREGROUND_BLUE 0x0001#define FOREGROUND_GREEN 0x0002#define FOREGROUND_RED 0x0004#define FOREGROUND_INTENSITY 0x0008#define BACKGROUND_BLUE 0x0010 #define BACKGROUND_GREEN 0x0020 #define BACKGROUND_RED 0x0040

7、#define BACKGROUND_INTENSITY 0x0080#define DEFAULT_BACK_FOR_GROUND 0x0007BOOL SetConsoleColor(WORD wAttributes);BOOL SetCurPos(COORD pos);/控制台大小信息#define CONSOLE_ROW_COUNT 25#define CONSOLE_CLUM_COUNT 80三、menu.h#include ChoiceMenu.h#include StudentGradeInformation.hextern ChoiceMenuStruct cms;extern

8、 int nowselect;extern StudentGradeInformation infStu;void menu_main();四、StudentGradeInformation.h#ifndef STUDENTGRADEINFORMATION#define STUDENTGRADEINFORMATION#include #include using namespace std;#define DEFAULT_DATA_FILENAME default.dattypedef struct StudentInfo string name; int score; StudentInfo

9、;enum ReadOperationType OVERRIDE, /覆盖 APPEND_OVERRIDE, /添加,重复项覆盖 APPEND_PRESERVE /添加,重复项保留;enum ReadError NONE, OPENFILEERROR, BADDATA;#define MAX_SCORE 100#define MIN_SCORE 0#define BAD_SCORE -1class StudentGradeInformationpublic: StudentGradeInformation(); ReadError readfromfile(string path = DEFA

10、ULT_DATA_FILENAME, ReadOperationType type = OVERRIDE); void sort(); void clear(); bool save(); void add(StudentInfo data); /调用之前需要排序 void setSortType(bool isReverse); /逆序排列 vector:iterator find(string name); bool remove(string name); vector:iterator end(); vector datas;private: bool reverse;#endif五、

11、ChoiceMenu.cpp#include ChoiceMenu.h#include ConsoleTools.h#include #include #include string ExpandMenuItemContent(string menuitem,unsigned int width,bool withvsep=true) int n = menuitem.size(); int r = (width - n-4) / 2; int l = width-r-n-4; if (withvsep) return string() + string(r, ) + menuitem + s

12、tring(l, ) + string(); else return string(r+2, ) + menuitem + string(l+2, ); string RepeatUnicondeChar(string stritem,unsigned int n) string result; for (unsigned int i = 0; i n; i+) result += stritem; return result;/水平居中void ShowInHCenter(string str,WORD textColor=DEFAULT_BACK_FOR_GROUND) size_t n

13、= str.size(); cout string(CONSOLE_CLUM_COUNT - n) / 2, ); SetConsoleColor(textColor); coutstr endl; SetConsoleColor(DEFAULT_BACK_FOR_GROUND);void ShowChoiceMenu(ChoiceMenuStruct& mainmenu) system(cls); if (mainmenu._BotSeperateLine.empty() mainmenu.title._menuitems_content_for_show = ExpandMenuItemC

14、ontent(mainmenu.title.content, mainmenu.MenuItemWidth,false); for (size_t i = 0; i mainmenu.menuitems.size(); i+) mainmenu.menuitemsi._menuitems_content_for_show = ExpandMenuItemContent(mainmenu.menuitemsi.content, mainmenu.MenuItemWidth,false); mainmenu._TopSeperateLine = string() + RepeatUnicondeC

15、har(string(), mainmenu.MenuItemWidth / 2 - 2)+string(); mainmenu._MidSeperateLine = string() + RepeatUnicondeChar(string(), mainmenu.MenuItemWidth / 2 - 2) + string(); mainmenu._BotSeperateLine = string() + RepeatUnicondeChar(string(), mainmenu.MenuItemWidth / 2 - 2) + string(); mainmenu._BlankLine

16、= ExpandMenuItemContent(string(), mainmenu.MenuItemWidth,false); mainmenu._BlankLineWithSep = ExpandMenuItemContent(string(), mainmenu.MenuItemWidth); /显示在窗口正中央 cout string(CONSOLE_ROW_COUNT - (mainmenu.menuitems.size() * 2 + 4) / 2, n); /ShowInHCenter(mainmenu._TopSeperateLine); ShowInHCenter(mainm

17、enu._BlankLine,mainmenu.TitleTextColor); ShowInHCenter(mainmenu.title._menuitems_content_for_show, mainmenu.TitleTextColor); ShowInHCenter(mainmenu._BlankLine, mainmenu.TitleTextColor); for (size_t i = 0; i mainmenu.menuitems.size(); i+) ShowInHCenter(mainmenu._BlankLine, mainmenu.ItemTextColorDefau

18、lt); ShowInHCenter(mainmenu.menuitemsi._menuitems_content_for_show,mainmenu.ItemTextColorDefault); ShowInHCenter(mainmenu._BlankLine, mainmenu.ItemTextColorDefault);void SelectPos(ChoiceMenuStruct& mainmenu, signed int index,signed int lastindex) int pos = (CONSOLE_ROW_COUNT - (mainmenu.menuitems.si

19、ze() * 2 + 4) / 2+2 + index * 2; int lastpos = (CONSOLE_ROW_COUNT - (mainmenu.menuitems.size() * 2 + 4) / 2 + 2 + lastindex * 2; SetCurPos(COORD 0, lastpos ); /ShowInHCenter(mainmenu._BlankLine, mainmenu.ItemTextColorSelected); ShowInHCenter(mainmenu.menuitemslastindex - 1._menuitems_content_for_sho

20、w, mainmenu.ItemTextColorDefault); /ShowInHCenter(mainmenu._BlankLine, mainmenu.ItemTextColorSelected); SetCurPos(COORD 0, pos ); /ShowInHCenter(mainmenu._BlankLine, mainmenu.ItemTextColorSelected); ShowInHCenter(mainmenu.menuitemsindex - 1._menuitems_content_for_show, mainmenu.ItemTextColorSelected

21、); /ShowInHCenter(mainmenu._BlankLine, mainmenu.ItemTextColorSelected); SetCurPos(COORD 0,CONSOLE_ROW_COUNT );六、ConsoleTools.cpp#include ConsoleTools.h#include #include /设置控制台背景void setConsoleBackground(COLORTYPE color) char bufferBUFFERSIZE_SMALL; sprintf(buffer, color %c0, color); system(buffer);/

22、设置颜色BOOL SetConsoleColor(WORD wAttributes) HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); if (hConsole = INVALID_HANDLE_VALUE) return false; return SetConsoleTextAttribute(hConsole,wAttributes);/设置光标位置BOOL SetCurPos(COORD pos) HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPo

23、sition(hConsole, pos); return true;七、main.cpp#include #include ChoiceMenu.h#include menus.hint main() menu_main(); return 0;八、menus.cpp#include menus.h#include #include #include StudentGradeInformation.h#include #include ChoiceMenuStruct cms;int nowselect;StudentGradeInformation infStu;void Event_qu

24、it(const ChoiceMenuStruct* mainmenu);void Event_add(const ChoiceMenuStruct* mainmenu);void Event_view(const ChoiceMenuStruct* mainmenu);void Event_remove(const ChoiceMenuStruct* mainmenu);void Event_save(const ChoiceMenuStruct* mainmenu);void Event_import(const ChoiceMenuStruct* mainmenu);void menu_

25、main() nowselect=1; cms.TitleTextColor = BACKGROUND_BLUE | BACKGROUND_GREEN; cms.ItemTextColorDefault = BACKGROUND_INTENSITY; cms.ItemTextColorSelected = BACKGROUND_BLUE | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED; cms.title.content = 欢迎使用学生成绩管理系统; cms.menuitems.push_back(ChoiceMenuItemInf

26、o 1.添加纪录, Event_add ); cms.menuitems.push_back(ChoiceMenuItemInfo 2.查看排名, Event_view ); cms.menuitems.push_back(ChoiceMenuItemInfo 3.删除记录, Event_remove ); /cms.menuitems.push_back(ChoiceMenuItemInfo 4.导入记录, NULL ); cms.menuitems.push_back(ChoiceMenuItemInfo 4.保存记录, Event_save ); cms.menuitems.push_b

27、ack(ChoiceMenuItemInfo 5.退出程序, Event_quit ); ShowChoiceMenu(cms); SelectPos(cms, 1, 1); int lastselect = nowselect; /处理键盘 while (true) char a = _getch(); /数字键 if (a0 & a= 1 & (size_t)(a - 0) 1) nowselect-; else nowselect = (int)cms.menuitems.size(); SelectPos(cms, nowselect, lastselect); break; case 80: lastselect = nowselect; if (lastselect (int)cms.menuitems.size() nowselect+; else nowselect = 1; SelectPos(cms, nowselect, lastselect); break; continue; /回车键 if (a = 13) cms.menuitemsnowselect-1.fun

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1