c++课程设计报告-学生基本信息管理系统(共39页)_第1页
c++课程设计报告-学生基本信息管理系统(共39页)_第2页
c++课程设计报告-学生基本信息管理系统(共39页)_第3页
c++课程设计报告-学生基本信息管理系统(共39页)_第4页
c++课程设计报告-学生基本信息管理系统(共39页)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上内蒙古科技大学本科生课程设计说明书题 目:C+面向对象课程设计 学生基本信息管理系统学生姓名:栾凯斌学 号:专 业:计算机科学与技术班 级:4班指导教师:王丽颖专心-专注-专业内蒙古科技大学课程设计任务书课程名称C+面向对象课程设计设计题目学生基本信息管理系统指导教师王丽颖时间2012.12.312013.1.4一、教学要求1. 巩固和加深学生对C+课程的基本知识的理解和掌握2. 掌握C+编程和程序调试的基本技能3. 利用C+进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C+解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任

2、意选择一题,独立完成,题目选定后不可更换。某班学生基本信息管理,包括以下功能:v 从键盘输入包括学号、姓名、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里v 具有进行单项查询或多项查询的功能(即按照给定的关键字姓名等找出满足条件的纪录)v 具有插入、修改和删除信息的功能v 具有输出文件数据信息的功能三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3

3、个函数,每人至少200行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天  选择课程设计题目,分析课题的要求第二天  编程第三天  编程及调试第四天  写课程设计报告第五天  提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C+面向对象程序设计,内蒙古自治区计算机教材

4、编委会,内蒙古大学出版社2C+面向对象程序设计习题解答与实验指导,内蒙古自治区计算机教材编委会,内蒙古大学出版目 录第一章 需求分析1.1 引言本学生基本信息管理系统操作简单,可从键盘输入学生信息,进行查询、增加、修改、删除、输出等。1.2 任务概述在系统中可对学生信息进行查询、增加、修改、删除、输出。查询可分为按学号查询,按姓名查询,然后输出该学生的全部信息。在修改之中可以按学号对学生信息进行修改。在删除中可以按学号对学生信息进行删除。可输出当前的全部学生信息。1.3 数据描述采用以下测试数据:表1.1测试数据学号姓名性别出生年月籍贯所在院系专业奖惩信息栾凯斌女1993.2赤峰国际学院计算机

5、奖学金王玮钰女1993.3赤峰国际学院计算机奖学金陈晶女1993.1呼伦贝尔国际学院计算机奖学金刘东杰女1993.4锡盟国际学院计算机奖学金张洁女1993.5化德国际学院计算机奖学金郝羽女1993.6巴盟国际学院材料奖学金王星女1993.7鄂尔多斯国际学院计算机奖学金赵静女1993.3包头国际学院成型无韩美杰女1993.11赤峰国际学院成型奖学金熊月圆女1993.10乌盟国际学院成型无王晓媛女1992.3鄂尔多斯国际学院成型奖学金纪颖女1993.7巴盟国际学院计算机奖学金蔡国庆男1993.3呼伦贝尔国际学院计算机无王涛男1993.2呼伦贝尔国际学院计算机奖学金肖昕男1992.8巴盟国际学院计算

6、机无1.4 功能需求1. 可实现对学生信息的增加、修改、查询、删除、显示。2. 增加时可根据学生人数进行增加;可按学号对学生信息进行修改、删除;可按学号、姓名对学生信息进行查询;可以显示所有学生信息。1.5 性能需求1. 本系统可存入的最大学生人数为200,实际可进行修改。2. 增加学生信息时输入的待增加学生人数要小于200。3. 修改学生信息时,需输入已经存在的学号进行修改,否则运行出现错误。4. 查询学生信息是,需按学号或姓名进行查询,若没有存入该学号(姓名),则显示“该学号(姓名)不存在!”。5. 需按学号删除学生信息,若该学号不存在,则显示“该学号不存在!”。1.6 运行需求在vc 6

