6基于vc的学生信息管理系统方案.doc_第1页
6基于vc的学生信息管理系统方案.doc_第2页
6基于vc的学生信息管理系统方案.doc_第3页
6基于vc的学生信息管理系统方案.doc_第4页
6基于vc的学生信息管理系统方案.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

. . . . .中北大学课 程 设 计 说 明 书学生姓名: 学 号: 学生姓名: 学 号: 学 院: 专 业: 题 目:学生信息管理系统 指导教师: 职称: 2010 年 月 日中北大学课程设计任务书 10/11 学年第 1学期学 院: 信息与通信工程学院 专 业: 电子信息工程 学生姓名: 学 号: 学生姓名: 学 号: 课程设计题目: 学生信息管理系统起 迄 日 期: _ _课程设计地点: 指 导 教 师: 系 主 任: 下达任务书日期: 2010 年12 月 10 日课 程 设 计 任 务 书1设计目的:熟悉VC+程序设计的基本思想,掌握VC+程序的基本构成及各个组成类之间的关系。 2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):(1)熟悉最基本的VC+操作,掌握其整体运行过程;(2)将本班同学的基本信息存入系统,要求有能插入、删除、更新等功能(3)要求四位同学协调配合,共同完成任务。 3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:课程设计说明书一份程序结果课 程 设 计 任 务 书4主要参考文献:l 要求按国标GB 771487文后参考文献著录规则书写,例:1 傅承义,陈运泰,祁贵中.地球物理学基础.北京:科学出版社,1985(5篇以上)5设计成果形式及要求:课程设计说明书程序结果6工作计划及进度:2010年12月12日-2010年12月18日,查找资料;12月19日-12月25日,熟悉VC工作环境,上机调试程序;12月26日-2011年1月1日,写设计报告,并答辩。系主任审查意见: 签字: 年 月 日设计说明书应包括以下主要内容: (1)封面:课程设计题目、班级、姓名、指导教师、时间 (2)设计任务书 (3)目录 (4)设计方案简介 (5)设计条件及主要参数表 (6)设计主要参数计算 (7)设计结果 (8)设计评述,设计者对本设计的评述及通过设计的收获体会 (9)参考文献目 录第一章 引言1.1 课题背景1.2 程序设计目的1.3 程序设计内容第二章 设计思路和方案2.1 设计思路 2.2 设计方案第三章 详细设计与实现 3.1 实现学生信息的录入 3.2 实现学生信息的输出 3.3 实现不同身份的登入第四章 运行环境与结果4.1 运行环境4.2 运行结果 参考文献心得 1 引言1.1 课题背景随着学校规模的不断扩大,学生人数也越来越多,学生的管理问题成为了一个我们必须面对和解决的问题。在这个信息化时代,我们应该实现对学生的信息化管理。因此,我设计了这个学生管理系统以实现对学生的基本信息管理。程序设计实践课程设计是非常重要的综合性实践教学环节。学生通过该课程设计,结合 面向对象程序设计的理论、抽象和设计三种形态,进一步熟悉了软件开发的基本理论知识,了解了软件设计的一般步骤,掌握了软件开发的常用技巧,并且学会了更多的解决软件开发过程常见问题的方法。运用所学的面向对象程序设计的基本原理、基本知识和基本技巧,解决某一具体的实际问题,培养我们综合分析和解决问题的能力,为今后分析、设计、开发和调试程序打下坚实的基础。1.2 课程设计目的1、巩固面向对象编程的基本理论知识2、进一步熟悉Visual C+6.0的编程环境,掌握相关控件的使用方法3、更深层次的理解自定义函数、数组和类4、更深层次的理解自定义函数和for语句;5、增强实践操作能力。1.3课程设计内容学生管理系统,其目的是实现对学生的有效化及科学化管理。本文针对学生的管理现状和要求,从理论和应用的角度论述了学生管理系统的特点、功能、设计思路,并且给出关键技术实现的步骤。本系统主要包括几个模块:学生信息的显示、输出这几个模块基本实现设计本系统的目的,从而可以进一步满足学校对学生管理系统的要求。2 设计思路与方案2.1设计思路类是所有面向对象语言的共同特征,因此类是VC+中十分重要的概念,是实现面向对象程序设计的基础。是VC+的灵魂。VC+支持面向过程的程序设计,也支持基于对象的程序设计,又支持面向对象的程序设计。基于对象就是基于类,与面向过程的程序不同,基于对象的程序是以类和对象为基础的,程序的操作是围绕对象进行的。在此基础上利用了继承机制和多态性,就成为面向对象的程序设计。VC+中对象的类型称为类,类代表了某一批对象的共性和特征,类是对象的抽象,而对象是类的具体实例。在类体中是类的成员列表,列出类中的全部成员。它是一种广义的数据类型,除了数据部分以外,还包括了对这些数据操作的函数。这体现了把数据和操作封装在一起。2.2设计方案 学生管理问题中,操作对象是每个学生的信息,建立一个类及两个子类用以储存学生的各种信息并以构造函数对其进行赋值。在排序部分则用for语句与冒泡法根据不同的信息对学生进行排序。运用switch语句是登入后的不同功能。3 详细设计与实现3.1 实现学生信息的输入在本程序设计中,分别以管理员和老师身份登录对学生的基本信息及成绩进行录入,具体实现代码如下: case 1: /学生基本成绩录入 char c; do cout请输入学号number; cout请输入姓名name; cout请输入性别sex; cout请输入宿舍号码sushenumber; cout请输入电话号码telephone;fileja=new ofstream(d:a.txt,ios:app); *fileja学号number姓名name性别sex宿舍号码sushenumber电话号码telephoneendl;3.2 实现学生信息的输出学生信息的的输出则是在查询功能模块中实现,具体代码如下: case 2: /查询学生基本信息 char n20; char c1;int a; do int flag1=0; cout请输入查询的方式endl; cout1 学号查询endl; cout2 姓名查询a; if(a=1) cout请输入你要查询的学生的学号n; for(int j=0;ji;j+) if(strcmp(n,(*sj).getnumber()=0) flag1=1; cout你要查询的学生是: (*sj).getnumber()endl; cout学号(*sj).getnumber()姓名(*sj).getname()性别(*sj).sex宿舍号码(*sj).sushenumber电话号码(*sj).telephoneendl; if(a=2) cout请输入你要查询的学生的姓名n; for(int j=0;ji;j+) if(strcmp(n,(*sj).getname()=0) flag1=1; cout你要查询的学生是: (*sj).getname()endl; cout学号(*sj).getnumber()姓名(*sj).getname()性别(*sj).sex宿舍号码(*sj).sushenumber电话号码(*sj).telephoneendl; 3.3 实现登录身份的选择在本课程设计中,在类的定义之后实现的便是登入身份的选择,具体实现代码如下:bool flag=0;int p;char c6;do cout请输入你的身份:endl; /身份选择cout1 管理员endl;cout2 老师endl;cout3 学生p; if(1=p&p=3) flag=1; else cout错误指令!请重新输入。endl;while(flag=0);if(p=1) cout欢迎进入管理员模块endl; /管理员功能选择4 运行环境与结果4.1运行环境在本课程设计中,系统开发平台为Windows2000,程序设计语言为Visual C+6.0,程序的运行环境为Visual C+ 6.0。Visual C+一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种,在本课程设计中,以Visual C+ 6.0为编程环境。Microsoft Visual C+ 6.0是Microsoft公司的Microsoft Visual Studio 6.0开发工具箱中的一个C+程序开发包。Visual C+包中除包括C+编译器外,还包括所有的库、例子和为创建Windows应用程序所需要的文档。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。 Visual C+从最早期的1.0版本,发展到最新的7.0版本,Visual C+已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的7.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+ 6.0是Microsoft公司推出的目前使用最广泛的基于Windows平台的可视化编程环境。Visual C+ 6.0是在以往版本不断更新的基础上形成的,由于其功能强大,灵活性好,完全课扩展以及具有强大的Internet支持,因而在各种VC+语言开发工具中脱颖而出,成为目前最为流行的VC+语言集成开发环境。Visual C+ 6.0秉承Visual C+以前版本的优异特性,为用户提供了一套良好的可视化开发环境:主要包括文本编辑器、资源编辑器、工程创建工具、Debugger调试器等等。用户可以在集成开发环境中创建工程、打开工程、建立、打开和编辑文件、编译、链接、运行、调试应用程序。4.2运行结果1运行程序.出现登入界面。如图4.1所示:图4.12首先输入密码,然后按Enter键.按照提示对登入身份进行选择.如图4.2所示:图4.2 3然后选择1,然后按Enter键.进入管理员界面.4或选择2, 然后按Enter键.进入老师界面.如图4.3所示:图4.35. 或选择3,然后按Enter键,进入学生界面。如图4.4所示:之后用户可根据相应提示实用相应的功能6参 考 文 献1 谭浩强编著.C程序设计第三版.北京:清华大学出版社,20052 谭浩强 . C+程序设计. 北京:清华大学出版社, 20043 美Brian Overland著,董梁等译,C+语言命令详解,电子工业出版社,20004 美AI Stevens著,林瑶等译,C+大学自学教程,电子工业出版社,20045 刁成嘉主编,面向对象C+程序设计,机械工业出版社,20046 刘瑞新主编,曹建春,沈淑娟,张连堂等编著,Visual C+面向对象程序设计程,机械工业出版社,20047 陈文宇,张松梅编著,C+语言教程,电子科技大学出版社,20048 张凯主编,付兴宏主审,VC+程序设计,大连理工大学出版社,20029 马建红,沈西挺主编,范贻明主审,Visual C+程序设计与软件技术基础,中国附录:程序相关源代码程序清单:#include#include#include#includeusing namespace std;class stu /定义一个父类,存放姓名和学号信息char number10;char name20;public:stu(char a10,char b20) strcpy(number,a); strcpy(name,b);char* getnumber() return number;char* getname() return name;class stu1 : public stu /定义一个子类,用来存放性别,宿舍号码。电话号码信息char sex4;char sushenumber8;char telephone10;public:stu1(char a10,char b20,char c4,char d8,char e10):stu( a, b) strcpy(sex,c); strcpy(sushenumber,d); strcpy(telephone,e);friend void main();class stu2 : public stu /定义另一个子类,存放课程名,课程编号,学分,平时成绩,实验成绩,卷面成绩,综合成绩,实得学分char classnumber8;char classname10;double score,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore;public:stu2(char a10,char b20,char f8,char g10,double aa,double bb,double cc,double dd,double ee,double ff):stu(a,b) strcpy(classnumber,f); strcpy(classname,g); score=aa; pingshigrade=bb; shiyangrade=cc; juanmiangrade=dd; zonghegrade=ee; lastscore=ff;friend void main();void main()char c; string password;int flag7=0;int s=0;cout欢迎进入学生管理系统endl;cout请输入你的登录密码endl; /输入密码do do c=getch(); if(c=char(13) break; password+=c;cout*; while(1);coutn; if(password=123456) flag7=1;char number10;char name20;char sex4;char sushenumber8;char telephone10;int i=0,I=0,j=0;int ja;ja=0;ofstream *file50; stu1 *s50; /定义一个数组指针*s50,存放学生基本信息 stu2 *s150; /定义一个数组指针*s150,存放学生成绩信息char classnumber8;char classname10;double score,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore;bool flag=0;int p;char c6;do cout请输入你的身份:endl; /身份选择cout1 管理员endl;cout2 老师endl;cout3 学生p; if(1=p&p=3) flag=1; else cout错误指令!请重新输入。endl;while(flag=0);if(p=1) cout欢迎进入管理员模块endl; /管理员功能选择 char c4; do cout请输入您要进行的操作endl; cout1 学生基本信息录入endl; cout2 查询学生基本信息endl; cout3 查询班级学生信息endl; cout4 删除功能endl; cout5 按综合成绩实现排序功能endl; cout6 按实得学分实现排序功能m; switch(m) case 1: /学生基本成绩录入 char c; do cout请输入学号number; cout请输入姓名name; cout请输入性别sex; cout请输入宿舍号码sushenumber; cout请输入电话号码telephone;fileja=new ofstream(d:a.txt,ios:app); *fileja学号number姓名name性别sex宿舍号码sushenumber电话号码telephoneendl; ja+;si=new stu1(number,name,sex,sushenumber,telephone); i+; cout数据录入成功,想继续输入吗(y/n)c; flag=0; do if(c!=y&c!=n) cout错误指令!请重新输入!c; else flag=1; while(flag=0); while(c=y); break; case 2: /查询学生基本信息 char n20; char c1;int a; do int flag1=0; cout请输入查询的方式endl; cout1 学号查询endl; cout2 姓名查询a; if(a=1) cout请输入你要查询的学生的学号n; for(int j=0;ji;j+) if(strcmp(n,(*sj).getnumber()=0) flag1=1; cout你要查询的学生是: (*sj).getnumber()endl; cout学号(*sj).getnumber()姓名(*sj).getname()性别(*sj).sex宿舍号码(*sj).sushenumber电话号码(*sj).telephoneendl; if(a=2) cout请输入你要查询的学生的姓名n; for(int j=0;ji;j+) if(strcmp(n,(*sj).getname()=0) flag1=1; cout你要查询的学生是: (*sj).getname()endl; cout学号(*sj).getnumber()姓名(*sj).getname()性别(*sj).sex宿舍号码(*sj).sushenumber电话号码(*sj).telephoneendl; if(flag=0) cout 对不起!你查询的学生不存在!endl; cout你想继续查询吗?(y/n)c1; if(c1!=y&c1!=n) cout指令错误!请重新输入!c1; while(c1=y); break; case 3: /查询班级学生信息 char c2;char m10; do int flag2=0; cout请输入你要查询的班级m; cout信息如下endl; for(int j=0;ji;j+) char *x=(*sj).getnumber(); char xx8; for(int jj=0;jj=6;jj+) xxjj=*x; x+; xx7=0; if(strcmp(m,xx)=0) flag2=1; cout学号(*sj).getnumber()姓名(*sj).getname()性别(*sj).sex宿舍号码(*sj).sushenumber电话号码(*sj).telephoneendl; if(flag2=0) cout对不起!你输入的班级不存在!endl; cout你想继续查询吗?(y/n)c2; if(c2!=y&c2!=n) cout指令错误!请重新输入!c2; while(c2=y); break;case 4: /删除功能 char nn10;char cz; int flag2,mm,mmm; do cout请输入您要删除的学生学号:nn; for(int hh=0;hhgetnumber()=0) flag2=1; i-; mm=hh; do smm=smm+1; mm+; while(mm=i); hh-; for(int hhh=0;hhhgetnumber()=0) flag2=1; I-; mmm=hhh; do s1mmm=s1mmm+1; mmm+; while(mmm=I); hhh-; if(flag2=0) cout您要求删除的对象本来就不存在!请检查输入的正确性!; cout要继续删除吗?(y/n)cz; if(cz!=y&cz!=n) cout指令错误!请重新输入!cz; while(cz=y); break;case 5: /按综合成绩实现排序功能 int k;int k1,i1;char na10;stu2 *temp; stu2 *s250;k1=0; cout请输入你要排序的课程名na; cout1 升序排序endl; cout2 降序排序k; for( i1=0;i1I;i1+) if(strcmp(*s1i1).classname,na)=0) s2k1=s1i1; k1+; else cout无此课程n; if(k=1) / 升序排序 / for( int ii=0;iik1-1;ii+) for( j=ii+1;j(*s2j).zonghegrade) temp=s2ii; s2ii=s2j; s2j=temp; if(k=2) /降序排序 for( int ii=0;iik1-1;ii+) for( j=ii+1;jk1;j+) if(*s2ii).zonghegrade(*s2j).zonghegrade) temp=s2ii; s2ii=s2j; s2j=temp; for( j=0;jk1;j+) cout学号(*s2j).getnumber()姓名(*s2j).getname()课程编号(*s2j).classnumber课程名称(*s2j).classname学分(*s2j).score平时成绩(*s2j).pingshigrade实验成绩(*s2j).shiyangrade卷面成绩(*s2j).juanmiangrade综合成绩(*s2j).zonghegrade实得学分(*s2j).lastscoreendl; break; case 6: /按实得学分实现排序功能 int q;int a1=0;char nam10;stu2 *s350;stu2 *te; cout请输入你要排序的课程名nam; cout1 升序排序endl; cout2 降序排序q; for( int iii=0;iiiI;iii+) if(strcmp(*s1iii).classname,nam)=0) s3a1=s1iii; a1+; if(q=1) /升序排序 for( int ii=0;iia1-1;ii+) for( j=ii+1;j(*s3j).lastscore) te=s3ii; s3ii=s3j; s3j=te; if(q=2) /降序排序 for( int ii=0;iia1-1;ii+) for( j=i+1;ja1;j+) if(*s3ii).lastscore(*s3j).lastscore) te=s3ii; s3ii=s3j; s3j=te; for( j=0;ja1;j+) cout学号(*s3j).getnumber()姓名(*s3j).getname()课程编号(*s3j).classnumber课程名称(*s3j).classname学分(*s3j).score平时成绩(*s3j).pingshigrade实验成绩(*s3j).shiyangrade卷面成绩(*s3j).juanmiangrade综合成绩(*s3j).zonghegrade实得学分(*s3j).lastscoreendl; break; cout你想使用管理员其他功能吗?(y/n)c4; if(c4=n) break; while(c4=y); if(p=2) /教师模块(只能录入成绩) char c3,c5; cout欢迎进入教师模块(只能录入成绩)endl; do cout请输入你教学的课程编号classnumber; cout请输入你教学的课程名 classname; do cout请输入学生学号number; cout请输入学生姓名name; cout本课程学分score; cout该生平时成绩pingshigrade; cout实验成绩shiyangrade; cout卷面成绩juanmiangrade; if(shiyangrade=-1) zonghegrade=pingshigrade*0.3+juanmiangrade*0.7; else zonghegrade=pingshigrade*0.15+shiyangrade*0.15+juanmiangrade*0.7; if(90=zonghegrade&zonghegrade=100) lastscore=score; else if(80=zonghegrade) lastscore=score*0.8; else if(70=zonghegrade) lastscore=score*0.75; else if(60=zonghegrade) lastscore=score*0.6; else lastscore=0; filej=new ofstream(d:b.txt,ios:app); *filej学号number课程编号classnumber课程名称classname学分score平时成绩pingshigrade实验成绩shiyangrade卷面成绩juanmiangrade综合成绩zonghegrade实得学分lastscoreendl; j+; s1I=new stu2(number,name,classnumber,classname,score,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore); I+; coutc3; int flag3=0; do if(c3!=y&c3!=n) cout错误指令!请重新输入!c3; else flag3=1; while(flag3=0); while(c3=y); coutc5; int flag5=0; do if(c5!=y&c5!=n) cout错误指令

温馨提示

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

评论

0/150

提交评论