C++课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
报告-学生信息管理系统
北 华 航 天 工 业 学 院
《基于C++的面向对象程序设计实例》
课程设计报告
报告
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目: 学生信息管理系统
作者所在系部: 计算机科学与工程系
作者所在专业: 计算机科学与技术 作者所在班级:
作 者 姓 名 :
指导教师姓名:
完 成 时 间 : 2009年6月25日星期四
北华航天工业学院教务处制
摘 要
在当前的各个大学,中学,小学都需要拥有一套完善的,并且适合自身特点的学生信息管理系统,用它来管理学生信息。如1)添加学生信息。2)删除学生信息。3)修改学生信息。4)查询学生信息。5)显示学生信息。6)综合统计(各课程平均成绩和合格率)。7)总分排序。8)保存功能:将添加、删除、修改结果保存到文本文件中。9)退出系统。以实现对学生信息的统一管理。
本文利用Microsoft Visual C++6.0编写程序实现了用户对学生信息的管理操作。
该程序中定义了student类和brick类,在brick类中定义了创建函数,显示函数,查找函数,修改编辑函数,添加函数,删除函数,排序函数,平均分函数,求合格率函数。再用这些函数调用student类对象student s[100] 实现题中要求实现的功能。
本系统主要有 十个功能模块:,-录入学生信息 , 查询学生信息 , -修改学生的信息- ,增加学生的信息 -,删除学生的信息 ,-总分排序 -,浏览学生信息 ,-求各课程平均成绩 -,求合格率-,浏览关机后学生信已经过全面的系统测试,能够很好的运行,达到了预期的效果。
关键词:系统设计 数据库 信息 功能模块 -录入 查询 修改 增加 删除 总分排序 浏览 平均成绩 合格率 关机后
目 录
摘要 .................................................................................................................................. ?
第1章 绪 论 ................................................................................................................. 1
1.1 课题研究的目的 ................................................... 1
1.2 选题的目的及意义 ................................................. 5
1.3 课程设计环
境.....................................................
第2章 系统需求
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
.................................................................................................... 12
2(1 问题描述................................................
2(2 功能要求.................................................
2(3 问题的解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
...............................................
第3章 系统开发的技术背景 ........................................................................................... 17
3(1 数据设计.............................................
3(1(1 类设计。...............................................
3(1(2 类之间的关系...........................................
3(1(3 函数设计..............................................
3(2 结构设计...............................................
第4章 系统实现.......................................................
4(1 类实现............................................................
4(2 函数实现......................................................
4.3主函数实现......................................................
第5章 系统测试 ........................................................................................................... 25
5.1模块测试 ............................................................................................................ 25
5.2 课程设计过程中遇到的问题..............................
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
.................................................................................................................................. 37
致谢 .................................................................................................................................. 38
参考文献 ........................................................................................................................... 39
附录 .................................................................................................................................. 40
第二章 需求分析
第一章 绪论
第二章 需求分析 1(1 课程设计的目的
2(1 问题描述 1)要求学生能够熟练掌握C++语
言的基本知识和技能。
某校学生信息包括学号、姓名、性别、2)基本掌握面向对象程序设计的班级、三门课成绩和总成绩。设计一程序基本思路和方法。 实现对学生信息的管理, 3)能够利用所学的基本知识和技
2(2 功能要求 能,解决简单的面向对象程序设计问
题。 (1)本程序完成的功能主要有:
1)添加学生信息。
2)删除学生信息。
3)修改学生信息。
4)查询学生信息。 1(2 课程设计的背景和意义
5)显示学生信息。
6)综合统计(各课程平均成绩和合格
率)。 7)总分排序。
8)保存功能:将添加、删除、修改结
果保存到文本文件中。 1(2(1 课程设计的背景 9)退出系统。
(2)学生在完成本次课程设计的
基本要求后,从便于用户使用和功能完整
性的角度考虑进一步完善程序,请参照题当前的各个大学,中学,小学都需要
目1和2的要求。 拥有一套完善的,并且适合自身特点的学
生信息管理系统,用它来管理学生信息。
2. 技术层面的支持
1(2(2 课程设计的意义
实现对学生信息的统一管理。从而提
高管理人员的工作效率。
1(3 课程设计环境
Microsoft Visual C++6.0笔记本电脑(显示
器,鼠标等)
2(3 问题的解决方案 第三章 系统设计 根据系统功能要求,可以将问题解决
分为以下步骤: 3(1 数据设计
1)应用系统分析,建立该系统的
3(1(1 类设计。 功能模块框图以及界面的组织和设计;
Brick类 2)分析系统中的各个实体及它们
之间的关系;
Student类
3)根据问题描述,设计系统的类
层次; char name[5]; 姓名
4)完成类层次中各个类的描述; char sex; 性别
5)完成类中各个成员函数的定义; int schoolnumber; 学号
6)完成系统的应用模块; char grade[7]; 班级
7)功能调试; int math; 数学
int english; 英语 8)完成系统总结报告。
int c; c++
int ssum 总分
brick;static int n;统计文本中对象
个数
student s[100];存放输入的数据
student t;比较后交换s[i]与s[i+1]
的值
int sum();求和函数
void input()输入数据函数
void output()输出数据函数
brick(){}构造函数
void create();创建函数
void display();显示函数
void search();查找函数
void modify();修改编辑函数
void add();添加函数
void deleted();删除函数
void average();平均分函数 --------------\n";
cout<<"-------------7-浏览学生信息
---------\n"; void sort();排序函数
cout<<"-------------8-求各课程平均
成绩------\n"; void hegelv();求合格率函数 cout<<"-------------9-求合格率
-----------\n"; student s[100]; cout<<"------------t-退出\n"<<"请
选择:--------\n";
switch(choose) 3(1(2 类之间的关系
{
友元类
case'1':-1-录入学生信息 class student
case'2'-2-查询学生信息- friend class brick;//模块类中定义模块
case'3':-修改学生的信息- 函数
ase'4':-增加学生的信息 brick void create();
void display();
case'5':删除学生的信息-- void search();
void modify();
void add(); case'6':总分排序 void deleted();
void average(); case'7':-浏览学生信息- void sort();
void hegelv(); 通过student s[100];调case'8':求各课程平均成绩---- 用student 类中的数据成员char name[5];
char sex; case'9':求合格率 int schoolnumber;
char grade[7]; case's':-s-浏览关机后学生信息 int math; } int english;
int c; 接着 判断用户是否继续选择,若继续 int ssum ; 则从新获得用户输入,否则退出程序。 3(1(3 函数设计
//求和函数算法,直接在sum函数中主函数算法 使数学,英语,c++的分数相加 输入的字符存入choose变量中
在主函数中需要输出主菜单选择界
面,
cout<<"-------------s-浏览关机后学生
信息---\n";
cout<<"-------------1-录入学生信
息-----------\n";
cout<<"-------------2-查询学生信
息-----------\n";
cout<<"-------------3-修改学生的
信息----------\n";
cout<<"-------------4-增加学生的
信息--------\n";
cout<<"-------------5-删除学生的
信息---------\n";
cout<<"-------------6-总分排序
//平均分函数算法,打开学生信息管//创建函数算法,创建一个文本文件,理系统文本文件,从文件中通过循环读取并从键盘输入的数据 存放在文本文件中,数据 不传递参数
并将它们存放student s[100]中,定义
变量ch,输入ch,当输入m或M时,将 //显示函数算法,打开学生信息管理
数学成绩求和存入s1变量中,再输出s1系统文本文件,通过循环读取数据,并将除于记录数n的结果;当输入e或E时,数据一一输出到屏幕上,不传递参数 将英语成绩求和存入s2变量中,再输出
s2除于记录数n的结果;当输入c或C时,
将C++成绩求和存入s3变量中,再输出/修改编辑函数算法,打开学生信息管
s3除于记录数n的结果; 理系统文本文件,从文件中通过循环读取
数据 //求合格率函数算法,打开学生信息
管理系统文本文件,从文件中通过循环读
并将它们存放student s[100]中,对数取数据
据进行修改,最后再将数据存放到信息管并将它们存放student s[100]中,定义理系统文本文件中,修改过程是:输入需变量ch,输入ch,当输入m或M时,修改记录的学生号,通过循环查找到该记if(s[i].math>=60)count1变量自加1,再输
出count1除于记录数n的结果;当输入e录后,再输入
或E时,if(s[i].english>=60)count2变量自
加1,再输出count2除于记录数n的结果;新数据替代原有数据。 当输入c或C时,if(s[i].c>=60)count3变
量自加1,再输出count3除于记录数n的
//查找函数算法,打开学生信息管理结果;
系统文本文件,从文件中通过循环读取数
据
/排序函数算法,打开学生信息管理系并将它们存放student s[100]中,输入统文本文件,从文件中通过循环读取数据 需修改记录的学生号,通过循环查找到该
并将它们存放student s[100]中,记录后,并将数据一一输出到屏幕上,不if(s[i].sum>s[i+1].sum)使s[i]与s[i+1]互换,传递参数。 最后用循环将所有数据存入学生信息管理
系统文本文件中。
//添加函数算法,打开学生信息管理
系统文本文件,从文件中通过循环读取数
据 //删除函数算法,打开学生信息管理
系统文本文件,从文件中通过循环读取数并将它们存放到student s[100]中,输据
入新添加学生的学号和相应的信息,并将
并将它们存放student s[100]中,输入数据存放到student s[100]中,每输入一条新删除学生的学号和相应的信息,每删除数据,记录数n加1. 一条数据,记录数n减1.
3(2 结构设计
3(2(1 系统流程图
Student
Brick类
Input Sum Output
求求显创查修添删总显
合平示建找改加除分示
格均关函函函函函排函
率 分 机 数 数 数 数 数 序 数
HegAveLoo CreSeaMoAdd DelSort Dis
elv rage k ate rch dify eted play
3(2(2 界面设计
主菜单
合格率子菜单
第四章 系统实现
4(1 类实现class student
{public:
student(){}
int sum();
void input() 平均分子菜单
void deleted(); {cout<<"学号(不能重
复):";cin>>schoolnumber; void average();
void sort(); cout<<"姓名:";cin>>name;
void hegelv(); :";cin>>sex; cout<<"性别
private: cout<<"班级:";cin>>grade; static int n; cout<<"数学:";cin>>math; student s[100]; cout<<"英语:";cin>>english; student t};
4(2 函数实现 cout<<"c++:";cin>>c;
void input() }
void output() {cout<<"学号(不能重
复):";cin>>schoolnumber; {cout<
>name; >sex; }
friend class brick;//模块类中定义模块cout<<"班级:";cin>>grade; 函数
cout<<"数学:";cin>>math; private:
char name[5]; cout<<"英语:";cin>>english;
char sex; cout<<"c++:";cin>>c;
int schoolnumber; }
char grade[7];
void output() int math;
{cout<>num; cout<<"录入学生信息人数"<>m;
性别"<<'\t'<<"班级"<<'\t'<<"数学"<<'\t'<<"
英语"<<'\t'<<"c++"<<'\t'<<"总分"<>num;
english<<"\t"<>number;
} cout<<"姓名:";cin>>nam;
char c; cout<<"性别:";cin>>se;
do cout<<"班级:";cin>>gra;
{cout<<"学号,姓名,性别,班级,数学,英cout<<"数学:";cin>>m; 语,c++"<>e; cout<<"录入增加学生的信息"<>c; s[n].input();
s[n-1].schoolnumber=number; outfile<>c;
[i].c<<"\t"<>num;
if(!ifs)
for( i=0;is[i+1].sum())
case'E':
{
case'e':{for(int i=0;i>ch;
cin>>ch; switch(ch)
switch(ch) {
{case'M': case'M':
case'm':{for(int i=0;i=60)count1++;
case'C':
cout<<(float)count1/n;break; case'c':{for(int i=0;i=60)count3++;
cout<<(float)count3/n;break;
case'E':
}
case'e':{for(int i=0;i=60)count2++; }
cout<<(float)count2/n;break;
}
4(3 主函数实现int main()
{brick b;
cout<<"学生信息管理系统"<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<>choose;
switch(choose)
{
case'1':{b.create();break;}
case'2':{b.search();break;}
case'3':{b.modify();break;}
case'4':{b.add();break; }
case'5':{b.deleted();break;}
case'6':{b.sort();break;}
case'7':{b.display();break;}
case'8':{b.average();break; }
case'9':{b.hegelv();break;}
case's':{look("d:\\f1.txt");break;}
}
}while(choose!='t');
return 0;
}
第五章 系统测试
5(1模块测试
输入函数抓图
查询函数抓图
添加函
数抓
图
浏览函数抓图
总分排序函数抓图
平均分函数抓图
合格率函数抓图
平均分函数抓图
退出函数抓图
5(2 课程设计过程中遇到的问题
遇到的问题1:开始设计时main函数实现代码太长,不便于阅读程序
解决方法:再设计一个brick类,将其 定义成student类的友元类,在brick类中定义//创建函数void brick::create()/显示函数void brick::display()/修改编辑函数void brick::modify()//查找函数void brick::search()//添加函数void brick::add()//删除函数void brick::deleted()//求合格率函数void brick:: hegelv()//排序函数void brick::sort()//平均分函数void brick::average(),再用这些函数调用student类的对象student s[100]实现相应功能,
这样可以降低main函数的复杂度,增加程序的可读性。
:定义成student类的友元类后,不能使用命名空间 遇到的问题2
解决方法:将#include
#include
#include
using namespace std;改成
#include
#include
#include
遇到的问题3:类外调用数据成员不方便。
解决方法:在student类中定义成员函数int sum();
void input()void output()
遇到的问题4:输出结果不对齐。
解决方法:语句中加\t'如:cout<s[i+1].sum())
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
}
遇到的问题9:在average函数中定义float s=0;
s=s+s[i].math; s=s+s[i].english; S=s+s[i].c;三条语句出错
解决方法:float s1=0; float s2=0; float s3=0; s1=s1+s[i].math;
s2=s2+s[i].english; s3=s3+s[i].c;
遇到的问题10:不能退出系统。
解决方法:用 do
{
cin>>choose;
switch(choose)
{
...........
}
}while(choose!='t');
遇到的问题11:界面不友好。
解决方法:main函数改成int main()
{brick b;
cout<<"学生信息管理系统"<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<>choose;
switch(choose)
{
case'1':{b.create();break;}
case'2':{b.search();break;}
case'3':{b.modify();break;}
case'4':{b.add();break; }
case'5':{b.deleted();break;}
case'6':{b.sort();break;}
case'7':{b.display();break;}
case'8':{b.average();break; }
case'9':{b.hegelv();break;}
case's':{look("d:\\f1.txt");break;}
}
}while(choose!='t');
return 0;
}
总 结
该程序代码清晰,一目了然,程序中的变量见名知义,具有很好的可读性,该程序功
能齐全,严格按题目要求完成所规定的任务。程序中的求和函数,创建函数,显示函数,
修改编辑函数,查找函数,添加函数,删除函数,求合格率函数,排序函数,平均分函数,
实现功能都很强。
致 谢
经过了本次课程设计,使笔者能够熟练掌握C++语言的基本知识和技能。
能基本掌握面向对象程序设计的基本思路和方法。
能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 基本了解编写大程序的思想和方法。
参考文献
[1]谭浩强,C++面向对象程序设计,北京, 清华大学出版社,2006
[2]谭浩强,C程序设计,北京,清华大学出版社,2006
附 录
将源程序代码附到附录中。
#include char name[5]; #include char sex; #include int schoolnumber; class brick; char grade[7]; class student int math; {public: int english; student(){} int c;
int sum(); int ssum ; void input() };
{cout<<"学号(不能重class brick
复):";cin>>schoolnumber;
{public:brick(){} cout<<"姓名:";cin>>name;
void create(); cout<<"性别:";cin>>sex;
void display(); cout<<"班级:";cin>>grade;
void search(); cout<<"数学:";cin>>math;
void modify(); cout<<"英语:";cin>>english;
void add(); cout<<"c++:";cin>>c;
void deleted(); }
void average(); void output()
void sort(); {cout<>m;
void brick::search() //outfile<<"学号,姓名,性别,班级,
{ 数学,英语,c++,总分"<>num; return;
cout<<"学号"<<'\t'<<"姓名}
"<<'\t'<<"性别"<<'\t'<<"班级
for(i=0;i>number; {
cout<<"姓名:";cin>>nam;
int num,i,j;
cout<<"性别:";cin>>se;
char nam[5];
cout<<"班级:";cin>>gra;
char se;
cout<<"数学:";cin>>m;
int number;
cout<<"英语:";cin>>e;
char gra[7];
cout<<"c++:";cin>>c;
int m;
s[n-1].schoolnumber=number;
int e;
strcpy(s[n-1].name,nam);
int c;
s[n-1].sex=se; cout<<"\n请输入学号\n";
strcpy(s[n-1].grade,gra); cin>>num;
s[n-1].math=m; ofstream
s[n-1].english=e; outfile("d:\\f1.txt",ios::app);
s[n-1].c=c; if(!outfile)
{cout<<"open error!"<>c;
void brick::add() }while(n<100&&(c=='y'||c=='Y'));
{ outfile.close();
ofstream }
outfile("d:\\f1.txt",ios::app);
//删除函数
if(!outfile)
void brick::deleted()
{cout<<"open error!"<>num;
{cout<<"学号,姓名,性别,班级,数学,for( i=0;is[i+1].sum())
void look(char *filename) {
{ t=s[i];
s[i]=s[i+1]; ifstream ifs(filename,ios::in );
s[i+1]=t; }
} case'E':
}case'e':{for(int i=0;i>ch;
char ch; switch(ch)
cout<<"你要查的合格率课程{case'M':
(math-m,english-e,c)"<>ch;
s1=s1+s[i].math;
switch(ch)
cout<<"数学平均分
{ "<>>>>>>>>>>>>>>>>>>>>>>>>>>>>
if(s[i].math>=60)count1++; >>>"<=60)count2++; cout<<"-------------s-浏览关
机后学生信息---\n";
cout<<(float)count2/n;break; cout<<"-------------1-录入学
生信息-----------\n";
}
cout<<"-------------2-查询学
case'C': 生信息-----------\n";
case'c':{for(int i=0;i=60)count3++; cout<<"-------------4-增加学
生的信息--------\n";
cout<<(float)count3/n;break; cout<<"-------------5-删除学
生的信息---------\n"; }
cout<<"-------------6-总分排default:cout<<"非法选项"<>choose;
switch(choose)
{
case'1':{b.create();break;}
case'2':{b.search();break;}
case'3':{b.modify();break;}
case'4':{b.add();break; }
case'5':{b.deleted();break;}
case'6':{b.sort();break;}
case'7':{b.display();break;}
case'8':{b.average();break; }
case'9':{b.hegelv();break;}
case's':{look("d:\\f1.txt");break;}
}
}while(choose!='t');
return 0;
}
评 语
指
导
教
师
评
语
及
设
计
成
绩
课程设计成绩:
指导教师:
日期: 年 月 日