7、.0中运行第二章 概要设计2.1 总体设计主界面查询学生信息增加学生信息按学号删除信息修改学生信息显示当前信息按学号按姓名姓名性别出生年月所在院系专业奖惩信息图2.12.2 数据类型设计(或数据结构设计)class student /建立学生类public:char num20; /学号char name20; / 姓名char sex3; /性别 char time20; / 出生年月char add10; /籍贯 char yuanxi10; / 所在院系char zhuanye10; /专业char jiang10; /奖惩信息stuN;2.3 接口设计 表2.1:函数列表函数名行数首部

8、函数功能seekvoid seek()查询学生信息modifyvoid modify修改学生信息insertvoid insert增加学生信息delvoid del删除学生信息displayvoid display输出所有学生信息menuvoid menu主界面2.4 运行界面设计运行主函数main时,调用主界面函数menu,通过选择,分别调用函数insert、函数modify、函数seek、函数del、函数display,进入子菜单进行具体操作。各函数之间相互关联,但又相互独立。子菜单也可返回主界面,进行下一步操作。在主界面中可退出该系统。mainmenuinsertmodifyseekde

9、ldisplay箭头为被调用的函数返回路径。图2.2 函数调用第三章 详细设计3.1 主界面设计图3.1 主界面输入n开始n=1增加学生信息息息n=2修改学生信息n=3查询学生信息n=4按学号删除信息n=5输出所有信息结束n=7图3.2 主界面流程图int main() while(1) menu(); system("pause"); return 0; void menu() int num;cout<<" nntttt简易学生信息管理系统nn"<<endl; cout<<"tttt*系统功能菜单*n&q

10、uot;<<endl; cout<<"tt-n"<<endl; cout<<"tt1.增加学生信息n"<<endl;cout<<"tt2.修改学生信息n"<<endl; cout<<"tt3.查询学生信息n"<<endl; cout<<"tt4.按学号删除信息n"<<endl; cout<<"tt5.显示当前信息n"<<e

11、ndl; cout<<"tt6.退出系统n"<<endl; cout<<"tt-n"<<endl; cout<<"tt请选择菜单编号:" cin>>num; switch(num) case 1:insert();break; case 2:modify();break; case 3:seek();break;case 4:del();break; case 5:display();break; case 6:k=0;break;default:cout<

12、<"请在1-6之间选择n"<<endl; 3.2 输入模块设计图3.3 输入图3.4 输入重复输入n输入增加的学生数n已有该学号输入学生的学号输入学生的姓名输入学生的性别输入学生的出生年月输入学生的籍贯输入学生的所在院系输入学生的专业输入学生的奖惩信息录入成功图3.5 增加学生流程图void insert() int i=n,j,flag; cout<<"请输入待增加的学生数:n" cin>>n; do flag=1; while(flag) flag=0;cout<<"请输入学生的学号:n

13、",i+1; cin>>stui.num; for(j=0;j<i;j+) if(strcmp(stui.num,stuj.num)=0) cout<<"已有该学号,请检查后重新录入!n"<<endl; flag=1; break; /*如有重复立即退出该层循环,提高判断速度*/ cout<<"请输入学生的姓名:n",i+1; cin>>; cout<<"请输入学生的性别:n",i+1; cin>>stui.sex;

14、cout<<"请输入学生的出生年月:n",i+1; cin>>stui.time; cout<<"请输入学生的籍贯:n",i+1; cin>>stui.add; cout<<"请输入学生的所在院系:n",i+1; cin>>stui.yuanxi; cout<<"请输入学生的专业:n",i+1; cin>>stui.zhuanye; cout<<"请输入学生的奖惩信息:n",i+1; ci

