您好,欢迎来到九壹网。
搜索
您的当前位置:首页C++ 课程设计报告 学生学籍管理系统 面向对象技术

C++ 课程设计报告 学生学籍管理系统 面向对象技术

来源:九壹网


学生学籍管理系统

课题名称 《C++设计报告》

目 录

第1章 概述............................................................................................................................ 4 第2章 系统分析 .................................................................................................................... 5 第3章 系统设计 .................................................................................................................... 6 3。1 系统功能设计 ............................................................................................................. 6 3.2 类设计 ........................................................................................................................... 6 3。3 输入输出设计 ............................................................................................................. 7 第4章 系统实现 .................................................................................................................... 9 结论.................................................................................................................................... 16 后记.................................................................................................................................... 17 参考文献 ............................................................................................................................ 17

 海南大学三亚学院,2008年

Page 2 of 17

课题名称 《C++设计报告》

【摘要】 学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修改,统计,保存,退出等功能,从而能够对信息进行处理。程序中运用了相关类的知识,同时定义了一定数量的数据及成员函数。程序使用了数组记录统计的相关数据,运用了指针实现相应功能函数的功能,运用了student ,school两个类实现面向对象的要求。程序的完成涉及到程序的分析,模块的分解,程序的控制,程序的调试. 【关键词】 学籍管理 vc++6。0 面向对象 程序控制 类

 海南大学三亚学院,2008年

Page 3 of 17

课题名称 《C++设计报告》

第1章 概述 1。1 系统实现的目标

课程设计的任务:

制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数。

基本功能:

学生基本信息(编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩)

成绩统计(各科总成绩,各科平均成绩,各科的及格率) 扩展功能:

学生数据的添加、修改、与删除 学生数据的读取与存储 系统特点:

系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找。

1.2 系统实现方案

第一步:分析题目,建立类并派生出它的子类,画出类图。 第二步:画出流程,根据流程图编写程序清单

第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法). 第五步:及时整理资料,撰写课程设计报告中有关这个题目的内容。

1。3 系统实现环境

硬件配置:586以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,

内存不小于MB,硬盘自由空间不少于200MB。推荐配置为内存128MB或256MB(或以上),硬盘自由空间500MB以上。

操作系统:Windows2000/NT/Xp、Visual C++集成开发环境。

 海南大学三亚学院,2008年

Page 4 of 17

课题名称 《C++设计报告》

第2章 系统分析

2。1 调查

程序对学生学籍的数据处理要求

① 能够输入并浏览学生的基本信息; ② 能够实现对学生信息的查询和修改; ③ 能够对成绩进行统计;

④ 能够对学生的信息进行保存; 现行的系统功能:

资料维护:系统维护包括对各学生信息和成绩的录入操作. 资料维护:对数据表中的信息进行浏览。

系统查询:可以对不同科目的总成绩、不及率、各科平均成绩相关信息。

2.2现行系统分析

现行系统组织结构图:

姓名查找 按要求逐步输入学生信息 选择修改方式 开始 选择菜单序号 1 录入信息 2 显示信息 3查找信息 4 删除信息 5 修改信息 6 统计成绩 7 保存信息 0 退出 1?2? 编号查询 输入学生信息 保存? 保存 退出  海南大学三亚学院,2008年

Page 5 of 17

课题名称 《C++设计报告》

第3章 系统设计 3.1 系统功能设计

系统功能结构图:

输入 显示 查找 删除 修改 统计 退出 初始化程序 采单程序 主程序 3.2 类设计

类:student

数据成员

编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩 类:school

成员函数

录入函数Input():输入编号到计算机的成绩;

统计函数count():统计各科的总成绩,计算平均成绩,统计各科的及格率; 查询函数found():按学号或姓名查找学生的记录; 修改函数mend():修改指定学号学生成绩记录; 删除函数del():删除指定学号学生记录; 输出函数show():输出班级所有学生成绩记录; UML图:

 海南大学三亚学院,2008年

Page 6 of 17

课题名称 《C++设计报告》

school +school() +~school() + input():void + mend():void + del():void + find:int +found():void + show():void + count():void + save():void + begin():void + clear():void +mainmenu():char +getkey():int +setkey(intk):void - *head: student - key:int Student #number:int #name[20]:char #sex[6]:char #place[20]:char #nation[6]:char #birth[20]:char #party[10]: char #id[20]:char #score[3]:float +student*next; +student(){ } +~student(){ } + * getname():char +getnumber():int +getscore(inti)double + getg():float + input():void +input(ifstream & is): void +output():void +output(ofstream&os):void

3.3 输入输出的设计

1.界面的设计 ①、界面设计

