




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生成绩管理系统说明:该课程设计包含两个部分,一个为纯 dos 系统下的控制 台程序,用 C+ 编写;另一个为有界面的 MFC 项目。目录纯 dos 系统下的控制台程序1 、设计要求 32 、设计分析 33 、调试说明 44、源代码 85 、实验总结 21有界面的 MFC 项目1 、设计内容 222 、设计说明 223 、设计步骤 224 、运行演示 275 、实验总结 29纯 dos 系统下的控制台程序1、设计要求现有学生成绩信息,内容如下:姓名学号语文数学英语张明明01677882李成友02789188张辉灿03688256王露0456 4577陈东明05673847请用 C/C+ 编写一
2、系统,实现学生信息管理,软件的入口界面应包括如下几个方面:功能要求:( 1) 信息维护:要求:学生信息数据要以文件的形式保存, 能实现学生信息数据的维护。 此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息( 2) 信息查询:要求:查询时可实现按姓名查询、按学号查询( 3) 成绩统计:要求: A 输入任意的一个课程名(如数学)和一个分数段(如 60-70 ),统计出 在此分数段的学生情况(4) 排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并 显示排序结果(使用表格的形式显示排序后的输出结果) 其它要求:(1)只能使用C/C+语言,源程序要有适当的注释,使程序容易阅读(
3、2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档2、设计分析(1)需求分析:该程序要能实现对学生成绩信息的增加、 删除、修改,实现对学生按姓名查 询,按学号查询显示,对任意一个课程名和分数段的学生人数进行输出并统计人 数,最好还要根据用户的需求对学生成绩排序。(2)系统性能要求:a. 系统安全、可靠;b. 功能齐全;c. 操作方便、界面友好;d. 易于维护和扩充。(3)系统功能模块:学生成绩管理系统包括:增加、删除、修改、显示、信息查询、成绩统计、 排序几个部分构成。(4)模块框架图学生成绩管
4、理系统增加删除修改显示信息查询成绩统计排序3、调试说明运行程序后,现出来一个简洁的主界面若已若没有学生信息,显示“这是一个新系统,无学生信息,请先输入存在学生信息,显示“读取学生信息成功!一秒钟后,自动切入主菜单界面首先选择1,增加学生信息.1月 8 7 2 eeP- 7 6 8 明: 张S1绩绩绩 .1 名号吏诘 MH励U戒功!输A任意录入学生信息后选择4,显示学生信息请选嘩:4姓名宇号!张明明! 朗!李成友!02787B英语ES总分22257:张辉灿i 03455577178L52I陈东明!05选择2,删除学生信息,输入要删除的学生姓名,这里我输入的是王露,显示剩下几位同学的信息诸输入要B
5、M除的学生的姓名:王露 删除力対)!姓名学号/成抵厂籍总分;_阴明程:;李成友;:张辉灿*03I I *陈东明*050182672378472572K152选择3,修改学生信息,输入要修改的学生姓名,然后输入新的学生信息, 这里我修改的是张明明,显示修改后的学生信息。请选择:3 请输入夢脩改的学牛的姓名;张明明已找到该宁土,请输入新的信息8 ? 28 7 6 明 张01敲绩M :亦成成 名号学乂语 咗学惡语关修改成功!张明李成友张辉灿陈东明学号0103QS数学88918278英语S847i总分:I II1|i 227 i257 i152将张明明和王露的信息重新输入输入5,信息查询,出来选择界面
6、,“ 1、按学生姓名查找”、“2、按学生学号查找”,输入1,运行结果如下:请选择:姓名请选择t 1请输入要查找的学生的姓名李成友工学生咸集一一 数学 _学号李咸九i 02语文英语总分B8257输入2,运行结果如下:#w请选择:2姓名1.2.鑽蠶请输入萝查找的学生的学号;0C学号曲成誓英语总分152输入6,排序,显示选择界面,用户可根据需求选择科目和升降序,这里我是按语文成绩降序排序。eJ/Ti月 啧鬻序 冲看分Jr* 7 1 F 请选扌丰1州JT完妙!姓答学号I李咸声:I 0278eeI总分(IItIis?i:帐辉灿:03:82:EB:5&;2 MbI1tI(|I(J帐:朗明:01:78!G7
7、9B2:227! I _=_ I1 陈东明;0%;167I47:IK2 I王露 fMIJI45 ISfiI77输入7,成绩统计,用户自行输入要统计的科目和分数段进行统计。这里我统计的是英语成绩在60 90的学生。ft3、统计英话後舊緒艮拜員灯/科管iKbWiririiir,请选择:3谙输入分数段的起始分数知终1卜時扌眞60 9011.苣名!学号!嫦 !语文:-H英语!总分-II.111 _.李戒友!i1V:?1i怡8H1!2b?1 1I i张明明;= 01 $:78!67!821227I j11 王露104t1EG1771170英语成绩在砂T昭学生共有3人!4、源程序代码#in clude#i
8、n clude#i ncludevioma nip#i nclude#i ncludevWi ndows.h#in clude using n amespace std ;学生成绩#defi ne HEADER1 n#define HEADER2 | 姓名 | 学号 | 数学 | 语文 |英语 |总分 |n|nclass Student / 定义学生类 public:char name20 ;char id20 ;int math ;int chinese ;int english ;int sum ;Student *next ;void input() ;void ReadFile(ist
9、ream & in) ;void show() ; ;void Student:input()/ 输入学生信息函数coutntt 请输入: endlendl ;coutname ;coutid ;coutmath ;coutchinese ;coutenglish ;sum = math + chinese + english ;void Student:ReadFile(istream & in)/ 读取文件innameidmathchineseenglishsum ;void Student:show() / 输出学生信息cout |setw(8)name |setw(6)id|setw(
10、6)math |setw(6)chinesecoutnext != End ; p = p-next) if(!strcmp(p-next-name , name) return p ;return NULL ;Student *StudentMassage:FindId(char *id)Student *p ;for(p = Head ; p-next != End ; p = p-next) if(!strcmp(p-next-id , id)return p ;return NULL ;StudentMassage:StudentMassage() / 构造函数Head = new S
11、tudent ;Head-next = new Student ;End = Head-next ;in.open(sort.txt) ;if(!in)endl ;coutReadFile(in) ;if(End-name0=0)break ;End-next = new Student ;End = End-next ;in.close() ;coutntt 读取学生信息成功! next != End ; )temp = Head-next ;Head - next = Head -next-next ;delete temp ;delete Head , End ;/ 显示菜单void S
12、tudentMassage:ShowMenu()coutnntttt主菜单 endlendlendl ;couttt*endlendl ;2、删除学生信息couttt1 、 增 加 学 生 信 息endlendl ;couttt3、修改学生信息4、显示学生信息endlendl ;couttt5、信息查询6、排序e ndle ndl ;couttt7、成绩统计0、安全退出 endlendl ;couttt*endlendlendl ;couttt 请选择: ;void StudentMassage:Display() / 显示学生信息 Student *p ; coutendlHEADER1HE
13、ADER2next ; p != End ; p = p-next)p-show() ;coutinput() ;End-next = new Student ;End = End-next ;coutntt 添加成功! endl ; coutn 输入任意字符,继续 getch() ;/ 查找函数void StudentMassage:Find()char name20 , id20 ;int x ;Student *p = NULL ;coutntt*ncoutttt1、按学生姓名查找 endl ;coutttt2、按学生学号查找coutx ;switch(x)case 1:/ 按姓名查找c
14、outname ;if(p = FindItem(name)coutendlHEADER1HEADER2next-show() ;coutn 请输入任意字符,继续 ;getch() ;elsecouttt 没有找到该姓名的学生! endlendl ;cout 请输入任意字符,继续 ;getch() ; break ;case 2:/ 按学号查找coutid ;coutendlHEADER1HEADER2next-show() ;coutn 请输入任意字符,继续 ;getch() ;elsecoutntt 没有找到该学号的学生! endlendl ;cout 请输入任意字符,继续 ;getch(
15、) ; break ;void StudentMassage:ModifyItem() / 修改学生信息 char name20 ;Student *p = NULL ;coutname ;coutntt 已找到该学生,请输入新的信息! next-input() ;coutntt 修改成功! endl ;Display() ;elsecoutntt 没有找到! endl ;coutn 输入任意字符!继续 ;getch() ;void StudentMassage:RemoveItem() / 删除学生信息char name20 ;Student *p = NULL , *temp = NULL
16、 ;coutname ;temp = p-next ;p-next = p-next-next ;delete temp ;coutntt删除成功! endl ;Display() ;elsecouttt 没有找到! endl ;coutnext ; p != End ; p = p-next)n + ;return n ;int StudentMassage:Count() / 成绩统计Student *p ;int x , m , n ,count = 0 ;if(!Head)coutntt 没有资料可以统计! endl ;return 0 ;coutntt*n ;coutttt1、统计数
17、学成绩 endl ;coutttt2、统计语文成绩 endl ;coutttt3、统计英语成绩 ;coutntt*nendlcoutx ;switch(x)case 1 :coutm ;cinn ;for(p = Head ; p != End ; p = p-next)if(p-math =m & p-math = n)count + ;if(count = 1)coutendlHEADER1HEADER2show() ;的学生共有coutntt数 学 成 绩 在 m-ncount 人! nendl ;cout 输入任意字符,继续 ;getch() ; ; break ;case 2:cou
18、tm ;cinn ;for(p = Head ; p != End ; p = p-next)if(p-chinese =m & p-chinese = n)count + ;if(count = 1)coutendlHEADER1HEADER2show() ;的学生共有coutntt语 文 成 绩 在 m-ncount 人! nendl ;cout 输入任意字符,继续 ;getch() ; ; break ;case 3:coutm ;cinn ;for(p = Head ; p != End ; p = p-next)if(p-english =m & p-english = n)的学生共
19、有/ 交 p1,p2count + ;if(count = 1)coutendlHEADER1HEADER2show() ;coutntt英 语 成 绩 在 m-ncount 人! nendl ;coutname , p1-name) ;strcpy(temp-id , p1-id) ;temp-chinese = p1-chinese ; temp-english = p1-english ; temp-sum = p1-sum ; strcpy(p1-name , p2-name) ; strcpy(p1-id , p2-id) ; p1-math = p2-math ; p1-chine
20、se = p2-chinese ; p1-english = p2-english ; p1-sum = p2-sum ;strcpy(p2-name , temp-name) ; strcpy(p2-id , temp-id) ; p2-math = temp-math ; p2-chinese = temp-chinese ; p2-english = temp-english ; p2-sum = temp-sum ;void StudentMassage:Sort() / 排序 Student *p = NULL , *p1 = NULL , *k = NULL ; int n = S
21、tudentMassage:ListCount() , x , y ;if(n 2)择:cout 数据较少,无法排序! endl ;return ;coutntt*n ;coutttt1、按数学成绩排序 endl ;coutttt2、按语文成绩排序 endl ;coutttt3、按英语成绩排序 endl ;coutttt4、按总分排序 ;coutx ;switch(x)case 1:coutntt*n请选择:coutttt1、按降序排序 nttt2 、按升序排序couty ;if(y = 1)for(k = p-next ; k != End ; k = k-next) if(p-math m
22、ath)StudentMassage:Swap(p , k) ; coutntt 排序完成! next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-math k-math)StudentMassage:Swap(p , k) ; coutntt 排序完成! endl ;StudentMassage:Display() ;getch() ; ; break ;case 2:coutntt*n ;择:IIcoutttt1、按降序排序 nttt2 、按升序排序couty ;if(y = 1)for(p =
23、 Head-next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-chinese chinese)StudentMassage:Swap(p , k) ; coutntt 排序完成! next ; k != End ; k = k-next)if(p-chinese k-chinese)StudentMassage:Swap(p , k) ;coutntt 排序完成! endl ;StudentMassage:Display() ;getch() ;coutntt*n ;coutttt1、按降序排序
24、 nttt2、按升序排序 ;请选couty ;if(y = 1)if(p-english english)StudentMassage:Swap(p , k) ; coutntt 排序完成! next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-english k-english)StudentMassage:Swap(p , k) ; coutntt 排序完成! endl ; StudentMassage:Display() ;getch() ; ; break ;case 4:择:coutntt
25、*ncoutttt1、按降序排序 nttt2 、按升序排序couty ;if(y = 1)for(p = Head-next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-sum sum)StudentMassage:Swap(p , k) ; coutntt 排序完成! sum k-sum)StudentMassage:Swap(p , k) ;coutntt 排序完成! next;p!=End;p=p-next)outnametidtmathtchinesetenglishtsumn;out.cl
26、ose();void main()int x ;bool quit = false ;coutnnnnnnnn ;couttt*、endl ;couttt 欢迎使用学生成绩管理系统! endl ;couttt*x ;switch(x)case 0:quit = true ; break ;case 1:Grade.AddItem() ; break ;case 2:Grade.RemoveItem() ; break ;case 3:Grade.ModifyItem() ; break ;case 4:Grade.Display() ; break ;case 5:Grade.Find() ;
27、 break ;case 6:Grade.Sort() ; break ;case 7:Grade.Count() ; break ;5、实验总结通过编写这个纯 dos 系统下的控制台程序,加深了我对如何用 C+ 编写一 个简单的应用程序的理解。 首先要对程序的设计要求有一个比较明确的认识, 然 后系统分析与系统设计, 最后是代码设计与调试。 程序实现上, 设计了简单的菜 单界面,将各个功能集中出来按照程序编写原则,便于查询。有界面的 MFC 项目1、设计内容以学生成绩管理系统为例,通过对简单应用软件系统的设计,编制、调试, 实现简单的增加、 删除、排序等运算, 以学习应用 MFC 库类编写对
28、话框的原理, 加深对 C+ 类的学习及应用。2、设计说明(1) 包含的功能有:查看、增加、删除、排序、筛选等功能。(2) 通过 access 创建数据库并通过 OD 方式访问数据库。(3) 编辑界面上的不同按钮,创建消息映射,以完成相关的各种操作。3、设计步骤入相关内容,选择类型,完成后保存(2)添加ODBC数据源打开“ ODBC数据源管理器”添加Dnw dfl MrrDW CMT-S flquiwU5. tCTto Itt i de4kH|I I1.414詡冶 曲r.dbh|ii严 de-E胡 |1Driw de- M-cirai.-aH:I*.Jb |)nwvrE(i曲Mkwcil 削:曲
29、牛 T|血和 r.mbjDriw rjlfrfti il:.Li rnT-_ - Jv JLArW上 Ifflr继续d 09刁|iMI ilqr;Kf 4i_wP rk mq. Ijnr Ei孑生站论姬压卽 j Ar-ruBtfilnv-口41耳KD DbU-(Kl僵录皿心肚空为每个编辑框控件绑定数据源字段: 选定一个编辑框控件,右键I建立类向 导|成员变量标签|class name列表下选CmySet (数据库的结果集)。先将Member 中不好记的值通过“ Delete Variable ”删除,再“ Add Variables添加,改为自己好记的的名字Message MapsMember
30、 VanoblesEnjtct:半生成绩音理豊城AutarriatiDnAdivieX tventeClass name:3IV疔生成埶腎理系壕屜m九VT生虑缆皆理砂SeixppCvlumn Nartirs*TypeMcinbtfCMySnlClass IntoAdd Class. *Add Variable.Delete VariableH学英進A 1 ! t- t tlongmrrnaithCSUiiiglongmidInngmenglilshlongm.chincsclongmfitimUpdate ColumnsBiad All将编辑框(在CmyView 视图类中)与上述变量绑定:Ad
31、d VariableMFC Class/izrdMapi Member Viairiabllcb AulDiinaliuiiAtlivcX EventsClas IntoPrvjecl:莊比前皆理刁 I芳生成撅胃理系檢旳(.忆学生成蹴管現系统View(TPConltvl IDs:TypeMcmbtiGlace nmc:IDC8U1 ION SORTIDCDUnONT ADDIDCtDH 匸HIMtStlong-m_chinestIDCEDrT_fNGLI5lllongm_cngli!ihIDCEDII IDlong心jidIDCLDrT_MATI1kNiaIDCEDU NAMEString-r
32、n_nimeIDCEDrCSUMlangIDCSTATIC BlDC BUI fON DLLLlbIDC_BunON_nNDDescription:现在为功能键的实现进行操作增加新的对话框(窗体)及创建类成员在查询或过滤记录时,需要一个对话框,用于添加信息,增加对话框的方法:VC主菜单,“插入” I “资源” I “对话框(Dialog)类型” I放一个“分组框控件” I在分组框内按图设置编辑框和按钮:CDiqADDyXHI clasi niE-mbcrilj- AddNew();m_pSet-m_id=DlgAdd.md;m_pSet-m _n ame=DlgAdd.m _n ame;m_pSet-m_chinese=DlgAdd.m_chinese;m_pSet-m_math=DlgAdd.m_math;m_pSet-m_english=DlgAdd.m_english; m_pSet-m_sum=DlgAdd.m_sum;m_pSet-Update();/ 更新记录集m_p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 22283-2025长白猪种猪
- 2025年沈阳大车货运资格证考试题
- 2025年贵阳货运从业资格证考试模拟试题及答案大全解析
- 单位绿化树木修剪合同范本
- 上水泥合同范本
- 冷库设备租用合同范本
- 企业收款合同范本
- 协议客户合同范本
- 公路项目总承包合同范本
- 制作样册合同范例
- 2024年南京旅游职业学院高职单招语文历年参考题库含答案解析
- 《电商直播》 课件 项目一 走入电商直播
- 《中国宫腔镜诊断与手术临床实践指南(2023版)》解读课件
- 中药学电子版教材
- GB/T 9535-1998地面用晶体硅光伏组件设计鉴定和定型
- 杨氏太极拳37式拳谱
- 卧式设备安装
- 桥梁施工危险源辨识与防控措施
- CFG桩施工记录表范本
- 在生产过程中物料流转交接管理规定(清风出品)
- 第1章操作系统引论
评论
0/150
提交评论