15、n>>stui.jiang;cout<<"录入成功!nn"<<endl; if(i<n) i+; while(i<n);3.3 修改模块设计图3.6 修改输入要修改学生的学号输入nn=1修改姓名n=2修改性别修改出生年月n=3n=4修改籍贯n=5修改院系n=6修改专业修改奖惩信息n=7退出n=8图3.7 修改流程图void modify()int i,item,num; char s110,s210; / 以姓名和学号最长长度+1为准cout<<"请输入要修改的学生的学号:n" cin>&

16、gt;s1; for(i=0;i<n;i+) if(strcmp(stui.num,s1)=0) num=i; cout<<"-n"<<endl; cout<<"1.修改姓名n"<<endl; cout<<"2.修改性别n"<<endl; cout<<"3.修改出生年月n"<<endl;cout<<"4.修改籍贯n"<<endl; cout<<"5.

17、修改所在院系n"<<endl; cout<<"6.修改专业n"<<endl; cout<<"7.修改奖惩信息n"<<endl; cout<<"8.退出本菜单n"<<endl;cout<<"-n"<<endl; while(1) cout<<"请选择子菜单编号:"cin>>item; switch(item) case 1: cout<<&quo

18、t;请输入新的姓名:n" cin>>s2; strcpy(,s2); break; case 2: cout<<"请输入新的性别:n" cin>>s2;strcpy(stunum.sex,s2);break; case 3: cout<<"请输入新的出生年月:n" cin>>s2; strcpy(stunum.time,s2);break; case 4: cout<<"请输入新的籍贯:n" cin>>s2; strcp

19、y(stunum.add,s2); break; case 5: cout<<"请输入新的所在院系:n" cin>>s2; strcpy(stunum.yuanxi,s2); break; case 6: cout<<"请输入新的专业:n" cin>>s2;strcpy(stunum.zhuanye,s2); break; case 7: cout<<"请输入新的奖惩信息:n" cin>>s2; strcpy(stunum.jiang,s2); break; ca

20、se 8:return; default:cout<<"请在1-8之间选择n"<<endl; 3.4 查找模块设计图3.8 查找学号图3.9 查找姓名输入n按学号查询n=1n=2按姓名查询退出n=3图3.10 查询流程图void seek()int i,item,flag; char s110; cout<<"-n"<<endl; cout<<"1.按学号查询n"<<endl; cout<<"2.按姓名查询n"<<end

21、l; cout<<"3.退出本菜单n"<<endl; cout<<"-n"<<endl; while(1) cout<<"请选择子菜单编号:" cin>>item; flag=0; /先给变量flag赋初值0switch(item) case 1: cout<<"请输入要查询的学生的学号:n" cin>>s1; /&s1变量地址for(i=0;i<n;i+) if(strcmp(stui.num,s1)=0

22、) /比较两个字符串flag=1; /flag表示有无该学号。若flag的值为1表示有该学号,若flag的值为0表示无该学号cout<<"该学生学号,姓名,性别,出生年月,籍贯,所在院系,专业,奖惩信息 分别为:n"<<endl;cout<<stui.num<<" "cout<<<<" "cout<<stui.sex<<" "cout<<stui.time<<" &qu

23、ot;cout<<stui.yuanxi<<" "cout<<stui.zhuanye<<" "cout<<stui.jiang<<" "<<endl; if(flag=0) cout<<"该学号不存在!n"<<endl; break; /提前终止循环case 2:cout<<"请输入要查询的学生的姓名:n" cin>>s1; for(i=0;i<n;i+)

24、if(strcmp(,s1)=0) flag=1; /flag表示有无该姓名cout<<"该学生学号,姓名,性别,出生年月,籍贯,所在院系,专业,奖惩信息 分别为:n"<<endl;cout<<stui.num<<" "cout<<<<" "cout<<stui.sex<<" "cout<<stui.time<<" "cout<<

