学生成绩管理系统C++程序设计(19页).doc
《学生成绩管理系统C++程序设计(19页).doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统C++程序设计(19页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-项目设计题目(学生成绩管理系统)学号: 姓名: 自评成绩: 成绩: 1.选题意义、依据 学生成绩系统的设计从学生的应用中而来,学生了解该系统的组成和运行过程,它贴近学生的生活能使学生更加方便的使用各个语句、函数、结构体等。 依据学生期末成绩表的格式。2.系统功能设计与分析(功能模块说明)系统主要用于从一个文件夹读入学生信息(101 张三 85 78 87102 李斯 57 59 60 103 王红 84 79 87104 赵子龙 72 75 76 105 李洪磊 88 98 89),包括学生学号、姓名、成绩(数学、英语、数据库),程序中引用了八个函数 void Cscore(int); vo
2、id 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 i
4、s 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 pla
7、ce./*#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
8、english;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
10、1: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 Cscor
11、e(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;
12、j+) /按从高到底的顺序对总分进行排名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学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 C+ 程序设计 19
限制150内