学生成绩管理系统课程设计.docx
- 文档编号:8763460
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:37
- 大小:70.93KB
学生成绩管理系统课程设计.docx
《学生成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计.docx(37页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统课程设计
软件与通信工程学院
课程设计报告
2015学年 第一学期
课程名称c++课程设计
设计题目学生成绩管理系统
学生姓名陈莉范玲陈慧琳庞昭君
学号06080424
专业班级计算机科学与技术2班
指导教师郭美
1设计任务书
1.1题目与要求
本组计划(成员为:
陈莉,范玲,庞昭君,陈慧琳)编写一个学生成绩管理系统,主要用来管理学生的成绩。
具体要求如下:
1、建立一个学生类,保存学生的班级、姓名、学号、各科成绩、平均分。
2、求出每个学生的平均分。
3、增加和删除学生的学生信息。
4、根据条件查询学生的信息。
5、按条件统计学生的信息。
6、退出系统
根据分工,陈莉的主要工作是编写学生成绩管理系统的输入、删除和管理。
根据分工,范玲的主要工作是编写学生成绩管理系统的统计和查找。
根据分工,庞昭君的主要工作是编写学生成绩管理系统的菜单函数、主函数、显示、修改。
根据分工,陈慧琳的主要工作是编写学生的成绩管理系统的函数定义、文件的输入和输出。
1.2本系统涉及的知识点
类、数组、循环、函数、分支。
1、类的实现
定义一个类,类的代码如下:
classStu//构建学生类
{public:
friendvoidshuru(Stustud[]);//输入
friendvoidtongji(Stustud[]);//统计
friendvoidchazhao(Stustud[]);//查找
friendvoidxiugai(Stustud[]);//修改
friendvoidshanchu(Stustud[]);//删除
friendvoidshuchu(Stustud[]);//输出
friendvoidzengjia(Stustud[]);//增加
friendvoidWrite(Stustud[],intn);//文件写
friendintRead(Stustud[]);//文件读
private:
charclass_0[20];
intnum;
charname[8];
floatc_program;
floatmedia;
floatenglish;
floathuibian;
floataverage;
intorder;
}stud[100];
2、数组的实现
在输入学生信息,存入类的对象数组里,部分代码如下:
voidshuru(Stustud[])//---------------输入学生成绩
{system("cls");/*运行前清屏*/
inti=0;
intflag;
charsign;
cout< while(sign! ='n'&&sign! ='N')/*判断*/ {cout<<"班级: ";/*交互输入*/ cin>>stud[i].class_0; loop: cout<<"学号: "; cin>>stud[i].num; intc=0; while(c {c++; if(stud[i].num==stud[i-c].num) {cout<<"你输入的学号已经存在! 请重新输入。 "< gotoloop; } } 3、循环的实现 在找到要删除的学生后,用for循环语句将后面的学生的信息往前覆盖,代码如下: voidshanchu(Stustud[])//---------------按学号查找,删除学生信息 {system("cls");/*运行前清屏*/ intn=Read(stud); ints; inti=0,j; cout< cout<<"请输入需要删除学生的学号: "< cin>>s; while((stud[i].num-s)! =0&&i if(i==n) {cout<<"====>提示: 对不起,无法找到该学生……"< } else {for(j=i;j {strcpy(stud[j].class_0,stud[j+1].class_0); stud[j].num=stud[j+1].num; strcpy(stud[j].name,stud[j+1].name); stud[j].c_program=stud[j+1].c_program; stud[j].media=stud[j+1].media; stud[j].english=stud[j+1].english; stud[j].huibian=stud[j+1].huibian; stud[j].average=stud[j+1].average;} cout<<"====>提示: 已成功删除! "< 4、函数的实现 在类外定义函数,用来进行删除、增加、修改等功能,部分代码如下: voidzengjia(Stustud[])//---------------增加学生成绩 {system("cls");/*运行前清屏*/ intn=Read(stud); chars; cout< while(s! ='n'&&s! ='N') {cout<<"班级: "< cin>>stud[n].class_0; cout<<"学号: "; cin>>stud[n].num; cout<<"姓名: "; cin>>stud[n].name; cout<<"C++程序设计成绩: "; cin>>stud[n].c_program; cout<<"多媒体成绩: "; cin>>stud[n].media; cout<<"大学英语成绩: "; cin>>stud[n].english; cout<<"汇编成绩: "; cin>>stud[n].huibian; stud[n].average=(stud[n].c_program+stud[n].media+stud[n].english+stud[n].huibian)/4; cout<<"平均分"< n++; cout<<"=====>提示: 插入成功! "< cout<<"是否继续输入(y/n)"< cin>>s;} 5、分支的实现 在主函数用switch用来选择功能,代码如下: voidmain()/*主函数*/ {for(;;) {switch(menu())/*选择判断*/ {case1: shuru(stud);/*输入学生成绩*/ break; case2: shuchu(stud);/*输出学生统计数据*/ break; case3: chazhao(stud);/*查找学生成绩*/ cout<<"\t\t\t"; system("pause"); break; case4: xiugai(stud);/*修改学生成绩*/ cout<<"\t\t\t"; system("pause"); break; case5: shanchu(stud);/*按学号查找,删除学生信息*/ cout<<"\t\t\t"; system("pause"); break; case6: zengjia(stud);/*增加学生成绩*/ cout<<"\t\t\t"; system("pause"); break; case7: tongji(stud);/*显示全部学生成绩*/ cout<<"\t\t\t"; system("pause"); break; case0: cout< cout<<"\t\t\t"; system("pause");exit(0);}}} 2功能设计 2.1算法设计 1、本系统需要实现的功能要求: 利用switch语句设计如图1所示的主菜单: 请输入选项编号(1~6) 图1学生管理系统主菜单 2、根据所选菜单设计相应的功能函数: 1)输入函数shuru(stu[]): 利用while循环输入的方式将学生信息存入学生数组对象,最后调用文件函数write(stu,i)保存在文件。 2)求平均分: 在输入完所有的成绩信息后,stud[i].average保存了所有的科目的平均成绩。 3)文件保存函数Write(Stustud[],intn): 在对正在操作后的学生的信息进行保存,fstreammyFile;函数建立一个文件对象,再测试文件是否能打开,最后用文件函数myFile将学生数组对象中的所有信息都写入到文件中保存。 4)查找函数chazhao(Stustud[]): 定义了整型变量i、j、s和字符变量a[20],运用if判断语句来判断j是用学号查找还是用姓名查找,用whilewhile(strcmp(a,stud[i].name)! =0&&i 5)增加信息函数zengjia(Stustud[]): 定义字符变量s用来记录输入的字符是否是’N’试试’n’,如果都不是则输入要添加的学生的信息,最后在根据cout<<"是否继续输入(y/n)"< 6)删除信息函数shanchu(Stustu[]): 定义字符变量s,整型变量i、j,i用来接收学生的个数,while((stud[i].num-s)! =0&&i 如果找到了则用for(j=i;j 7)统计信息函数tongji(Stustu[]): 定义了字符变量,用if和比较函数语句来判断输入的是课程名,最后输出统计的信息。 8)输出信息函数shuchu(Stustu[]): 定义整型变量i来接收输入的学生个数,运用for循环语句,将所有的学生信息一一输出。 2.2主要模块流程图 主要模块流程图如图2学生管理系统流程所示 3程序代码设计 3.1菜单模块 1、函数原形: intmenu()。 2、功能: 利用while判断函数getchar和标准输出函数来完成主菜单以及功能的选择。 该菜单包含了该系统的8大功能(有输入、显示、查找、修改、删除、插入、统计、退出)。 3、变量以及类型 Charc: 字符变量,接收8大功能的序号,用来判断系统该执行什么功能。 4、说明: 该函数只是用来显示系统的功能和来选择功能,只要输入的字符不是0~7,就返回选择。 5、模块代码及其相关注释 intmenu()/*菜单函数*/ {charc; do {system("cls");/*运行前清屏*/ cout<<"-----------------<<欢迎您使用学生成绩管理系统--------------\n"< cout<<"*******************************************\n\n"< cout<<"1、输入学生成绩"< cout<<"2、显示统计数据"< cout<<"3、查找学生成绩"< cout<<"4、修改学生成绩"< cout<<"5、删除学生成绩"< cout<<"6、插入学生成绩"< cout<<"7、统计学生成绩"< cout<<"0、退出本系统"< cout<<"*********************************************"< cout<<"请你选择操作(0-7): "< c=getchar();/*读入选择*/} while(c<'0'||c>'7'); return(c-'0');/*返回选择*/} 图2学生管理系统流程 3.2主函数模块 1、函数原型: voidmain()。 2、功能: 执行switch()来调用menu()函数,然后接收menu函数传递回来的数值,然后经过case语句的选择,调用相应的函数,达到相应的目的。 3、说明: 我们用system("pause");来暂停查询,等待操作者按键。 4、模块代码及其相关注释 voidmain()/*主函数*/ {for(;;) {switch(menu())/*选择判断*/ {case1: shuru(stud);/*输入学生成绩*/ break; case2: Shuchu(stud);/*输出学生统计数据*/ break; case3: chazhao(stud);/*查找学生成绩*/ cout<<"\t\t\t"; system("pause"); break; case4: xiugai(stud);/*修改学生成绩*/ cout<<"\t\t\t"; system("pause"); break; case5: shanchu(stud);/*按学号查找,删除学生信息*/ cout<<"\t\t\t"; system("pause"); break; case6: zengjia(stud);/*增加学生成绩*/ cout<<"\t\t\t"; system("pause"); break; case7: tongji(stud);/*统计学生成绩*/ cout<<"\t\t\t"; system("pause"); break; case0: cout< cout<<"\t\t\t"; system("pause"); exit(0);}}} 3.3定义类模块 1、定义一个学生类classStu。 2、定义友元函数(输入、统计、查找、修改、删除、输出、增加、文件写入、文件读出)构建每一个模块。 3、定义对象和数据成员(班级、学号、姓名、c++、多媒体、汇编、英语、平均成绩)。 3.4文件输入模块 1、函数原形: voidWrite(Stustud[],intn)。 2、功能: 定义输出文件流对象myfile,打开输入文件“student.dat”,用if语句判断文件,如果打开文件失败,myfile返回0值并退出。 把变量n传给变量count,把信息个数count写到磁盘文件”student.dat”中,利用for(inti=0;i<=count;i++)这循环把所有的信息(班级、学号、姓名、c++、多媒体、汇编、英语、平均成绩)写到磁盘文件”student.dat”文件中,然后将与流对象myfile所关联的输入文件”student.dat”关闭。 3、变量类型: int i: 循环控制量。 int n : 整型形参变量,接收main()传过来的人数。 stu stud[ ]: 接收主函数传过来的数组首地址。 Count: 信息个数变量。 5、说明: 执行该函数时,把学生的所有信息写到文件中。 6、模块代码及其相关注释 voidWrite(Stustud[],intn)//向文件中写入数据 {fstreammyFile; if(! myFile) {cout<<"student.datcan'topen! "< exit (1); } intcount=n; myFile< for(inti=0;i<=count;i++) {myFile< <<""< } myFile.close(); } 3.5文件输出模块 1、函数原形: intRead(Stustud[])。 2、功能: 定义输如文件流对象myfile,打开输出文件“student.dat”,用if语句判断文件,如果打开文件失败,myfile返回0值并退出。 将文件指针myFile.seekg(0)移到文件开头,把信息个数count从磁盘文件”student.dat”中读出来,利用for(inti=0;i<=count;i++)这循环把所有的信息(班级、学号、姓名、c++、多媒体、汇编、英语、平均成绩)从磁盘文件”student.dat”中读出来,然后将与流对象myfile所关联的输入文件”student.dat”关闭。 3、变量及类型: fstreammyFile;定义一个文件。 int i: 循环控制变量。 myFile.seekg(0): 文件指针移到文件开头。 Returncount;count返回到main()函数。 stu stud[ ]: 接收主函数传过来的数组首地址。 Count: 信息个数变量。 4、说明: 执行该函数时,把学生的所有信息从文件中读出。 5、模块代码及其相关注释 intRead(Stustud[])//从文件中读数据 {fstreammyFile; myFile.open("student.dat",ios: : in); if(! myFile) {cout<<"student.datcan'topen! "< exit (1); } intcount; myFile.seekg(0);//文件指针移到文件开头 myFile>>count; for(inti=0;i<=count;i++) {myFile>>stud[i].class_0>>stud[i].num>>stud[i].name>>stud[i].c_program>>stud[i].media>>stud[i].english>>stud[i].huibian>>stud[i].average;} myFile.close(); returncount; 3.6信息输入模块 1、函数原型voidshuru(Stustu[])。 2、变量及类型: inti=0;整型变量,记录人数。 intflag;整型变量,记录判断后的结果是为1还是0。 charsign;字符变量,接收输入的字符进行while循环。 3、功能: 定义两个整型变量i、flag,一个字符变量sign,在字符变量中输入任意的字符,然后进入while(sign! ='n'&&sign! ='N')循环判断sign中的字符是否为’n’或’N’,如果都不是怎进行学生信息的输入。 先将班级输入,在loop: 跳转语句下输入学号,定义一个c用来记录输入的人数,进入while循环,用if(stud[i].num==stud[i-c].num)来判断这次输入的学号是否与以输入的学号重复了,如果重复了系统将会提示"你输入的学号已经存在! 请重新输入。 "然后gotoloop;语句则跳转到loop重新输入学号,直到不相同为止,输入完学号后再继续输入姓名。 然后进入do-while语句,定义一个flag=0,用它来记录输入的成绩是否是在1--100之间,if(stud[i].c_program>100||stud[i].c_program<1)cout<<"对不起,请输入1-100之间的数字! ! \n";如果if不成立,则flag=1,否则flag=0,则继续循环,输入正确的成绩。 随后将运用同样的方法依次输入c++程序设计、多媒体成绩、英语成绩和汇编成绩。 在输入完所有的成绩信息后,运用简单的求平均分运算的stud[i].average=(stud[i].c_program+stud[i].media+stud[i].english+stud[i].huibian)/4;这条语句,将每一个学生的成绩的平均分都求出并保存下来。 cout<<"====>提示: 是否继续写入学生成绩? (Y/N)"; cin>>sign;/*输入判断*/ 根据提示进入判断是否继续进行学生成绩的输入,如果是就输入y,否则就输入n.i自加一,最后根据sign的输入决定是否继续循环本段函数。 本段程序结束后调用函数Write(stud,i)将所有的信息都保存在文件中,以便后面程序的使用。 4、说明: 在执行函数前,运用清屏函数system("cls");清除掉上段函数运行的数据,以便后面函数运行时主界面的整洁清晰。 5、相关代码及注释 voidshuru(Stustud[])//---------------输入学生成绩 {system("cls");/*运行前清屏*/ inti=0; intflag; charsign; cout< while(sign! ='n'&&sign! ='N')/*判断*/ {cout<<"班级: ";/*交互输入*/ cin>>stud[i].class_0; loop: cout<<"学号: "; cin>>stud[i].num; intc=0; while(c {c++; if(stud[i].num==stud[i-c].num) {cout<<"你输入的学号已经存在! 请重新输入。 "< gotoloop;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 课程设计
文档标签
- VC课程设计学生成绩管理系统
- 课程设计说明书学生成绩管理系统
- 学生成绩管理系统设计
- 课程设计成绩记录
- 课程设计学生成绩管理系统学生成绩管理系统
- 课程设计学生成绩管理系统
- 课程设计学生选课成绩管理系统
- 学生成绩管理系统MIS课程设计
- 学生成绩管理系统总体设计
- 学生成绩管理系统课程分析
- 学生选课成绩管理系统设计
- UML课程设计学生成绩管理系统
- 课程设计ASP学生成绩管理系统
- JSP课程设计学生成绩管理系统
- 学生成绩管理系统学生成绩管理系统课程设计
- 学生成绩管理系统JAVA课程设计
- vfp课程设计学生成绩管理系统
- asp学生成绩管理系统课程设计
- 学生成绩管理系统语言课程设计
- VC程序设计作业
- 语言程序设计学生成绩管理系统设计
- 语言课程设计学生成绩
- 语言程序设计学生成绩管理系统实验
- VC课程设计参考
- 语言课程设计学生成绩管理系统
- 程序设计学生选课管理
- 语言程序设计学生成绩管理系统实验