欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    学生成绩管理系统C++程序设计.doc

    • 资源ID:4732428       资源大小:312.50KB        全文页数:19页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    学生成绩管理系统C++程序设计.doc

    1、项目设计题目(学生成绩管理系统)学号: 姓名: 自评成绩: 成绩: 1.选题意义、依据 学生成绩系统的设计从学生的应用中而来,学生了解该系统的组成和运行过程,它贴近学生的生活能使学生更加方便的使用各个语句、函数、结构体等。 依据学生期末成绩表的格式。2.系统功能设计与分析(功能模块说明)系统主要用于从一个文件夹读入学生信息(101 张三 85 78 87102 李斯 57 59 60 103 王红 84 79 87104 赵子龙 72 75 76 105 李洪磊 88 98 89),包括学生学号、姓名、成绩(数学、英语、数据库),程序中引用了八个函数 void Cscore(int); voi

    2、d Rank(int ave); void Listnumber(int i); void Listscore(int i); void Lookup(int); void Alter(int); void Dele(int &i); void Insert(int &i); 系统主要实现的功能有:查询、修改、删除、插入、成绩单(以学号排名)和成绩单(以名次排名)。 Cscore 函数主要是对学生进行排名。具有相同总分的学生具有相同的名次,例如:第三名和第四名具有相同的总分则在表中不会出现第四名,将出现两个第三名紧接着出现第五名学生的情况。Rank 函数主要用于按平均分对学生进行备注。把学生分

    3、为四个等级:90分为excellent,8090分为medium,6080分为qualified,60分为disqualified。Listnumber 函数主要用于把学生的信息(学号 姓名 数学 英语 数据库 总分 平均分 名次 备注)以学号排名的顺序用表的形式输出,方便学生查看。Listnumber 函数中还调用了Cscore 和Rank 函数。Listscore 函数是把学生的信息以总成绩排名的形式输出。Lookup 函数主要运用学号或姓名形式查询单个学生信息,如果存在则输出该学生信息(学号 姓名 数学 英语 数据库 总分 平均分 名次 备注),否则输出“Input message is

    4、 error.”。Alter 函数是修改指定学号的学生信息。主要用于修改指定学号学生的各科成绩并输出修改后的学生信息(学号 姓名 数学 英语 数据库 总分 平均分 名次 备注)。Delete 函数用于删除指定学生的信息。可用两种方式删除:以学号形式删除学生信息,以姓名形式删除学生信息。若要删除了学生不存在则输出“message error.”。Insert 函数用来插入学生的信息,一次调用Insert 函数可以添加多个学生的信息。Insert 函数中还调用了Cscore 和Rank 函数。3.涉及的主要知识点说明 (1)系统主要运用了函数的声明、定义、调用(值调用和地址调用)。(2) 对文件的

    5、读入操作。(3) 在平均分的求取上采用四舍五入的方式,运用了类型转换。(4) 多次运用if和for嵌套,在for嵌套中又运用了break语句。(5) 运用了switch。(6) 对字符数组的比较中运用了strcmp,还运用toupper把小写字母转换成大写。(7) 对学生信息进行的插入和有序删除操作。(8) 运用iomanip对输出进行美观。4. 创新性说明(怎么解决) 创新性:系统可以对具有相同总分学生的学生输出相同的名次。若存在三个相同的分数都为第二名,则在输出时出现三个第二名不会出现第三、四名,紧接着出现第五名。 解决方法:(1)用一个数组记录具有相同分数的人数,数组下标和学生信息所具有

    6、的下标相同;(2)删除相同的总分只保留其中一个分数;(3)对删除相同总分的分数按从高到底进行排序;(4)对各个学生的总分进行排名。5. 源代码/*/Student achievement program/This program has eight functions of students grade,including list/score ranking,lookup,alter,delete,insert and rank.From the file read in/student achievement.Scores of people have the same same plac

    7、e./*#include#include#include#include#include#includevoid Cscore(int);void Rank(int ave);void Listnumber(int i);void Listscore(int i);void Lookup(int);void Alter(int);void Dele(int &i);void Insert(int &i);using namespace std;const int MAX=100;struct student /定义学生信息结构体int num;char name8;int math;int e

    8、nglish;int database;int sum;int average;int score;stuMAX;int main() /主函数int i,k;char ch;string filename;ifstream infile;coutfilename;infile.open(filename.c_str();if (!infile)coutCant open the input file.endl;return 1;for (i=0; istui.numstui.namestui.mathstui.englishstui.database; stui.sum=stui.math+

    9、stui.english+stui.database; stui.average=int(float(stui.sum)/3+0.5);i=i-1; coutendlWelcome to 学生成绩管理系统 endl; coutY or N 进入菜单栏 ch; ch=toupper(ch); while (ch=Y) coutendl 菜单:endl 1)查 询endl 2)修 改endl 3)删 除endl 4)插 入endl 5)成绩单(以学号排名)endl 6)成绩单(以名次排名)endl; cout*请选择 1-4 中任何一个:k; coutendl; switch (k) case 1

    10、:Lookup(i);break; case 2:Alter(i);break; case 3:Dele(i);break; case 4:Insert(i);break;case 5:Listnumber(i);break;case 6:Listscore(i);break; default :couterror input!endl; coutendl继续选择 Y or N ?ch; ch=toupper(ch); coutThank you for using!endl Bye bye !endl;infile.close();return 0; /end mainvoid Cscore

    11、(int i) /对学生分数进行排名int hMAX,bMAX,scoreMAX+1,n,k,j;int sum0MAX,s;n=i;for (j=0; ji; j+)sum0j=stuj.sum;for (j=0; ji; j+)hj=0;for (k=0; ki; k+)if (sum0j=sum0k)hj+; /具有同一分数的人数 /end for /end forfor (j=0; ji; j+) /删除多个同一分数只保留其中一个分数for(k=j+1; ki; k+)if(sum0j=sum0k)sum0k=sum0i-1;i-;k-; /end forfor (j=0; ji; j

    12、+) /按从高到底的顺序对总分进行排名for (k=j+1; ki; k+)if (sum0jsum0k)s=sum0j;sum0j=sum0k;sum0k=s; /end if /end for /end forb0=0;score0=1;for (j=0; ji; j+) /对学生成绩进行排名for(k=0; k=90)cout=80)cout=60) coutqualified; else coutdisqualified; coutendl;void Listnumber(int i)int j;Cscore(i);cout学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 en

    13、dl;for (j=0; ji; j+) coutsetw(1)stuj.numsetw(9)stuj.namesetw(4)stuj.mathsetw(6)stuj.englishsetw(6)stuj.database;coutsetw(8)stuj.sumsetw(7)stuj.average;coutsetw(7);coutstuj.score ;Rank(stuj.average);void Listscore(int i)int j,k;Cscore(i);cout学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 endl;for (j=1; ji+1; j+)for (k

    14、=0; ki; k+)if(stuk.score=j)coutsetw(1)stuk.numsetw(9)stuk.namesetw(4)stuk.mathsetw(6) stuk.englishsetw(6)stuk.database; coutsetw(8)stuk.sumsetw(7)stuk.average; coutsetw(7); coutstuk.score ; Rank(stuk.average);void Lookup(int i) /运用学号或姓名形式查询单个学生信息int j,k,n,numb;char name18; coutPlease select you chec

    15、k score ways.endl;cout1 is use number,0 is use name.n;if (n) /以学号形式查询学生信息coutnumb;for (j=0;ji;j+)if (numb=stuj.num)k=j; break;else /以姓名形式查询学生信息coutname1;for (j=0;ji;j+)if (strcmp(stuj.name,name1)=0)k=j;break;if (k=MAX) coutInput message is error.endl;else /如果学生存在则输出学生信息Cscore(i);cout学号 姓名 数学 英语 数据库

    16、总分 平均分 名次 备注 endl;coutsetw(1)stuj.numsetw(9)stuj.namesetw(4)stuj.mathsetw(6)stuj.englishsetw(6)stuj.database;coutsetw(8)stuj.sumsetw(7)stuj.average; coutsetw(7);coutstuj.score ;Rank(stuj.average);void Alter(int i) /修改指定学号的学生信息int numb,j; coutalter begin.endl; coutnumb; for (j=0;ji;j+) if (numb=stuj.

    17、num) coutfind out:endl; cout学号:stuj.num 姓名:stuj.nameendl; coutPlease input new result: 数学 英语 数据库 stuj.mathstuj.englishstuj.database; stuj.sum=stuj.math+stuj.english+stuj.database; stuj.average=int(float(stuj.sum)/3.0+0.5); Cscore(i); /输出修改后该学号学生的信息 cout学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 endl; coutsetw(1)s

    18、tuj.numsetw(9)stuj.namesetw(4)stuj.mathsetw(6)stuj.englishsetw(6)stuj.database; coutsetw(8)stuj.sumsetw(7)stuj.average; coutsetw(7); coutstuj.score ; Rank(stuj.average); break; void Dele(int &i) /删除指定学生的信息int numb,j,k;char name08;coutdelete begin.endl;coutPlease select:endl; cout 1以学号形式删除学生信息endl;co

    19、ut 0以姓名形式删除学生信息k;if (k) /以学号形式删除学生的信息coutnumb;for (j=0;ji;j+)if (numb=stuj.num)break;else /以姓名形式删除学生的信息coutname0;for (j=0;ji;j+)if (strcmp(name0,stuj.name)=0)break;if (ji)for(; ji-1; j+)stuj.num=stuj+1.num; strcpy(stuj.name,stuj+1.name); stuj.math=stuj+1.math; stuj.english=stuj+1.english; stuj.datab

    20、ase=stuj+1.database; stuj.sum=stuj+1.sum; stuj.average=stuj+1.average;i=i-1;Cscore(i);elsecoutmessage error.endl;void Insert(int &i) /插入学生的信息int j,n;coutinsert begin.endl;coutn;i=i+n;coutPlease input insert message.form:endl;cout学号 姓名 数学 英语 数据库 endl;for (j=i-n; jstuj.numstuj.namestuj.mathstuj.englis

    21、hstuj.database; stuj.sum=stuj.math+stuj.english+stuj.database; stuj.average=int(float(stuj.sum)/3.0+0.5);Cscore(i);cout学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 endl;for (j=i-n; ji; j+) coutsetw(1)stuj.numsetw(9)stuj.namesetw(4)stuj.mathsetw(6)stuj.englishsetw(6)stuj.database;coutsetw(8)stuj.sumsetw(7)stuj.average;coutsetw(7);coutstuj.score ;Rank(stuj.average);6. 运行结果与分析运行结果:分析: 系统基本上能实现对成绩的查询、修改、删除、插入、成绩单(以学号排名)和成绩单(以名次排名)等功能,并且可以插入多个学生的信息。但在插入学生后未不能成绩单以学号排名的形式输出。为了改进程序对Inser


    注意事项

    本文(学生成绩管理系统C++程序设计.doc)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开