博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构课程设计论文--学生信息管理系统
阅读量:4460 次
发布时间:2019-06-08

本文共 10364 字,大约阅读时间需要 34 分钟。

数据结构课程设计论文--学生信息管理系统

 

1.学生成绩分析问题

1)问题描述。录入并保存一个班级学生多门课程的成绩,并对成绩进行分析。

2)基本要求。a)通过键盘输入各学生的多门课程的成绩,建立相应的文件input.datb)对文件input.dat中的数据进行处理,要求具有如下功能:按各门课程成绩排序,并生成相应的文件输出;计算每个人的平均成绩,按平均成绩排序,并生成文件;求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数;根据姓名或学号查询某人的各门课成绩。c)使用Visual C++ 6. 0控制台应用程序开发,界面美观。

3)测试数据,如下图所示。

学号

姓名

数学

英语

计算机

01

王芳

78

77

90

02

张强

89

67

88

03

李浩

56

66

78

04

黄鹏

89

86

85

05

尚校

67

88

76

06

赵鹏

45

54

67

07

蒋泽

78

76

70

2.程序结构及清单

1 程序结构及清单   2 2.1.1  头文件  3 #define NUM1 30   4 class Students  5 {  6 public:  7     Students(char *sNane, int cNumber,int sMath,int sEnglish,int sComputer);  8     Students()  9     {} 10     ~Students() 11     {} 12     char* GetName(); 13     void SetName(char* sName);//获取姓名 14      int GetNumber(); 15     void SetNumber(int sNumber);//获取学号 16     int GetMath(); 17     void SetMath(int sMath);//获取数学成绩 18     int GetEnglish(); 19     void SetEnglish(int sEnglish);//获取英语成绩 20    int GetComputer(); 21     void SetComputer(int sComputer);//获取计算机成绩 22     void disply(Students &st1); 23     //void WriterData(); 24     //void DeleteData(int icount); 25     //void GetStudentsFromFile(int icount);//数据库接口 26 protected: 27     char Name[NUM1]; 28     int Number; 29     int  Math; 30     int English; 31     int Computer; 32 }; 33 2.1.2  公共函数 34 #include "stuends.h" 35 #include
36 #include
37 #include
38 #include
39 using namespace std; 40 41 Students::Students(char *sName,int sNumber,int sMath,int sEnglish,int sComputer) 42 { 43 strncpy(Name,sName,NUM1); 44 Number=sNumber; 45 Math=sMath; 46 English=sEnglish; 47 Computer=sComputer; 48 } 49 char* Students::GetName() 50 { 51 return Name; 52 } 53 int Students::GetNumber() 54 { 55 return Number; 56 } 57 int Students::GetMath() 58 { 59 return Math; 60 } 61 int Students::GetEnglish() 62 { 63 return English; 64 } 65 int Students::GetComputer() 66 { 67 return Computer; 68 } 69 void Students::SetName(char* sName) 70 { 71 strncpy(Name,sName,NUM1); 72 } 73 void Students::SetNumber(int sNumber) 74 { 75 Number=sNumber; 76 } 77 void Students::SetMath(int sMath) 78 { 79 Math=sMath; 80 } 81 void Students::SetEnglish(int sEnglish) 82 { 83 English=sEnglish; 84 } 85 void Students::SetComputer(int sComputer) 86 { 87 Computer=sComputer; 88 } 89 void Students::disply(Students &st1) 90 { 91 cout<
<<" "<<"0"<
<<" "<
<<" "<
<<" "<
<
97 #include
98 99 #include
100 #include
101 #include
102 #include
103 using namespace std;104 105 Students st1[20];106 int mm;107 int addmain()108 {109 cout<<"请输入要添加的学生成绩记录的个数"<
>mm;111 for(int i=0;i
>aName>>aNumber>>aMath>>aEnglish>>aComputer;121 Students st(aName,aNumber,aMath,aEnglish,aComputer);122 st1[i]=st;123 cout<<"添加的记录为:"<
>num;135 for(int j=0;j
>aName>>aNumber>>aMath>>aEnglish>>aComputer;148 Students st3(aName,aNumber,aMath,aEnglish,aComputer);149 st1[j]=st3;150 st1[j].disply(st1[j]);151 return;152 }153 }154 cout<<"未找到相应的学生的成绩"<
>num;161 for(int j=0;j
>num;190 for(int j=0;j
max[i2])261 {262 int temp;263 temp=max[i];264 max[i]=max[i2];265 max[i2]=temp;266 }267 }268 }//总成绩排序269 void highall()270 {271 temp();272 cout<<"最高总分为:"<
<<"分"<
maxM[i2])287 {288 int temp;289 temp=maxM[i];290 maxM[i]=maxM[i2];291 maxM[i2]=temp;292 }293 }294 }//数学成绩排序295 void highallM()296 {297 tempM();298 cout<<"最高数学成绩为:"<
<<"分"<
maxE[i2])313 {314 int temp;315 temp=maxE[i];316 maxE[i]=maxE[i2];317 maxE[i2]=temp;318 }319 }320 }//英语成绩排序321 void highallE()322 {323 tempE();324 cout<<"最高英语成绩为:"<
<<"分"<
maxC[i2])339 {340 int temp;341 temp=maxC[i];342 maxC[i]=maxC[i2];343 maxC[i2]=temp;344 }345 }346 }//计算机成绩排序347 void highallC()348 {349 tempC();350 cout<<"最高计算级成绩为:"<
<<"分"<
st1[i2].GetNumber())363 {364 Students temp;365 temp=st1[i1];366 st1[i1]=st1[i2];367 st1[i2]=temp;368 }369 }370 cout<<"按学号排列为:"<
90)397 {398 count++;399 }400 }401 cout<<"数学成绩大于90分的有"<
<<"人"<
79 &&st1[i].GetMath()<90)409 {410 count++;411 }412 }413 cout<<"数学成绩在80-89分的有"<
<<"人"<
69 &&st1[i].GetMath()<80)421 {422 count++;423 }424 }425 cout<<"数学成绩在70-79分的有"<
<<"人"<
59 &&st1[i].GetMath()<70)433 {434 count++;435 }436 }437 cout<<"数学成绩在60-69分的有"<
<<"人"<
90)457 {458 count++;459 }460 }461 cout<<"计算机成绩大于90分的有"<
<<"人"<
79 &&st1[i].GetComputer()<90)469 {470 count++;471 }472 }473 cout<<"计算机成绩在80-89分的有"<
<<"人"<
69 &&st1[i].GetComputer()<80)481 {482 count++;483 }484 }485 cout<<"计算机成绩在70-79分的有"<
<<"人"<
59 &&st1[i].GetComputer()<70)493 {494 count++;495 }496 }497 cout<<"计算机成绩在60-69分的有"<
<<"人"<
90)517 {518 count++;519 }520 }521 cout<<"英语成绩大于90分的有"<
<<"人"<
79 &&st1[i].GetEnglish()<90)529 {530 count++;531 }532 }533 cout<<"英语成绩在80-89分的有"<
<<"人"<
69 &&st1[i].GetEnglish()<80)541 {542 count++;543 }544 }545 cout<<"英语成绩在70-79分的有"<
<<"人"<
59 &&st1[i].GetEnglish()<70)553 {554 count++;555 }556 }557 cout<<"英语成绩在60-69分的有"<
<<"人"<
90)577 {578 count++;579 }580 }581 cout<<"平均成绩大于90分的有"<
<<"人"<
79 &&aa<90)590 {591 count++;592 }593 }594 cout<<"平均成绩在80-89分的有"<
<<"人"<
69 && aa<80)603 {604 count++;605 }606 }607 cout<<"平均成绩在70-79分的有"<
<<"人"<
59 && aa<70)616 {617 count++;618 }619 }620 cout<<"平均成绩在60-69分的有"<
<<"人"<
>xun;641 if(xun==1)642 {643 displayall();644 }645 else if(xun==2)646 {647 chaxun();648 }649 system("pause");650 }651 void mainloop2()652 {653 addmain();654 system("pause");655 }656 void mainloop3()657 {658 miodefy();659 system("pause");660 }661 void mainloop4()662 {663 deletea();664 system("pause");665 }666 void mainloop5()667 {668 avgs();669 system("pause");670 }671 void mainloop6()672 {673 cout<<"输入 1:查看数学平均成绩"<
>m;679 if(m==1)680 {681 avgcm();682 }683 else if(m==2)684 {685 avgcE();686 }687 else if(m==3)688 {689 avgcc();690 }691 else if(m==4)692 {693 avgca();694 }695 system("pause");696 }697 void mainloop7()698 {699 cout<<"输入 1:查看数学最高成绩"<
>m;705 if(m==1)706 {707 highallM();708 }709 else if(m==2)710 {711 highallE();712 }713 else if(m==3)714 {715 highallC();716 }717 else if(m==4)718 {719 highall();720 }721 system("pause");722 }723 void mainloop8()724 {725 cout<<"输入 1:查看数学最低成绩"<
>m;731 if(m==1)732 {733 lowallM();734 }735 else if(m==2)736 {737 lowallE();738 }739 else if(m==3)740 {741 lowallC();742 }743 else if(m==4)744 {745 lowall();746 }747 system("pause");748 }749 void mainloop9()750 {751 cout<<"输入 1:查看不及格人数"<
>i1;758 if(i1==1)759 {760 cout<<"输入 1:查看数学在此范围内人数"<
>jj;766 if(jj==1)767 {768 coun1M();769 }770 else if(jj==2)771 {772 coun1E();773 }774 else if(jj==3)775 {776 coun1C();777 }778 else if(jj==4)779 {780 coun1Z();781 }782 }783 else if(i1==2)784 {785 cout<<"输入 1:查看数学在此范围内人数"<
>jj;791 if(jj==1)792 {793 coun2M();794 }795 else if(jj==2)796 {797 coun2E();798 }799 else if(jj==3)800 {801 coun2C();802 }803 else if(jj==4)804 {805 coun2Z();806 }807 }808 else if(i1==3)809 {810 cout<<"输入 1:查看数学在此范围内人数"<
>jj;816 if(jj==1)817 {818 coun3M();819 }820 else if(jj==2)821 {822 coun3E();823 }824 else if(jj==3)825 {826 coun3C();827 }828 else if(jj==4)829 {830 coun3Z();831 }832 }833 else if(i1==4)834 {835 cout<<"输入 1:查看数学在此范围内人数"<
>jj;841 if(jj==1)842 {843 coun4M();844 }845 else if(jj==2)846 {847 coun4E();848 }849 else if(jj==3)850 {851 coun4C();852 }853 else if(jj==4)854 {855 coun4Z();856 }857 }858 else if(i1==5)859 {860 cout<<"输入 1:查看数学在此范围内人数"<
>jj;866 if(jj==1)867 {868 coun5M();869 }870 else if(jj==2)871 {872 coun5E();873 }874 else if(jj==3)875 {876 coun5C();877 }878 else if(jj==4)879 {880 coun5Z();881 }882 }883 system("pause");884 }885 void mainloop10()886 {887 sortchengji();888 system("pause");889 }890 2.1.5 主窗体设计及主函数891 void SetScreenGrid()892 {893 //char sysSetBuf[80];894 //sprintf(sysSetBuf,"mode con cols=%d line=%d " ,CMD_COLS,CMD_LINES);895 //system(sysSetBuf);896 system("color 5");897 }//设置显示信息的行数,列数和背景颜色等信息898 int mainlook()899 {900 SetScreenGrid();901 int c;902 do 903 { 904 //设置字体为绿色905 system("cls");906 cout<
>c;923 switch(c) 924 { 925 case 1: system("cls");mainloop1(); break; 926 case 2:system("cls");mainloop2();break; 927 case 3: system("cls");mainloop3();break; 928 case 4: system("cls");mainloop4(); break; 929 case 5: system("cls");mainloop5(); break;930 case 6: system("cls");mainloop6(); break;931 case 7: system("cls");mainloop7(); break;932 case 8: system("cls");mainloop8(); break;933 case 9:system("cls");mainloop9();break;934 case 10:system("cls");mainloop10();break;935 default: break;936 } 937 }while(c!=0); 938 return 0;939 }940 int main()941 {942 mainlook();943 return 0;944 }

