您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页C++学生信息管理系统课程设计报告

C++学生信息管理系统课程设计报告

来源:华佗小知识
一、课程设计目的

1.通过C++课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数和多态的概念。

2.用所学的C++语言知识及其编程方法,包括类和对象、继承与多态等面向对象的基本思想和方法以及文件流的基本操作等内容。通过布置具有一定难度的实际程序设计项目,要求学生完成所布置项目。在分析设计过程中,要求学生养成良好的编程习惯,学会分析解决简单的实际问题,学会C++编程环境(VC++)的实际调试技巧和方法,要求学生在教师的指导下逐步完成应用程序的分析与设计过程。

二、课程设计的内容

(一)、题目:学生信息管理系统 (二)、目的与要求 1。 目的:

(1)基本掌握面向对象程序设计的基本思路和方法; (2)达到熟练掌握C++语言的基本知识和技能;

(3)能够利用所学的基本知识和技能,解决简单的程序设计问题 2。 要求 基本要求:

(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次;

(3)在系统中至少要定义三个类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 创新要求:

在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 3。信息描述

学生信息:学号、姓名、系别、班级和所选科目及各科成绩等。 4。功能描述

(1) 使用继承的方法构造3个类(如人员类——-基类,普通学生类和管理员类—---派生类)使用相应的对象放置相应信息

(2) 编写同名的display()成员函数,用来输出相应的内容 (3) 录入学生信息并保存

(4) 按不同类别输出学生信息(如按性别、年龄等)

(5) 查询学生信息(以一种或多种方式,如按名字、学号等检索) (6) 修改学生信息并保存 (7) 删除学生信息 (8) 计算学生的平均成绩

三、设计说明

总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理.也可根据自己对题目的理解增加新的功能模块.

系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行。 首先,看题目要求,每一条记录包括一个学生姓名,班级、性别,院系和各科成绩。 同时,应具备以下功能:

(一)管理员登陆:允许管理员登陆并包含如下内容:

1、添加信息:可以完成对一个学生的信息记录的输入。 2、查看所有信息:将所有的学生信息显示出来。 3、删除信息:对指定姓名的学生的信息进行删除.

4、查询信息:以姓名方式,显示出和输入名字相符的学生信息。 5、对信息进行存盘:上述操作的结果存入文件中. 6、关闭程序:退出学生信息管理系统。 (二)学生登陆:允许学生登陆并包含如下内容: 1、查看所有信息:将所有的学生信息显示出来。

2、查询信息:以姓名方式,显示出和输入名字相符的学生信息. 3、

关闭程序:退出学生信息管理系统。

四、程序流程图

各功能模块的实现流程图: 1、添加信息 新增学生 信息 2 查看所有信息 导入学生信息 文件 data.txt

3、删除信息 输入要删除学 生的姓名 判断以前是否存储了学生信息 按提示输入学个的各种信息 退出该功能,返回主菜单,继续选择 显示学生的信息 退出该功能,返回主菜单,继续选择 删除该生的信息,显示删除成功 退出该功能,返回主菜单,继续选择

4、查询信息 输入要查询学 生的姓名 查询该生的信息,显示出内容 退出该功能,返回主菜单,继续选择 五、功能模块图

功能模块图 学生管理系统 1.输入学生的姓名、班级、性别、院系及各科成绩 2. 查看所有信息 3. 删除信息 2.显示文件保存的所有的学生信息 4. 查询信息 5. 对信息进行存盘 6. 关闭程序 5.保存学生信息 1. 添加信息 3.输入要删除的学生的姓名,删除该学生信息 4.输入要查询的学生的姓名,显示该学生的信息 6.退出系统

六、类设计

由于学生的姓名、班级、性别、院系及各科成绩是学生共有的,可以抽取出来形成一个类,这里定义为info类。因为在存储的时候,每个学生的信息都以一个节点的形式存储,所以我们再定义一个node类,这个类是info类的派生类。

info类 public: string NAME; string GRADE; string SEX; string YARD; string C; string ENGLISH; string MATH; Node类 public: node* left; node* right; node(); void add(node* n); node* del1(); void show(); 七、各功能模块效果图

添加信息

查看所有信息

删除信息

查询信息

八、程序代码

============================================================

test.h

============================================================ #include 〈string> using namespace std; class info { public:

string NAME;

string GRADE; string SEX; string YARD; string C;

string ENGLISH; string MATH; };

class node:virtual public info { public: node* left; node* right; node();

void add(node* n);

node* del1(); void show(); };

node* del1(node& head, string name);

void init(node &head,string name,string grade,string sex,string yard,string c,string english,string math); void del(node* n); void enter(node& head); void display(node& head);

void search(node& head, string name); void save(node &head); void menu1(node& head);

void menu2(node& head);

============================================================ test。cpp

============================================================ #include 〈iostream〉 #include #include using namespace std;

node::node() { left=0,right=0; }

void node::add(node* n) {

n—〉right=right; n->left=this;

if(right!=NULL)right-〉left=n; right=n; }