25、stui.yuanxi<<" "cout<<stui.zhuanye<<" "cout<<stui.jiang<<" "<<endl; if(flag=0) cout<<"该姓名不存在!n"<<endl; break; case 3:return; default:cout<<"请在1-3之间选择n"<<endl; 3.5 删除模块设计图3.11 删除输入要删除学生的学号 删除

26、成功图3.12 删除流程图void del() int i,x,j=0; char s110; cout<<"请输入要删除学生的学号:n"cin>>s1; for(i=0;i<count;i+) if(strcmp(stui.num,s1)=0) for(x=i;x<=count-2;x+) stux=stux+1; j+; count=count-1;if(j=0) cout<<"该学号不存在!n"<<endl; if(j!=0) cout<<"删除成功,显示结果请选择菜

27、单5n"<<endl; 3.6 显示模块设计图3.13 显示void display() int i;cout<<"所有学生的信息为:n"<<endl;cout<<"学号,姓名,性别,出生年月,籍贯,所在院系,专业,奖惩信息 分别为:n"<<endl;for(i=0;i<n;i+) cout<<stui.num<<" "cout<<<<" "cout<<stui.

28、sex<<" "cout<<stui.time<<" "cout<<stui.yuanxi<<" "cout<<stui.zhuanye<<" "cout<<stui.jiang<<" "<<endl; 第四章 测试分析4.1 出现的问题和解决的方法问题1:当对学生信息进行查询时,不能读出学生信息。解决方案:先定义变量flag,并赋初值0。用函数strcmp比较stui.num

29、和s1。若两字符串相等,则flag的值为1,输出学生信息。否则flag的值为0,输出该学号不存在。问题2:当对学生信息进行修改时,输入错误的学号,再输入新的学生姓名时,系统会崩溃。解决设想:对输入的学号进行查询,若已经存在,则进行修改;若不存在,则重新输入。第五章 课程设计总结1. 在每次进行操作选择时都要考虑用户是否会输入错误,利用switch的default命令返回让用户重新输入。2. 对数据文件的掌握有所欠缺,不能运用自如。附录:程序代码#include<iostream.h>#include<string.h>#include<stdlib.h>#i

30、nclude<fstream.h>int count=100; /最大学生人数,实际请更改void seek(); / 查询 void modify(); /修改信息void insert(); /增加void del(); /删除void display(); / 输出所有信息void menu(); /界面class student /建立学生类public:char num20; /学号char name20; / 姓名char sex3; /性别 char time20; / 出生年月char add10; /籍贯 char yuanxi10; / 所在院系char zhu

31、anye10; /专业char jiang10; /奖惩信息stu100; int k=1,n,m; / 定义全局变量 /主函数int main() while(1) /执行k次界面menu(); system("pause"); /系统终止return 0; /查询void seek()int i,item,flag; char s110; cout<<"-n"<<endl; cout<<"1.按学号查询n"<<endl; cout<<"2.按姓名查询n"

32、;<<endl; cout<<"3.退出本菜单n"<<endl; cout<<"-n"<<endl; while(1) cout<<"请选择子菜单编号:" cin>>item; flag=0; /先给变量flag赋初值0switch(item) case 1: cout<<"请输入要查询的学生的学号:n" cin>>s1; /&s1变量地址for(i=0;i<n;i+) if(strcmp(st

33、ui.num,s1)=0) /比较两个字符串flag=1; /flag表示有无该学号。若flag的值为1表示有该学号,若flag的值为0表示无该学号cout<<"该学生学号,姓名,性别,出生年月,籍贯,所在院系,专业,奖惩信息 分别为:n"<<endl;cout<<stui.num<<" "cout<<<<" "cout<<stui.sex<<" "cout<<stui.time<&l

34、t;" "cout<<stui.add<<" "cout<<stui.yuanxi<<" "cout<<stui.zhuanye<<" "cout<<stui.jiang<<" "<<endl; if(flag=0) cout<<"该学号不存在!n"<<endl; break; /提前终止循环case 2:cout<<"请输