3.程序功能展示

4.算法描述

1. 设置公共类students,设置姓名Name,学号Number,数学成绩Math,英语成绩English,计算机成绩Computer,四个属性来存储学生成绩记录。

2.公共类设置15个函数来获取信息与成绩及初始化。

1) Students(char *sNane, int cNumber,int sMath,int sEnglish,int sComputer);

2)  Students()

3)  {}

4)  ~Students()

5)  {}

6)  char* GetName();

7)  void SetName(char* sName);//获取姓名

8)      int GetNumber();

9)  void SetNumber(int sNumber);//获取学号

10)  int GetMath();

11)  void SetMath(int sMath);//获取数学成绩

12)  int GetEnglish();

13)  void SetEnglish(int sEnglish);//获取英语成绩

14)    int GetComputer();

15)     void SetComputer(int sComputer);//获取计算机成绩

3.功能函数。

1) 添加修改成绩功能。

2) 初始化一个对象数组,采用带参数的构造函数初始化记录,完成学生信息的添加,修改功能。

3) 2,删除学生成绩功能。

4) 设置计数器,与学号关联,查询到要删去的学号,去掉该学生的成绩,其他的成绩依次向前移动一位,学生成绩总数减一位。

5) 排序,最低最高成绩功能。

6) 进行学生成绩的排序,对象数组下标为0的是最低成绩,为计数器数字减一的是最高成绩。

