学生成绩管理系统报告_第1页
学生成绩管理系统报告_第2页
学生成绩管理系统报告_第3页
学生成绩管理系统报告_第4页
学生成绩管理系统报告_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、课 程 设 计 报 告 题 目: 学生成绩管理系统 系 别: 电子信息与电气工程系 专 业: 电子信息工程 成 绩:_ 2015 年 6 月 19 日 学生成绩管理系统简介 本课程设计主要解决学生成绩管理问题。使用计算机进行信息管理,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性.学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用Visual C+,程序运行平台为Windows XP。在程序设计中,采用了面向对象解决问题的方法。程

2、序通过调试运行,初步实现了设计目标。1.系统需求分析.1.1 功能需求分析录入数据。显示数据。按总成绩、姓名和学号查询。按各科科目进行修改。按各科成绩进行排名。数据的保存。数据的调用。按各科成绩进行统计。各科成绩的排序。1.2 系统总体结构设计2.模型设计3.运行界面打开程序,进入登陆界面输入默认密码,进入主菜单选择功能1,进入输入模块;开始输入数据,如下图所示;返回主菜单,选择功能2,显示结果为:选择功能3,进入删除模块,输入要删除的学生的序号;选择功能4,进入排序模块,选择1,按语文排序,再选择6,返回主菜单,并选择2显示按语文排序结果:选择功能5,进入查询模块,界面如下再输入1,按学号查

3、询,输入要查询的学生的学号,显示如下:再返回主菜单,选择功能6,输入要修改学生的姓名,按提示输入,如下图所示:修改后显示结果:保存数据,然后退出;再次进入系统,运行功能8调用,显示后结果为:使用功能9,按语文分数统计如下:按4返回主菜单,再按0退出系统。4.系统实现4.1主模块 main()模块功能: 选择一个功能号执行相应的功能。输入输出: 系统模块,暂不考虑模块级别的输入输出,输入输出在内部完成形式:int main()归属:ScoreManagerMain设计思路: 首先选择功能号,选择要执行的功能,通过对自定义模块的调用,再进行程序的运行。算法步骤: 利用死循环进行模块的循环,选择不同

4、的功能号,则进行相应的功能。模块代码:#include <iostream.h>#include <stdlib.h>#include "Menu.h"#include <stdio.h>#include "ScoreManager.h"#include"Score.h"#define N 40#include<string.h>#include<conio.h>int main()system("color 5B");/设置控制台颜色 system(&q

5、uot;cls");system("title 学生成绩管理系统-登陆界面");char passWord10; char ch; int i,j; for(i=1;i<=3;i+) cout<<"密码初始化完成!(默认密码为:123456)"<<endl; printf("请输入密码:"); j=0; while(j<10&&(ch=getch()!='r') passWordj+=ch; putchar('*'); passWordj=&

6、#39;0' if(strcmp(passWord,"123456")=0) system("cls"); printf("nnn"); printf("tt|*|n"); printf("tt| |n"); printf("tt| |n"); printf("tt| 欢迎使用学生成绩管理系统 |n"); printf("tt| |n"); printf("tt| |n"); printf("tt|

7、*|n"); cout<<"请按任意键进入主菜单"<<endl; getch(); break; else printf("ntt密码错误,请重新输入!n"); if(i>3) printf("ntt密码已经输入3次,您无权使用,请退出!n"); getch(); exit(0); system("cls"); int num=0; Score scoreAllN; l:while(1) system("title 学生成绩管理系统-主菜单");switc