node* node::del1() {

if(left!=0)left->right=right; if(right!=0)right—〉left=left;

return 0; }

void node::show() { cout<<”============================\"〈〈endl; cout〈〈\"姓名:” <cout〈〈”C语言:\" 〈〈setw(8)<cout〈node* del1(node& head, string name) {

for(node*i=head。right; i!=0; i=i—>right) {

if(i-〉NAME==name)

return i; } }

return 0; }

void init(node &head,string name,string grade,string sex,string yard,string c,string english,string math) { node* n;

n=new node;

n—>NAME = name; n—>GRADE = grade; n-〉SEX = sex; n—>YARD = yard; n-〉C = c;

n—〉ENGLISH = english; n—>MATH = math; head.add(n); }

void del(node* n) { }

void enter(node& head) {

node* n; n=new node;

cout〈<”输入姓名、班级、性别、院系、成绩:\"〈〈endl; cout〈〈\"姓名: \"; cin〉〉n-〉NAME; cout〈<\"班级: ”; cin>>n—>GRADE; cout<<”性别: ”; cin〉〉n—〉SEX; cout<<\"院系: ”; cin〉>n—〉YARD; cout<〈”成绩:\"〈cout〈〈\"C语言: \"; cout〈〈\"英语: ”; cin>>n—>ENGLISH; cout〈<\"数学: ”; cin>〉n->MATH;

cout〈〈”====输入完成========”〈cin〉〉n—〉C;

if(n!=0)n-〉del1(); delete n;

head.add(n); }

void display(node& head)

for(node* i=head.right; i!=0; i=i—〉right) }

void search(node& head, string name) {

for(node*i=head.right; i!=0; i=i—>right)

{ { }

i-〉show();

if(i-〉NAME==name) { if(i!=0) } }

void save(node &head) {

ofstream file(\"data。txt\");

file〈<\"姓名”<<”\”〈<”班级\"<〈\"\\"〈〈”性别\"〈<”\”<〈”院系\"<〈\"\”<〈”for (node *i = head。right; i != 0; i = i—>right) { file〈

i->show(); }

C\"<<\"\\"〈<\"英语\"〈<”\\"<<”数学”〈〈”\\n\"〈〈endl;

〈i->C〈〈'\’〈〈i—>ENGLISH〈〈'\'〈〈i-〉MATH<<’\\n'; } }

void menu1(node& head) { bool b=false; string a; system(\"cls\");

cout〈〈”==========学生信息管理==========\"〈cout〈〈”=================================\"<〈endl; cout〈〈endl;

cout〈<\"请选择操作指令:”〈cin〉>a;

cout〈〈\"5.对信息进行存盘\"<if(a==”2”) {

cout<<\"数据如下:”〈〈endl;

display(head);

getch();

menu1(head); } else if(a==\"3\") {

cout<〈”请输入需要删除者的姓名:”;

cin〉>a; while(1) { }

if(del1(head,a) != 0) { } else break;

del(del1(head, a));

cout<<\"删除成功!\"〈〈endl; getch();

menu1(head); } else if(a==\"1”) {

enter(head);

getch();

menu1(head);

else if(a==”4”) {

cout〈<”输入名字:\"; cin>〉a;

search(head, a);

cout〈<\"=====查找成功=====”<save(head);

cout<<\"=====保存成功=====\"〈getch(); menu1(head);

} { } } }

else if (a == \"6”) else { }

cout〈〈\"无效指令,请重新输入:\";

break;

exit(1);

void menu2(node& head) { bool b=false; string a; cout<〈”==========学生信息管理==========\"〈〈endl<〈endl;

cout<〈”1.查看所有信息\"<〈endl; cout〈<”2。查询信息\"〈〈endl;

cout<〈”3.关闭程序”〈cout<<\"================================”<cout〈<\"请选择操作指令:\"〈cin〉>a; if(a==\"1”) {

cout<〈\"数据如下:”〈〈endl; display(head);

getch(); system(”cls\"); menu2(head);

} else if(a==”2”) {

cout〈<\"输入名字:”; cin〉〉a;

search(head, a);

cout〈〈”=====查找成功=====\"<} { } }

getch(); system(\"cls”);

menu2(head);

else if (a == \"3”) { }

break; else

cout〈<\"无效指令,请重新输入:”;

exit(1); }

============================================================ Main。cpp

============================================================ #include 〈iostream> #include using namespace std; int passwd=123;

int main() { system(\"cls”); node head; string name,grade,sex,yard;

string c,english,math; int flag; int password;

ifstream read (\"data。txt”);

if (read) { while (read>>name〉〉grade〉〉sex〉>yard〉>c〉>english>>math) { init(head,name,grade,sex,yard,c,english,math); }

cout〈<”请选择管理员登陆(1) 或者 学生登录(2):\"; cin〉〉flag; if(flag==1) {

cout<〈”请输入管理员密码:\"; cin>>password; if(password!=passwd) exit(0);

switch(flag) {

case 1:menu1(head);break; case 2:menu2(head);break; default:cout<〈\"输入错误\"<return 0;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务