7) 各个分数段人数。

8)  进行简单的筛选,外加计数器。

4.排序采用简单的冒泡排序,时间复杂度为O(n)

5.菜单设计。

函数工能组合后,为mainloop1-10,为了能进行多次功能选择,采用永真的while(1)循环,只有当判断条件(c==0)满足时退出系统。

循环中采用switchcase结构方便进行选择。

6.主窗体设计。

    采用system(“cls”)函数调动DOS下的清屏功能,system("color 5")进行文字背景颜色选择功能,使界面看起来美观。

使用system("pause")函数,是程序暂停,给使用者以选择的时间。

5.界面展示

6.  开发难点及解决技巧

1.使各个功能能够持续不断地进行,而不丢失已经录入的数据。

   设置一个全局变量的对象数组,每个函数对数组进行操作。

2.菜单设置每次单个功能完成后能再次回到菜单继续执行命令,以及程 序的退出。

为了能进行多次功能选择,采用永真的while(1)循环,只有当判断          条件(c==0)满足时退出系统。

循环中采用switchcase结构方便进行选择。

3.功能执行时,没有给以选择时间,程序闪退。

使用system("pause")函数,是程序暂停,给使用者以选择的时间。

4.快速设置改变背景色,样式,标题,等格式。

  采用system(“cls”)系列的函数,调用系统命令,快速改变样式。