35、入要查询的学生的姓名:n" cin>>s1; for(i=0;i<n;i+) if(strcmp(,s1)=0) flag=1; /flag表示有无该姓名cout<<"该学生学号,姓名,性别,出生年月,籍贯,所在院系,专业,奖惩信息 分别为:n"<<endl;cout<<stui.num<<" "cout<<<<" "cout<<stui.sex<<" "c

36、out<<stui.time<<" "cout<<stui.add<<" "cout<<stui.yuanxi<<" "cout<<stui.zhuanye<<" "cout<<stui.jiang<<" "<<endl; if(flag=0) cout<<"该姓名不存在!n"<<endl; break; case 3:r

37、eturn; default:cout<<"请在1-3之间选择n"<<endl; /修改信息void modify()int i,item,num; char s110,s210; / 以姓名和学号最长长度+1为准cout<<"请输入要修改的学生的学号:n" cin>>s1; for(i=0;i<n;i+) if(strcmp(stui.num,s1)=0) num=i; cout<<"-n"<<endl; cout<<"1.修改姓名n

38、"<<endl; cout<<"2.修改性别n"<<endl; cout<<"3.修改出生年月n"<<endl;cout<<"4.修改籍贯n"<<endl; cout<<"5.修改所在院系n"<<endl; cout<<"6.修改专业n"<<endl; cout<<"7.修改奖惩信息n"<<endl; cout&

39、lt;<"8.退出本菜单n"<<endl;cout<<"-n"<<endl; while(1) cout<<"请选择子菜单编号:"cin>>item; switch(item) case 1: cout<<"请输入新的姓名:n" cin>>s2; strcpy(,s2); break; case 2: cout<<"请输入新的性别:n" cin>>s2;strc

40、py(stunum.sex,s2);break; case 3: cout<<"请输入新的出生年月:n" cin>>s2; strcpy(stunum.time,s2);break; case 4: cout<<"请输入新的籍贯:n" cin>>s2; strcpy(stunum.add,s2); break; case 5: cout<<"请输入新的所在院系:n" cin>>s2; strcpy(stunum.yuanxi,s2); break; case 6:

41、 cout<<"请输入新的专业:n" cin>>s2;strcpy(stunum.zhuanye,s2); break; case 7: cout<<"请输入新的奖惩信息:n" cin>>s2; strcpy(stunum.jiang,s2); break; case 8:return; default:cout<<"请在1-8之间选择n"<<endl; /增加void insert() int i=n,j,flag; cout<<"请输入待

42、增加的学生数:n" cin>>n; do flag=1; while(flag) flag=0;cout<<"请输入学生的学号:n",i+1; cin>>stui.num; for(j=0;j<i;j+) if(strcmp(stui.num,stuj.num)=0) cout<<"已有该学号,请检查后重新录入!n"<<endl; flag=1; break; /*如有重复立即退出该层循环,提高判断速度*/ cout<<"请输入学生的姓名:n",i

43、+1; cin>>; cout<<"请输入学生的性别:n",i+1; cin>>stui.sex; cout<<"请输入学生的出生年月:n",i+1; cin>>stui.time; cout<<"请输入学生的籍贯:n",i+1; cin>>stui.add; cout<<"请输入学生的所在院系:n",i+1; cin>>stui.yuanxi; cout<<"请输入学

44、生的专业:n",i+1; cin>>stui.zhuanye; cout<<"请输入学生的奖惩信息:n",i+1; cin>>stui.jiang;count=count+1;cout<<"录入成功!nn"<<endl; if(i<n) i+; while(i<n); /删除void del() int i,x,j=0; char s110; cout<<"请输入要删除学生的学号:n"cin>>s1; for(i=0;i<count;i+) if(strcmp(stui.num,s1)=0) for(x=i;x<=count-2;x+) stux=stux+1; j+; count=count-1;if(j=0) cou

温馨提示

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

评论

0/150

提交评论