程序运行后会出现一个简捷的窗口,便于用户查询数据。 ②、功能设计

通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容.应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入.记录查询功能可以对数据各分类的记录进行查询。 2.数据输出设计 系统主界面:

 海南大学三亚学院,2008年

Page 7 of 17

课题名称 《C++设计报告》

统计界面:

查找界面:

显示界面:

 海南大学三亚学院,2008年

Page 8 of 17

课题名称 《C++设计报告》

录入界面:

修改界面:

第4章 系统实现

1。代码

#include〈iostream。h〉 #include

#include〈iomanip。h〉 class student {

protected: int number; char name[20]; char sex[6]; char place[20]; char nation[6]; char birth[20]; char party[10]; char id[20]; float score[3];

public:

 海南大学三亚学院,2008年

Page 9 of 17

课题名称 《C++设计报告》

student *next; student(){ } ~student(){ } char* getname(){ return name; } int getnumber(){ return number;} double getscore(int i) { return score[i];}

float getg(){ return (score[0]+score[1]+score[2]); } void input() { int e=1;

cout〈〈\"\\\按提示输入:”〈〈endl;

cout<〈”\\输入编号: ”; cin〉>number; cout<<\"\\输入姓名: ”; cin>〉name; do

{cout〈〈”\\输入性别: \"; cin〉〉sex;

if(strcmp(sex,\"男\")==0 || strcmp(sex,”女”)==0)

{ cout〈〈”\\输入籍贯: ”;cin〉〉place; cout〈<”\\输入民族: \";cin〉>nation;

cout<〈”\\输入生日: ”;cin〉>birth; cout〈<\"\\输入政治面貌: ”;cin>〉party; cout〈〈”\\输入身份证号: ”;cin〉>id; cout<<”\\输入数学分数: \";cin〉>score[0];

cout〈〈\"\\输入英语分数: \";cin>〉score[1]; cout<<”\\输入计算机分数: ”;cin〉〉score[2]; e=0;} else

{cout〈<”\\\无此类型性别!重新输入!\"〈void input(ifstream & is)

{is>〉number>>name〉>sex〉〉place>〉nation〉>birth〉>party>〉id >〉score[0]>>score[1]〉>score[2]; is.get(); } void output()

{cout<〈\"学生基本信息如下:\"<〈endl;

cout〈〈”编号:”<〈number<<\" 姓名:”〈〈name<〈” 性别:”<〈sex 〈〈” 籍贯:\"〈〈place

〈〈\" 民族:\"〈 海南大学三亚学院,2008年

Page 10 of 17

课题名称 《C++设计报告》

}

void output(ofstream & os)

{ os<〈setw(6)〈〈number <class school {public:

school(){ head=new student; head—〉next=NULL; key=0; } ~school(){ delete head; } void input(); void mend(); void del(); int find(student **p,int num,char *pn=”^”); void found(); void show(); void count(); void save(); void begin(); void clear(); char mainmenu(); int getkey(){ return key;} void setkey(int k){ key=k; }

private: student *head; int key; };

//录入函数

void school::input() {student *p,*p2=NULL; p=head; int n; while(p->next) p=p—>next; while(n)

{ p2=new student; p2—>input();

p->next=p2; p2—>next=NULL; p=p—>next; school::setkey(1);

cout〈〈”\\\按1继续,按0返回 : \"; cin〉〉n; } } //子查找函数

int school::find(student **p1,int num,char *pn) { student *p; p=head; while(p->next) { (*p1)=p;

if( (p—〉next)->getnumber()==num||!strcmp( (p-〉next)—>getname(),

 海南大学三亚学院,2008年

Page 11 of 17

课题名称 《C++设计报告》

pn ) )

return 1; p=p—〉next; }

return 0; } //查找函数

void school::found() { student *p;

int num=-1,n=9; char name[20]=\"^”; do

{ cout<〈”\\1:按编号查找,2:按姓名查找: ”; cin〉〉n;

}while(n<1||n>2); if(n==1)

{ cout<〈\"\\\输入编号: ”; cin〉>num;} if(n==2)

{ cout〈〈”\\\输入姓名: \"; cin>〉name; }

if(!find(&p,num,name) )

{ cout<<\"\\找不到你要查找的内容!”〈(p—>next)-〉output(); }

//删除函数 void school::del()

{ student *p,*p2; int num;

cout<<”\\\输入编号: ”; cin〉>num; if( !find(&p,num,”^”) )

{ cout〈〈\"\\找不到你要删除的内容!”〈(p-〉next)—〉output();

p2=p—〉next; p->next=p2—〉next; delete p2;

school::setkey(1); }

void school::show() //显示函数 { student *p; p=head; while(p—〉next)

{ (p—〉next)-〉output();

p=p—〉next;

 海南大学三亚学院,2008年

Page 12 of 17

课题名称 《C++设计报告》

}} //修改函数

void school::mend()

{ student *p; int num=—1,n; char name[20]=\"^”; do

{ cout<〈\"\\1:按编号修改,2:按姓名修改: ”; cin>>n;

}while(n<1||n>2); if(n==1)

{ cout<〈\"\\\输入编号: \"; cin〉>num; } if(n==2)

{cout〈<\"\\\输入姓名: ”; cin〉>name; }

if( !find(&p,num,name) )

{ cout〈〈”\\找不到你要修改的内容!”<〈endl; return; }

(p->next)-〉output(); (p->next)—>input(); school::setkey(1); }

void school::save() //保存函数 { student *p; p=head;

ofstream os(”student.txt”,ios::out); if (school::getkey()==1) {

while(p—〉next)

{ (p-〉next)—>output(os); p=p—>next; } }

cout〈〈\"\\\文件已保存! ”〈〈endl; school::setkey(0); }

void school::begin()//初始化函数 { student *p,*p2; p=head; clear(); long t;

 海南大学三亚学院,2008年

Page 13 of 17

课题名称 《C++设计报告》

ifstream is(\"student。txt\",ios::in); if(!is)

{ ofstream os(”student.txt\",ios::out); os.close(); return ; }

int num=-1; while(1)

{ num=—1; t=is。tellg(); is〉〉num; is。seekg(t); if(num〈0) { is。close(); return; }

p2=new student; p2->input(is);

p->next=p2; p2-〉next=NULL; p=p-〉next; }}

void school::clear()//清空函数 {student *p,*p2; p=head—〉next; while( p )

{p2=p; p=p—〉next; delete p2; }}

void school::count()//统计函数 {student *p; p=head; int n=0;

double g[3]={0,0,0}; float j[3]={0,0,0}; while(p-〉next) { p=p-〉next; n++;

for(int i=0;i<3;i++)

{ g[i]=g[i]+( p—〉getscore(i) ); (p—>getscore(i) )>=60。0? j[i]++ : 0 ; } }

cout〈〈”\\\\b\\b\\b\\b数学总分:”< 海南大学三亚学院,2008年

Page 14 of 17

课题名称 《C++设计报告》

<〈\"\\\\b\\b\\b\\b计算机总分: ”<//主选菜单函数

char school::mainmenu() {

char n[6];

cout<〈\"\\n\\n ☆☆☆☆欢迎进入学籍管理系统☆☆☆☆”〈〈endl<<〈\" * * * * * * * * * * * * * * * * * * * * * * * * * * * *”〈〈endl

<〈\" * * * * * * * * * * * * * * * * * * * * * * * * * * * *\"〈〈endl

<〈” * * 1: 录入学生信息 * *”〈<〈” * * * * * * * * * * * * * * * * * * * * * * * * * * * *\"<〈endl

<〈” * * * * * * * * * * * * * * * * * * * * * * * * * * * *\"〈〈endl

〈<” 请选择:\"; cin>〉n; return n[0]; } //主函数 void main() {school pp;

int k=1; char n; pp.begin(); while(k==1)

{ n=pp。mainmenu(); switch(n)

{ case ’1’:pp.input(); break; case '2’:pp。show(); break; case ’3':pp。found(); break; case '4':pp.del(); break; case '5':pp.mend(); break;

 海南大学三亚学院,2008年

Page 15 of 17

课题名称 《C++设计报告》

case '6’:pp。count(); break; case ’7':pp。save(); break; case '0':

if(pp。getkey()==1)

{ cout〈<\"\\\是否保存? 1 : 保存 0:不保存 : \"; cin〉〉k; if(k==1) pp.save(); }

pp。clear(); k=0; break; }}} 2.系统运行的结果

结论

本程序基本完成了题目要求的功能。但是由于显示的,所罗列的学生成绩只给出了数学,英语,计算机的成绩.程序可通过改进,增加科目数。

程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了.解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。

 海南大学三亚学院,2008年

Page 16 of 17

课题名称 《C++设计报告》

后记

此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试.程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。

根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力.我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。

参考文献

[1]陈雪飞《C++实例入门》,中国青年出版社,2004年5月出版 [2]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版

[3]李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版 [4]韩滨 魏海萍,《C++类库使用手册》,电子工业出版社,2007年7月出版

[5]陈灿煌,《C++彻底研究》 中国青年出版社,2005年9月出版。

 海南大学三亚学院,2008年

Page 17 of 17

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

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

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

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