1、C+课程设计报告学生成绩管理系统学生成绩管理系统说明:该课程设计包含两个部分,一个为纯dos系统下的控制台程序,用C+编写;另一个为有界面的MFC项目。纯dos系统下的控制台程序1、设计要求.32、设计分析.33、调试说明.44、源代码.85、实验总结.21有界面的MFC项目1、设计内容.222、设计说明.223、设计步骤.224、运行演示.275、实验总结.29纯dos系统下的控制台程序1、设计要求现有学生成绩信息,内容如下:姓名学号 语文数学 英语 张明明01 677882李成友02 789188张辉灿03 688256王露04 564577陈东明05 673847请用C/C+编写一系统,
2、实现学生信息管理,软件的入口界面应包括如下几个方面:功能要求:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60-70),统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)其它要求:(1) 只能使用C/C+语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能
3、采用图形菜单界面更好)(3) 学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档2、设计分析(1)需求分析:该程序要能实现对学生成绩信息的增加、删除、修改,实现对学生按姓名查询,按学号查询显示,对任意一个课程名和分数段的学生人数进行输出并统计人数,最好还要根据用户的需求对学生成绩排序。(2)系统性能要求:a.系统安全、可靠;b.功能齐全;c.操作方便、界面友好;d.易于维护和扩充。(3)系统功能模块:学生成绩管理系统包括:增加、删除、修改、显示、信息查询、成绩统计、排序几个部分构成。(4)模块框架图3、调试说明运行程序后,现出来一个简洁的主界面。若没有学
4、生信息,显示“这是一个新系统,无学生信息,请先输入。”若已存在学生信息,显示“读取学生信息成功!”一秒钟后,自动切入主菜单界面。首先选择1,增加学生信息。录入学生信息后选择4,显示学生信息。选择2,删除学生信息,输入要删除的学生姓名,这里我输入的是王露,显示剩下几位同学的信息。选择3,修改学生信息,输入要修改的学生姓名,然后输入新的学生信息,这里我修改的是张明明,显示修改后的学生信息。将张明明和王露的信息重新输入。输入5,信息查询,出来选择界面,“1、按学生姓名查找”、“2、按学生学号查找”,输入1,运行结果如下:输入2,运行结果如下:输入6,排序,显示选择界面,用户可根据需求选择科目和升降序
5、,这里我是按语文成绩降序排序。输入7,成绩统计,用户自行输入要统计的科目和分数段进行统计。这里我统计的是英语成绩在6090的学生。4、源程序代码#include#include#include#include#include#includeusing namespace std ;#define HEADER1 -学生成绩-n#define HEADER2 | 姓名 | 学号 | 数学 | 语文 | 英语 | 总分 |n#define HEADER3 |-|-|-|-|-|-|nclass Student . ; getch() ;void StudentMassage:AddItem() .
6、 ; getch() ;void StudentMassage:Find() . ; getch() ; else couttt没有找到该姓名的学生!endlendl ; cout请输入任意字符,继续. ; getch() ; break ; case 2: . ; getch() ; else coutntt没有找到该学号的学生!endlendl ; cout请输入任意字符,继续. ; getch() ; break ; void StudentMassage:ModifyItem() . ; getch() ; void StudentMassage:RemoveItem() . ; ge
7、tch() ; int StudentMassage:ListCount() . ; getch() ; ; break ; case 2: coutm ; cinn ; for(p = Head ; p != End ; p = p-next) if(p-chinese =m & p-chinese = n) count + ; if(count = 1) coutendlHEADER1HEADER2show() ; coutntt语文成绩在m-n的学生共有count人!nendl ; cout输入任意字符,继续. ; getch() ; ; break ; case 3: coutm ;
8、cinn ; for(p = Head ; p != End ; p = p-next) if(p-english =m & p-english = n) count + ; if(count = 1) coutendlHEADER1HEADER2show() ; coutntt英语成绩在m-n的学生共有count人!nendl ; coutname , p1-name) ; strcpy(temp-id , p1-id) ; temp-math = p1-math ; temp-chinese = p1-chinese ; temp-english = p1-english ; temp-s
9、um = p1-sum ; strcpy(p1-name , p2-name) ; strcpy(p1-id , p2-id) ; p1-math = p2-math ; p1-chinese = 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 = t
10、emp-sum ;void StudentMassage:Sort() /排序 Student *p = NULL , *p1 = NULL , *k = NULL ; int n = StudentMassage:ListCount() , x , y ; if(n 2) cout数据较少,无法排序!endl ; return ; coutntt*n ; coutttt 1、按数学成绩排序endl ; coutttt 2、按语文成绩排序endl ; coutttt 3、按英语成绩排序endl ; coutttt 4、按总分排序 ; coutx ; switch(x) case 1: cout
11、ntt*n ; coutttt 1、按降序排序nttt 2、按升序排序 ; couty ; if(y = 1) for(p = Head-next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-math math) 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:S
12、wap(p , k) ; coutntt排序完成!endl ; StudentMassage:Display() ; getch() ; ; break ; case 2: coutntt*n ; coutttt 1、按降序排序nttt 2、按升序排序 ; couty ; if(y = 1) for(p = 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 ;
13、p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-chinese k-chinese) StudentMassage:Swap(p , k) ; coutntt排序完成!endl ; StudentMassage:Display() ; getch() ; ; break ; case 3: coutntt*n ; coutttt 1、按降序排序nttt 2、按升序排序 ; couty ; if(y = 1) for(p = Head-next ; p != End ; p = p-next) for(k =
14、 p-next ; k != End ; k = k-next) 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
15、*n ; coutttt 1、按降序排序nttt 2、按升序排序 ; 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排序完成!next ; p != End ; p = p-next) for(k = p-next ; k != End ; k = k-next) if(p-sum k-sum) StudentMassage:Swap(p ,
16、 k) ; coutntt排序完成!next;p!=End;p=p-next) outnametidtmathtchinesetenglishtsumn; ();void main() int x ; bool quit = false ; coutnnnnnnnn ; couttt*endl ; couttt 欢迎使用学生成绩管理系统!endl ; couttt*x ; switch(x) case 0:quit = true ; break ; case 1:() ; break ; case 2:() ; break ; case 3:() ; break ; case 4:() ; b
17、reak ; case 5:() ; break ; case 6:() ; break ; case 7:() ; break ; 5、实验总结通过编写这个纯dos系统下的控制台程序,加深了我对如何用C+编写一个简单的应用程序的理解。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出来按照程序编写原则,便于查询。有界面的MFC项目1、设计内容以学生成绩管理系统为例,通过对简单应用软件系统的设计,编制、调试,实现简单的增加、删除、排序等运算,以学习应用MFC库类编写对话框的原理,加深对C+类的学习及应用。
18、2、设计说明(1)包含的功能有:查看、增加、删除、排序、筛选等功能。(2)通过access创建数据库并通过OD方式访问数据库。(3)编辑界面上的不同按钮,创建消息映射,以完成相关的各种操作。3、设计步骤(1)创建数据库:打开access,并创建一个新表“学生成绩管理表”,输入相关内容,选择类型,完成后保存。(2)添加ODBC数据源打开“ODBC数据源管理器” 添加继续(3)在MFC中创建相关按键并设置好属性及ID为每个编辑框控件绑定数据源字段:选定一个编辑框控件,右键|建立类向导|成员变量标签|classname列表下选CmySet(数据库的结果集)。先将Member中不好记的值通过“Dele
19、teVariable”删除,再“AddVairiables”添加,改为自己好记的的名字。将编辑框(在CmyView视图类中)与上述变量绑定:AddVariable现在为功能键的实现进行操作增加新的对话框(窗体)及创建类成员在查询或过滤记录时,需要一个对话框,用于添加信息,增加对话框的方法:VC主菜单,“插入”|“资源”|“对话框(Dialog)类型”|放一个“分组框控件”|在分组框内按图设置编辑框和按钮:建立类向导,分配好成员变量并绑定好为其中的“确定”按钮添加代码:void CDlgADD:OnOK() / TODO: Add extra validation here UpdateData(); if(m_id=0|m_name=|m_chinese=0|m_math=0|m_english=0|m_sum=0) MessageBox(请完整输入数据); return; CDialog:OnOK();同理,添加查询条件
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1