8、h(choiceMenu() case 1:system("cls"); system("title 学生成绩管理系统-输入模块");inputScore(scoreAll,N,&num); system("cls");break; case 2:system("title 学生成绩管理系统-显示模块"); displayScore(scoreAll,N,num);break; case 3:system("cls");system("title 学生成绩管理系统-删除模块&q

9、uot;);cout<<"请输入要删除的序号:" delScore(scoreAll,N,&num);break; case 4:system("cls");system("title 学生成绩管理系统-排序模块"); while(1) switch(sortMenu() case 1: sortScoreByCh(scoreAll,N,num); displayScore(scoreAll,N,num); break; case 2: sortScoreByEn(scoreAll,N,num); displayS

10、core(scoreAll,N,num); break; case 3: sortScoreByMa(scoreAll,N,num); displayScore(scoreAll,N,num); break; case 4: sortScoreBySum(scoreAll,N,num); displayScore(scoreAll,N,num); break; case 5: sortScoreByAve(scoreAll,N,num); displayScore(scoreAll,N,num); break; case 6: system("cls"); goto l;

11、break; case 5:system("cls");system("title 学生成绩管理系统-查询模块"); while(1) switch(queueMenu() case 1: queueScoreByXh(scoreAll,N,num); break; case 2: queueScoreByXm(scoreAll,N,num); break; case 3: queueScoreBySum(scoreAll,N,num); break; case 4: system("cls"); goto l; break; cas

12、e 6:system("cls");system("title 学生成绩管理系统-修改模块");while(1) switch(modifyMenu() case 1: modifyChScore(scoreAll,N,num); break; case 2: modifyEnScore(scoreAll,N,num); break; case 3: modifyMaScore(scoreAll,N,num); break; case 4: system("cls"); goto l; break; break; case 7:sys

13、tem("title 学生成绩管理系统-保存"); saveScoreTXT(scoreAll,N,num);break; case 8:system("title 学生成绩管理系统-调用"); loadScoreTXT(scoreAll,N,&num);break; case 9:system("cls"); system("title 学生成绩管理系统-统计模块");while(1) switch(statisMenu() case 1: statisScoreByCh(scoreAll,N,num);

14、 break; case 2: statisScoreByEn(scoreAll,N,num); break; case 3: statisScoreByMa(scoreAll,N,num); break; case 4: system("cls"); goto l; break; break; case 0:system("title 学生成绩管理系统-退出界面"); outsystem();system("color 5B");return 0; default: cout<<"出错" return

15、 0; 4.2菜单操作4.2.1主菜单模块choiceMenu模块功能:通过调用菜单menu()实现菜单的输出,利用switch()语句实现各函数的调用.输入输出:形式:int choiceMenu(void)归属:Menu设计思路: 先输出显示菜单中的内容(即各个选项值),再输入一个整数,最后返回此整数。算法步骤: 模块代码:int choiceMenu(void)cout<<"请输入功能号:"int choice;printf("nnnttttn");printf("tttt 学生成绩管理系统 n");printf(&

16、quot;ttttn");printf("tttt 1 增加学生记录 n");printf("ttttn");printf("tttt 2 显示学生记录 n");printf("ttttn");printf("tttt 3 删除学生记录 n");printf("ttttn");printf("tttt 4 学生信息排序 n");printf("ttttn");printf("tttt 5 查询学生成绩 n"

17、);printf("ttttn");printf("tttt 6 修改学生成绩 n");printf("ttttn");printf("tttt 7 保存学生信息 n");printf("ttttn");printf("tttt 8 调用学生信息 n");printf("ttttn");printf("tttt 9 统计学生信息 n");printf("ttttn");printf("tttt 0 退出系统

18、界面 n");printf("ttttn");cin>>choice;return choice; 4.2.2排序菜单模块sortMenu模块功能:通过调用菜单menu()实现菜单的输出,利用switch()语句实现各函数的调用.输入输出: 形式:int sortMenu(void)归属:Menu设计思路: 先输出显示菜单中的内容(即各个选项值),再输入一个整数,最后返回此整数。算法步骤: 模块代码:int sortMenu(void)cout<<"请输入功能号:"int choice;printf("nnnt

19、tttn");printf("tttt 以什么方式排序学生信息 n");printf("ttttn");printf("tttt 1 按语文成绩排序 n");printf("ttttn");printf("tttt 2 按英语成绩排序 n");printf("ttttn");printf("tttt 3 按数学成绩排序 n");printf("ttttn");printf("tttt 4 按总分排序 n")

20、;printf("ttttn");printf("tttt 5 按平均分排序 n");printf("ttttn");printf("tttt 6 返回主菜单 n");printf("ttttn");cin>>choice;return choice;4.2.3查询菜单模块queueMenu模块功能:通过调用菜单menu()实现菜单的输出,利用switch()语句实现各函数的调用.输入输出:形式:int queueMenu(void)归属:Menu设计思路: 先输出显示菜单中的内容(

21、即各个选项值),再输入一个整数,最后返回此整数。算法步骤: 模块代码:int queueMenu(void) cout<<"请输入功能号:"int choice;printf("nnnttttn");printf("tttt 以什么方式查询学生信息 n");printf("ttttn");printf("tttt 1 按学号查询 n");printf("ttttn");printf("tttt 2 按姓名查询 n");printf("

22、ttttn");printf("tttt 3 按总分查询 n");printf("ttttn"); printf("tttt 4 返回主菜单 n");printf("ttttn");cin>>choice;return choice;4.2.4统计菜单模块statisMenu模块功能:通过调用菜单menu()实现菜单的输出,利用switch()语句实现各函数的调用.输入输出形式:int statisMenu(void)归属:Menu设计思路: 先输出显示菜单中的内容(即各个选项值),再输入一个

23、整数,最后返回此整数。算法步骤: 模块代码:int statisMenu(void) cout<<"请输入功能号:"int choice;printf("nnnttttn");printf("tttt 以什么方式统计学生信息? n");printf("ttttn");printf("tttt 1 按语文成绩统计 n");printf("ttttn");printf("tttt 2 按英语成绩统计 n");printf("ttttn&q

24、uot;);printf("tttt 3 按数学成绩统计 n");printf("ttttn"); printf("tttt 4 返回主菜单 n");printf("ttttn");cin>>choice;return choice;4.2.5修改菜单模块modifyMenu模块功能:通过调用菜单menu()实现菜单的输出,利用switch()语句实现各函数的调用.输入输出:形式:int modifyMenu(void)归属:Menu设计思路: 先输出显示菜单中的内容(即各个选项值),再输入一个整数,最

25、后返回此整数。算法步骤: 模块代码:int modifyMenu(void) cout<<"请输入功能号:"int choice;printf("nnnttttn");printf("tttt 要修改的科目成绩 n");printf("ttttn");printf("tttt 1 语文成绩 n");printf("ttttn");printf("tttt 2 英语成绩 n");printf("ttttn");printf(&

26、quot;tttt 3 数学成绩 n");printf("ttttn"); printf("tttt 4 返回主菜单 n");printf("ttttn");cin>>choice;return choice;4.3输入模块inputScore模块功能:进行数据录入输入输出:形式:void inputScore(Score*pScoreAll,int n,int*pNum)归属:ScoreManager设计思路:将结构体数组的头地址和数组长度,若实际输入人数等于n,停止输入,否则继续输入人数。算法步骤:第一步,判

27、断人数是否等于n,选择Y或者N。第二步,选择Y继续输入分数,选择N停止输入。模块代码:void inputScore(Score*pScoreAll,int n,int*pNum)if (*pNum=n)cout<<"对不起,人数已满"else cout<<"要输入数据吗?(y/n)"char choice; cin>>choice;while (choice='y')cout<<"请输入数据(学号/姓名/性别/语文分数,英语分数,数学分数):"<<endl;

28、cout<<"(注意:性别男用M表示,女W表示)"cin>>pScoreAll*pNum.fNo>>pScoreAll*pNum.fName>>pScoreAll*pNum.sex>>pScoreAll*pNum.fChinese>>pScoreAll*pNum.fEnglish>>pScoreAll*pNum.fMath;*pNum=*pNum+1; cout<<"要输入数据吗?(y/n)"cin>>choice;4.4显示模块displaySc

29、ore 模块功能:对输入数据进行显示。输入输出:形式:void displayScore(Score*pScoreAll,int n,int num)归属:ScoreManager设计思路:先显示序号,再显示学号,姓名,性别和各科分数。通过循环语句,对输入的所有数据进行输出。算法步骤:第一步:定义变量i,若i小于真实人数,输入第一个分数。第二步:令i递增,根据循环语句,对输入数据进行显示.模块代码:void displayScore(Score*pScoreAll,int n,int num)cout<<"t"<<"学生的分数显示结果如下:

30、"<<endl; c out<<"t"<<"*"<<endl;cout<<"t"<<"序号t"<<"学号t"<<"姓名t"<<"性别t"<<"语文t"<<"英语t"<<"数学t"<<"总分t"<<&qu

31、ot;平均分"<<endl;for (int i=0;i<=num-1;i+) pScoreAlli.sum=pScoreAlli.fChinese+pScoreAlli.fEnglish+pScoreAlli.fMath pScoreAlli.average=(pScoreAlli.fChinese+pScoreAlli.fEnglish+pScoreAlli.fMath)/3;cout<<"t"<<i+1<<"t"<<pScoreAlli.fNo<<"t

32、"<<pScoreAlli.fName<<"t"<<pScoreAlli.sex<<"t"<<pScoreAlli.fChinese<<"t"<<pScoreAlli.fEnglish<<"t"<<pScoreAlli.fMath<<"t"<<pScoreAlli.sum<<"t"<<pScoreAlli.ave

33、rage<<endl; cout<<"t"<<"*"<<endl; cout<<"t"<<"学生的分数显示结束"<<endl; 4.5删出模块delScore模块功能:对输入的某个数据进行删除。输入输出:形式:void delScore(Score*pScoreAll,int n,int*pNum)归属:ScoreManager设计思路:删除某个序号no,将no+1至NUM-1的所有内容前移一格。算法步骤:第一步:输入要删除的某个序

34、号。第二步:利用指针变量将删除的第i个数据赋值给第i-1个数据。即pScoreAlli-1=pScoreAlli;第三步:利用循环语句,将第i个数据后的所有数据都赋值给i-1个数据。模块代码:void delScore(Score*pScoreAll,int n,int*pNum) int no;cin>>no;for(int i=no;i<=*pNum-1;i+) pScoreAlli-1=pScoreAlli; (*pNum)-; system("cls"); 4.6查询功能 4.6.1学号查询模块queueScoreByXh模块功能:根据给定的学号,

35、显示查询到的人的所有信息。输入输出: 形式:void queueScoreByXh(Score*pScoreAll,int n,int num)归属:ScoreManager设计思路:输入所要查询的学号,比对所有学号,当一致时,显示该学号下的所有信息算法步骤:第一步:进入循环第二步:输入所需查询的学号t,判断是否pScoreAlli.fNo=t第三步:则显示pScoreAlli所有信息模块代码:void queueScoreByXh(Score*pScoreAll,int n,int num)char c; int t;doint flag1=0; cout<<"请输入你

36、要查询学生的学号是:"<<endl; cin>>t; for(int i=0;i<num;i+)if(pScoreAlli.fNo=t)flag1=1;cout<<"您要查询的学生是:"<<pScoreAlli.fName<<endl;cout<<"t"<<"*"<<endl;cout<<"t"<<"序号t"<<"学号t"<

37、<"姓名t"<<"性别t"<<"语文t"<<"英语t"<<"数学t"<<"总分t"<<"平均分"<<endl; cout<<"t"<<i+1<<"t"<<pScoreAlli.fNo<<"t"<<pScoreAlli.fName<&

38、lt;"t"<<pScoreAlli.sex<<"t"<<pScoreAlli.fChinese<<"t"<<pScoreAlli.fEnglish<<"t"<<pScoreAlli.fMath<<"t"<<pScoreAlli.sum<<"t"<<pScoreAlli.average<<endl;cout<<"

39、t"<<"*"<<endl;cout<<"此学生已查到!"<<endl;return ; if(flag1=0)cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"您想继续查询吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n')cout<<"指令错误!请重新输入!"

40、<<endl; cin>>c;while(c='y');4.6.2学生姓名查询模块queueScoreByXm模块功能:根据输入的学生,显示查询到的人的所有信息。输入输出: 形式:void queueScoreByXm(Score*pScoreAll,int n,int num)归属:ScoreManager设计思路:输入所要查询的学生姓名,比对所有学生姓名,当一致时,显示该学生姓名下的所有信息算法步骤:第一步:进入循环第二步:输入所需查询的学生姓名x,判断是否strcmp(x,pScoreAlli.fName)=0第三步:则显示pScoreAlli所有

41、信息模块代码:void queueScoreByXm(Score*pScoreAll,int n,int num)char c; char x20; doint flag=0; cout<<"请输入你要查询的学生姓名:"<<endl; cin>>x; for(int i=0;i<num;i+)if(strcmp(x,pScoreAlli.fName)=0)flag=1; cout<<"您要查询的学生是:"<<pScoreAlli.fName<<endl;cout<<

42、"t"<<"*"<<endl;cout<<"t"<<"序号t"<<"学号t"<<"姓名t"<<"性别t"<<"语文t"<<"英语t"<<"数学t"<<"总分t"<<"平均分"<<endl;cout<

43、<"t"<<i+1<<"t"<<pScoreAlli.fNo<<"t"<<pScoreAlli.fName<<"t"<<pScoreAlli.sex<<"t"<<pScoreAlli.fChinese<<"t"<<pScoreAlli.fEnglish<<"t"<<pScoreAlli.fMath

44、<<"t"<<pScoreAlli.sum<<"t"<<pScoreAlli.average<<endl;cout<<"t"<<"*"<<endl; cout<<"此学生已查到!"<<endl;return ; if(flag=0)cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"您想继

45、续查询吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n')cout<<"指令错误!请重新输入!"<<endl; cin>>c;while(c='y');4.6.3总成绩查询模块queueScoreBySum模块功能:根据输入的总成绩,显示查询到的人的所有信息。输入输出: 形式:void queueScoreBySum (Score*pScoreAll,int n,int num)归属:ScoreManager设

46、计思路:输入所要查询的总成绩,比对所有总成绩,当一致时,显示该总成绩下的所有信息算法步骤:第一步:进入循环第二步:输入所需查询的总成绩t,判断是否pScoreAlli.sum=t第三步:则显示pScoreAlli所有信息模块代码:void queueScoreBySum(Score*pScoreAll,int n,int num)char c; double t; doint flag1=0; cout<<"请输入你要查询学生的总成绩:"<<endl; cin>>t; for(int i=0;i<num;i+)if(pScoreAl

47、li.sum=t)flag1=1;cout<<"您要查询的学生是:"<<pScoreAlli.fName<<endl;cout<<"t"<<"*"<<endl;cout<<"t"<<"序号t"<<"学号t"<<"姓名t"<<"性别t"<<"语文t"<<"

48、英语t"<<"数学t"<<"总分t"<<"平均分"<<endl; cout<<"t"<<i+1<<"t"<<pScoreAlli.fNo<<"t"<<pScoreAlli.fName<<"t"<<pScoreAlli.sex<<"t"<<pScoreAlli.f

49、Chinese<<"t"<<pScoreAlli.fEnglish<<"t"<<pScoreAlli.fMath<<"t"<<pScoreAlli.sum<<"t"<<pScoreAlli.average<<endl;cout<<"t"<<"*"<<endl;cout<<"此学生已查到!"<<

50、;endl;return ; if(flag1=0)cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"您想继续查询吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n')cout<<"指令错误!请重新输入!"<<endl; cin>>c;while(c='y');4.7排序功能4.7.1按语文成绩排序模块sortScoreB

51、yCh模块功能: 按语文成绩排名:按照语文成绩从低到高排序。输入输出: 形式: void sortScoreByCh(Score*pScoreAll,int n,int num)归属: ScoreManager设计思路: 通过数组的前后比较,小者放前。轮i变化范围0,num-2,次变化范围i+1,num-1。算法步骤: sortScoreCh(pScoreAll,n)set i to 0while i<=num-2set j to i+1while j<=num-1if (pScoreAlli.fChinese>pScoreAllj.fChinese)swap pScoreAll j 模块代码:void sortScoreByCh(Score*pScoreAll,int n,int num)for (int i=0;i<=num-2;i+)for (int j=i+1;j<=num-1;j+)if (pScoreAlli.fChinese>pScoreAllj.fChinese)Score t;t=pScoreAlli;pScoreAlli=pScoreAllj;pScoreAllj=t;4.7.2按英语成绩排序模块sortScoreByEn模块功能: 按英语成绩排名:按照英语成绩从低到高排序。输入输出: 形式:

温馨提示

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

评论

0/150

提交评论