学生管理系统课程设计.doc_第1页
学生管理系统课程设计.doc_第2页
学生管理系统课程设计.doc_第3页
学生管理系统课程设计.doc_第4页
学生管理系统课程设计.doc_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c+课程设计-学生管理系统C+课程设计(论文)任务书 软件 学院 专业 班 一、课程设计(论文)题目学生管理系统 二、课程设计(论文)工作自 2014 年 6 月16日起至 2014 年 6 月 22 日止 三、课程设计(论文) 地点: 创新大楼 四、课程设计(论文)内容要求:1本课程设计的目的(1)熟练掌握C+语言的基本知识和技能; (2)掌握面向对象程序设计的基本思路和方法;(3)了解指针、类的继承、文件的打开和保存、链表应用(4)利用所学的基本知识和技能,解决面向对象程序设计问题(5)培养分析、解决问题的能力;提高学生的科技论文写作能力。 2课程设计的任务及要求1)基本要求:(1)设计一个的菜单将在实现的功能显示出来,并有选择提示(2)能够查询全部成员清单;(3)能够按号码或姓名查询某一个成员的信息(4)能够增加、删除、修改某一个成员的信息(5)要求有错误提示功能,例如性别只能输入F,M,输入错误提示重新输入 2)创新要求: 将通讯录信息保存为文件,能够写入与读出。3)课程设计论文编写要求(1)要按照课程设计模板的规格书写课程设计论文(2)论文包括目录、正文、心得体会、参考文献等(3)课程设计论文用A4纸统一打印,装订按学校的统一要求完成4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程:40分; (3)完成调试:20分;(4)回答问题:20分。5)参考文献: (1)谭浩强. C+程序设计. 北京:清华大学出版社,2008 (2)/(3)/6)课程设计进度安排内容 天数地点构思及收集资料 2图书馆编程设计与调试 5实验室撰写论文 3图书馆、实验室学生签名: 2014年 6月 16 日课程设计(论文)评审意见(1)完成原理分析(20分):优()、良()、中()、一般()、差(); (2)设计分析(20分):优()、良()、中()、一般()、差(); (3)完成调试(20分):优()、良()、中()、一般()、差();(4)翻译能力(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人: 职称: 副教授 2014 年 6 月 22 日 目 录第1章 系统概要11.1 学生管理目的11.2 设计中需要解决的问题和方案1第2章 设计思路及算法12.1 学生管理系统设计原理12.2 学生管理系统模块简介22.2.1 建立学生类22.2.2 set函数32.2.3 addition函数32.2.4 change 函数42.2.5 del函数52.2.6 display函数52.2.7 search函数52.2.8 menu 菜单函数52.2.9 goto语句的运用52.3 文件导入和导出5第3章 源程序代码5第4章 程序运行结果及分析144.1 信息录入函数144.2 信息添加函数144.3 信息修改函数144.4 信息删除函数154.5 查询信息函数154.5.1 按学号查询154.5.2 按姓名查询164.6 显示信息函数164.7 菜单界面与退出界面164.8 goto语句的使用164.9 程序评价16第5章 心得体会17参考文献17第1章 系统概要1.1 学生管理目的运用C+语言描述学生类。要求设计中综合运用C+基础知识,理解面向对象程序设计的核心的概念。(1)建立学生类(2)学生信息的初始化(3)学生信息的添加、修改、删除、查找(4)学生信息的输出1.2 设计中需要解决的问题和方案(1) 文件的存储和写入:使用文件fstream进行写入和读出操作,将其使用在操作中实现对数据的调用和存储,方便快捷。(2) 数据的定位:在程序中定义一个全局变量来确定要进行操作的数据位置;(3) 函数模块设计:将7个功能函数设计为student的公有数据成员,在主函数中实现调用。(4) 功能的选择和菜单设计:在主函数中使用switch配合循环进行对操作的选择,设计一个菜单函数调整菜单的显示形式。第2章 设计思路及算法2.1 学生管理系统设计原理利用类进行对数据的封装,建立一个学生(student)类,设计私有成员(以姓名、学号、性别、地址为字符串string类型,以年龄、语文成绩、数学成绩、英语成绩为int类型建立私有成员表列)以及公有成员,包括六个操作函数(信息的录入void set()函数、信息的增加void addition()函数、信息修改void change()函数、信息删除void del()函数、信息查询 void search() 函数、信息输出 void display()函数)以及一个菜单函数void menu()以及类的构造、析构函数。部分函数采用goto语句对错误的进入功能函数进行处理。在主函数(void main)方面,其定义一个对象student stu,并通过一个循环内的switch语句实现菜单的操作,在此特别引进清屏操作。其整体框架大体如此,即通过主函数的swith语句实现菜单功能调用student类的操作功能函数,使用文件写入和读出数据! 2.2 学生管理系统模块简介 本程序模块图:主函数 反复调用学生类switchwhile菜单函数数据成员显示函数修改函数查询函数删除函数输入函数添加函数 2.2.1 建立学生类class studentpublic:student()student()cout本对象已经使用完毕,内存已经释放!感谢您使用本系统!n;void set(); void addition(); void del(); void change(); void search(); void display(); private:string name,num,sex,address;/设定私有数据成员,学号设置为字符串int age,ch,math,eng;2.2.2 set函数set函数的功能是为类的成员赋值,但是赋值的同时还需要在以后的操作中调用,即应当将输入信息存储起来,在这里我们使用到fstream头文件进行文件的写入和读出,此外在数据录入也应当那个要有一个跳出录入的条件,即采用循环结合break的模式跳出数据的录入。这就是set函数的基本构造,源代码如下:void student:set()string setname,setsex,setnum,setaddress;int setage,setch,setmath,seteng;ofstream outfile;outfile.open(我的课程设计存储区.doc,ios:out); if(!outfile)cout抱歉,文件打开错误,请检查后再次启动!n;abort();for(int i=0;iM;i+) cout当姓名键入“0”时,则停止写入!endl; coutsetname;if(setname=0) cout您已经停止写入数据,;break;else N+;name=setname; coutsetnum;num=setnum;outfilenum ;outfilename ; coutsetsex;sex=setsex;outfilesetsex ; coutsetage;age=setage;outfilesetage ; coutsetaddress;address=setaddress;outfilesetaddress ;coutsetch;ch=setch;outfilesetch ;coutsetmath;math=setmath;outfilesetmath ; coutseteng;eng=seteng;outfilesetengendl;outfile.close();cout共N条信息已录入成功,写入“我的课程设计存储区.doc”中!n;2.2.3 addition函数本函数主要还是通过文件操作对数据的存储,提示用户对数据的添加,操作大体和上面所提到的set函数一致,并无多大变化。void student:addition()char ch;coutch;if(ch=n) goto loop;elsestring addname,addsex,addnum,addaddress; int addage,addch,addmath,addeng; ofstream outfile(我的课程设计存储区.doc,ios:app); if(!outfile) cout抱歉,文件打开错误,请检查后再次启动!n;abort(); N=N+1; cout请输入您要添加的数据endl; coutaddnum;outfileaddnum ;coutaddname;outfileaddname ;coutaddsex;outfileaddsex ;coutaddage;outfileaddage ;coutaddaddress;outfileaddaddress ;coutaddch;while(addch150) coutaddch;outfileaddch ;coutaddmath;while(addmath150) coutaddmath;outfileaddmath ;coutaddeng;while(addeng150) coutaddeng;outfileaddengendl; outfile.close();cout您好,您的信息已添加成功!此时共有N条信息!n;loop:;2.2.4 change 函数本函数模块,通过一个记录文件编号的全局变量N来实现修改的数据位置,同理下面的删除del函数也是这样对数据的定位。N所确定的位置即文件中的位置,在本函数中为方便用户选择改变数据序号,先使用infile将数据显示在屏幕上,供用户进行选择,然后直接写入要修改的信息,再一次写入文件。2.2.5 del函数本函数的原理和change函数形同,只是在change函数修改写入方面加入了一个限制条件,即删除信息的那个序号条目不予写入,从而实现删除信息的目的。2.2.6 display函数本函数依旧是使用fstream实现信息的导入,然后逐个显示在屏幕上,通过对输出位数的控制,实现显示的有序,故而在头文件中应加入iomanip的标准库函数。2.2.7 search函数search 函数在本程序中对其实现了两种查询方式学号和姓名,由于本程序中对这个两个变量(成员)的定义类型为string类,可以直接进行判断,通过对文件的导入并存储在程序定义的数组内,逐个检索来实现查询的功能。2.2.8 menu 菜单函数菜单函数就是一个简单的输出函数,通过其控制主界面的内容和形式。2.2.9 goto语句的运用在实际检测中发现容易错误的进入功能函数,如果需要退出的话设置跳出不容易完成,此时需要跳出函数,故而使用goto语句进行转向。2.3 文件导入和导出在程序中大量使用infile和outfile对文件进行写入和读出,是整个程序的灵魂和主体,所以这个系统的核心就是这个文件操作代码。第3章 源程序代码/*-学生管理系统-*/#include/不加.h,并不是头命令,因为开辟了操作空间#include#include#include/*为源文件开辟空间*/using namespace std;#define M 100 /计划使用最大存储信息条数100条,可更改int N=0; /已写入文件学生信息数目,设置为全局变量class studentpublic:student()student()cout本对象已经使用完毕,内存已经释放!感谢您使用本系统!n;void set(); void addition(); void del(); void change(); void search(); void display(); private:string name,num,sex,address;/设定私有数据成员,学号设置为字符串int age,ch,math,eng;/函数名称:set/函数功能:输入信息void student:set()string setname,setsex,setnum,setaddress;int setage,setch,setmath,seteng;ofstream outfile;outfile.open(我的课程设计存储区.doc,ios:out); if(!outfile)cout抱歉,文件打开错误,请检查后再次启动!n;abort();for(int i=0;iM;i+) cout当姓名键入“0”时,则停止写入!endl;coutsetname;if(setname=0) cout您已经停止写入数据,;break;elseN+;name=setname;coutsetnum;num=setnum;outfilenum ;outfilename ; coutsetsex;sex=setsex;outfilesetsex ; coutsetage;age=setage;outfilesetage ; coutsetaddress;address=setaddress;outfilesetaddress ;coutsetch; while(setch150) coutsetch;ch=setch;outfilesetch ;coutsetmath;while(setmath150) coutsetmath;math=setmath;outfilesetmath ; coutseteng;while(seteng150) coutseteng;eng=seteng;outfilesetengendl;outfile.close(); cout共N条信息已录入成功,写入“我的课程设计存储区.doc”中!n;/函数名称:addition/函数功能:添加信息void student:addition()char ch;coutch;if(ch=n) goto loop;/使用goto语句跳出本次错误选择elsestring addname,addsex,addnum,addaddress; int addage,addch,addmath,addeng; ofstream outfile(我的课程设计存储区.doc,ios:app); if(!outfile) cout抱歉,文件打开错误,请检查后再次启动!n;abort(); N=N+1; cout请输入您要添加的数据endl; coutaddnum;outfileaddnum ;coutaddname;outfileaddname ;coutaddsex;outfileaddsex ;coutaddage;outfileaddage ;coutaddaddress;outfileaddaddress ;coutaddch;while(addch150) coutaddch;outfileaddch ;coutaddmath;while(addmath150) coutaddmath;outfileaddmath ;coutaddeng;while(addeng150) coutaddeng;outfileaddengendl; outfile.close();cout您好,您的信息已添加成功!此时共有N条信息!n;loop:;/函数名称:del/函数功能:删除信息void student:del()char ch;coutch;if(ch=n) goto loop;else int k,i,ageM,chM,mathM,engM; string nameM,sexM,numM,addressM;ifstream infile(我的课程设计存储区.doc,ios:in);if(!infile)cout抱歉,文件打开错误,请检查后再次启动!n;abort();for(i=0;inumi;coutsetw(6)namei;coutsetw(6)sexi;coutsetw(4)agei;coutsetw(4)addressi;coutsetw(10)chi;coutsetw(5)mathi;coutsetw(5)engi;coutsetw(5)engiendl;infile.close();cout*-*n;coutk;while(kN)cout抱歉,您输入的编号不存在,请输入在Nk;k-=1;ofstream outfile(我的课程设计存储区.doc,ios:out);if(!outfile)cout抱歉,文件打开错误,请检查后再次启动!n;abort();for(i=0;iN;i+)if(i!=k)outfilenumi ;outfilenamei ; outfilesexi ; outfileagei ;outfileaddressi ; outfilechi ; outfilemathi ; outfileengiendl;outfile.close();N-;cout您好,您要删除的序号为k+1的数据已删除成功!此时共有N条信息!n;loop:;/函数名称:change/函数功能:修改信息void student:change()char ch;coutch;if(ch=n) goto loop;elseint i,k,ageM,chM,mathM,engM; string nameM,sexM,numM,addressM; ifstream infile(我的课程设计存储区.doc,ios:in); if(!infile)cout抱歉,文件打开错误,请检查后再次启动!n;abort(); for(i=0;inumi;coutsetw(6)namei;coutsetw(6)sexi;coutsetw(3)agei;coutsetw(4)addressi;coutsetw(10)chi;coutsetw(5)mathi;coutsetw(5)engi;coutsetw(5)engiendl; infile.close(); ofstream outfile(我的课程设计存储区.doc,ios:out); if(!outfile) cout抱歉,文件打开错误,请检查后再次启动!n;abort(); cout你想修改第几个数据?k; while(kN)cout抱歉,您输入的编号不存在,请输入在Nk;k-=1;cout请输入新的数据:endl; cout请输入您要添加的数据endl; coutnumk; coutnamek; coutsexk; coutagek; coutaddressk; coutchk;while(chk150) coutchk; coutmathk;while(mathk150) coutmathk; coutengk;while(engk150) coutengk; for(i=0;iN;i+)outfilenumi ;outfilenamei ; outfilesexi ;outfileagei ; outfileaddressi ;outfilechi ; outfilemathi ;outfileengiendl; outfile.close(); cout您好,您要修改的序号为k+1的数据已修改成功!此时共有N条信息!n;loop:;/函数名称:search/函数功能:查询信息void student:search()char ch;coutch;if(ch=n) goto loop;elseint i,k,w=0,scoreM4,ageM,chM,mathM,engM; string searchname,searchnum,nameM,numM,sexM,addressM,strM4; cout*-*n; cout#1.按学号查找 #2.按姓名查找n; ifstream infile(我的课程设计存储区.doc,ios:in); if(!infile)cout抱歉,文件打开错误,请检查后再次启动!n;abort(); for(i=0;inumi;stri0=numi;infilenamei;stri1=namei; infilesexi;stri2=sexi;infileagei;scorei0=agei; infileaddressi;stri3=addressi;infilechi;scorei1=chi; infilemathi;scorei2=mathi;infileengi;scorei3=engi; infile.close();coutk;while(k!=1|k!=2)coutk; if(k=1) coutsearchnum; for(i=0;iN;i+)if(numi=searchnum)w=1;coutsetw(6)stri0;coutsetw(6)stri1; coutsetw(3)stri2;coutsetw(4)scorei0;coutsetw(10)stri3;coutsetw(5)scorei1;coutsetw(5)scorei2;coutsetw(5)scorei3endl; if(w=0) cout抱歉,未查询到学号为“searchnum”的相关信息,请确认后重新检索或改用姓名方式检索!n; else coutsearchname; for(i=0;iN;i+)if(namei=searchname)w=1;coutsetw(6)stri0;coutsetw(6)stri1; coutsetw(3)stri2;coutsetw(4)scorei0;coutsetw(10)stri3;coutsetw(5)scorei1;coutsetw(5)scorei2;coutsetw(5)scorei3endl; if(w=0) cout未查询到姓名为“searchname”的相关信息,请确认后重新检索或改用学号方式检索!n;loop:;/函数名称:display/函数功能:显示全部信息void student:display()int k,age,ch,math,eng;string name,sex,num,address;ifstream infile(我的课程设计存储区.doc,ios:in); if(!infile)cout抱歉,文件打开错误,请检查后再次启动!n;abort();cout总计N条信息如下:n;for(k=0;knum;coutsetw(6)name;coutsetw(6)sex;coutsetw(3)age;coutsetw(4)address;coutsetw(10)ch;coutsetw(5)math;coutsetw(5)eng;coutsetw(5)engendl;infile.close();/函数名称:menu/函数功能:菜单提示框void menu() cout*-*n;cout* 欢迎您进入学生管理系统 *n;cout* 请根据您的操作选择输入数字 *n;cout* #1.输入信息 #2.添加信息 *n;cout* #3.删除信息 #4.修改信息 *n;cout* #5.查询信息 #6.显示全部 *n;cout* #0.退出 *n;coutk;while(k!=0) system(cls);/清屏操作switch(k)case 1:stu.set();break;case 2:stu.addition();break;case 3:stu.del();break;case 4:stu.change();break;case 5:stu.search();break;case 6:stu.display();break;case 0:cout 您已退出系统,感谢您的使用,请您提出宝贵意见!n;break;default:coutk;第4章 程序运行结果及分析4.1 信息录入函数4.2 信息添加函数4.3 信息修改函数4.4 信息删除函数4.5 查询信息函数4.5.1 按学号查询(下方为错误检验)4.5.2 按姓名查询(下方为错误检验)4.6 显示信息函数4.7 菜单界面与退出界面4.8 goto语句的使用4.9 程序评价对于如此功能庞大的程序,我们需要一个合理的框架,在使用对象指针和对象数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论