例如:

sprintf(sysSetBuf,"mode con cols=%d line=%d  " ,CMD_COLS,CMD_LINES); 

 system(sysSetBuf);

system("color 5");

7.小节

     实验过程中学到了不少的知识,例如如何设置菜单,改界面,完一个简单的数据的增删改查的功能,以及简单的从文件中读取 数据的操作,对文件中的数据进行操作。

 了解了做一个项目的大致的流程。感觉总体功能做的可以了,也设 置了一个简单的界面。

 从文件中读入,写入数据可以采用文件的输入输出流。例如:

#include
#include
using namespace std;int main(){ofstream fout;fout.open("output.txt");fout << "Here is a number: " << "/n";fout << "Now here is a string: " << "/n";fout << flush;fout.close();ifstream fin("input.txt");return 0;}

   时间紧急没有来的及完成。

 

转载于:https://www.cnblogs.com/chance88/p/4631055.html

你可能感兴趣的文章
eclipse 导入android工程后找不到R资源
查看>>
室内装修
查看>>
《nginx源代码解析》系列分享专栏
查看>>
2-01 ASCII码与二进制转
查看>>
3-04函数-默认参数
查看>>
vs 编译error1083
查看>>
re 正则模块
查看>>
PHP实用代码片段(二)
查看>>
按时间分区自动建分区表
查看>>
centos7安装golang
查看>>
Go VUE --- vuejs在服务器部署?
查看>>
各种排序算法原理图
查看>>
ASP.NET Core Middleware管道介绍
查看>>
SQL 外键
查看>>
二叉树的三种非递归遍历和层次遍历
查看>>
centos7 update network time
查看>>
装饰模式
查看>>
苹果新的编程语言 Swift 语言进阶(十一)--实例的初始化与类的析构
查看>>
node.js整理 03文件操作-遍历目录和文本编码
查看>>
mysql字段累加concat
查看>>