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

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

1.学生成绩分析问题

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

(2)基本要求。a)通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。b)对文件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<string>
 36 #include<fstream>
 37 #include<iostream>
 38 #include<iomanip>
 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<<st1.GetName()<<" "<<"0"<<st1.GetNumber()<<" "<<st1.GetMath()<<" "<<st1.GetEnglish()<<" "<<st1.GetComputer()<<endl;
 92 }
 93 2.1.3  功能函数
 94 #include "stuends.h"
 95 //成绩的修改
 96 #include<stdlib.h>
 97 #include<conio.h>
 98
 99 #include<string>
100 #include<fstream>
101 #include<iostream>
102 #include<iomanip>
103 using namespace std;
104
105     Students st1[20];
106     int mm;
107 int addmain()
108 {
109     cout<<"请输入要添加的学生成绩记录的个数"<<endl;
110     cin>>mm;
111     for(int i=0;i<mm;i++)
112     {
113         cout<<"正在添加第"<<i+1<<"个学生的成绩记录"<<endl;
114         char aName[NUM1];
115         int aNumber;
116         int  aMath;
117         int aEnglish;
118         int aComputer;
119         cout<<"请输入需要添加的学生的姓名、学号、数学成绩、英语成绩、计算机成绩"<<endl;
120         cin>>aName>>aNumber>>aMath>>aEnglish>>aComputer;
121         Students st(aName,aNumber,aMath,aEnglish,aComputer);
122         st1[i]=st;
123         cout<<"添加的记录为:"<<endl;
124         st1[i].disply(st1[i]);
125         cout<<endl;
126     }
127     cout<<"添加完成"<<endl;
128     return 0;
129 }//添加学生成绩记录
130 void miodefy()
131 {
132     int num;
133     cout<<"请输入要修改的学生成绩的学号"<<endl;
134     cin>>num;
135     for(int j=0;j<mm;j++)
136     {
137         if(st1[j].GetNumber()==num)
138         {
139             cout<<"要修改的学生的信息为"<<endl;
140             st1[j].disply(st1[j]);
141             char aName[NUM1];
142             int aNumber;
143             int  aMath;
144             int aEnglish;
145             int aComputer;
146             cout<<"请输入修改后的学生的姓名、学号、数学成绩、英语成绩、计算机成绩"<<endl;
147             cin>>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<<"未找到相应的学生的成绩"<<endl;
155 }//修改学生成绩记录
156 void deletea()
157 {
158     int num;
159     cout<<"请输入要删除的学生的学号"<<endl;
160     cin>>num;
161     for(int j=0;j<mm;j++)
162     {
163         if(st1[j].GetNumber()==num)
164         {
165             cout<<"要删除的学生的信息为"<<endl;
166             st1[j].disply(st1[j]);
167             for(int j1=j;j1<mm-1;j1++)
168             {
169                 st1[j1]=st1[j1+1];
170             }
171             mm--;
172             cout<<"删除完成"<<endl;
173             return ;
174         }
175     }
176     cout<<"未找到相应的学生的成绩"<<endl;
177 }
178 void displayall()
179 {
180     for(int i=0;i<mm;i++)
181     {
182         st1[i].disply(st1[i]);
183     }
184 }//全部信息
185 void chaxun()
186 {
187     int num;
188     cout<<"请输入要查询的学生成绩的学号"<<endl;
189     cin>>num;
190     for(int j=0;j<mm;j++)
191     {
192         if(st1[j].GetNumber()==num)
193         {
194             st1[j].disply(st1[j]);
195             return;
196         }
197     }
198     cout<<"未找到相应的学生的成绩"<<endl;
199 }//按学号查询成绩
200 void avgs()
201 {
202     double avg[20];
203     for(int i1=0;i1<mm;i1++)
204     {
205         avg[i1]=double((st1[i1].GetEnglish()+st1[i1].GetMath()+st1[i1].GetComputer())/3.0);
206         cout<<st1[i1].GetName()<<" "<<st1[i1].GetNumber()<<" "<<avg[i1]<<endl;
207     }
208 }//每人的平均成绩
209 void avgcm()
210 {
211     double avg=0;
212     for(int i2=0;i2<mm;i2++)
213     {
214         avg+=st1[i2].GetMath();
215     }
216     avg=avg/mm;
217     cout<<"数学成绩平均分为:"<<avg<<endl;
218 }//数学成绩平均分
219 void avgcE()
220 {
221     double avg=0;
222     for(int i2=0;i2<mm;i2++)
223     {
224         avg+=st1[i2].GetEnglish();
225     }
226     avg=avg/mm;
227     cout<<"英语成绩平均分为:"<<avg<<endl;
228 }//英语成绩平均分
229 void avgcc()
230 {
231     double avg=0;
232     for(int i2=0;i2<mm;i2++)
233     {
234         avg+=st1[i2].GetComputer();
235     }
236     avg=avg/mm;
237     cout<<"计算机成绩平均分为:"<<avg<<endl;
238 }//计算机成绩平均分
239 void avgca()
240 {
241     double avg=0;
242     for(int i2=0;i2<mm;i2++)
243     {
244         avg+=st1[i2].GetComputer()+st1[i2].GetEnglish()+st1[i2].GetMath();
245     }
246     avg=avg/(mm*3);
247     cout<<"全部科目成绩平均分为:"<<avg<<endl;
248 }//全部科目成绩平均分
249 int max[20];
250 int maxM[20];
251 int maxE[20];
252 int maxC[20];
253 void temp()
254 {
255     for(int i=0;i<mm-1;i++)
256         for(int i2=i+1;i2<mm;i2++)
257         {
258             max[i]=st1[i].GetComputer()+st1[i].GetEnglish()+st1[i].GetMath();
259             max[i2]=st1[i2].GetComputer()+st1[i2].GetEnglish()+st1[i2].GetMath();
260             if(max[i]>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<<"最高总分为:"<<max[mm-1]<<"分"<<endl;
273 }//最高总成绩
274 void lowall()
275 {
276     temp();
277     cout<<"最低总分为:"<<max[0]<<"分"<<endl;
278 }//最低总成绩
279 void tempM()
280 {
281     for(int i=0;i<mm-1;i++)
282         for(int i2=i+1;i2<mm;i2++)
283         {
284             maxM[i]=st1[i].GetMath();
285             maxM[i2]=st1[i2].GetMath();
286             if(maxM[i]>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<<"最高数学成绩为:"<<maxM[mm-1]<<"分"<<endl;
299 }//最高数学成绩
300 void lowallM()
301 {
302     tempM();
303     cout<<"最低数学成绩为:"<<maxM[0]<<"分"<<endl;
304 }//最低数学成绩
305 void tempE()
306 {
307     for(int i=0;i<mm-1;i++)
308         for(int i2=i+1;i2<mm;i2++)
309         {
310             maxE[i]=st1[i].GetEnglish();
311             maxE[i2]=st1[i2].GetEnglish();
312             if(maxE[i]>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<<"最高英语成绩为:"<<maxE[mm-1]<<"分"<<endl;
325 }//最高英语成绩
326 void lowallE()
327 {
328     tempE();
329     cout<<"最低英语成绩为:"<<maxE[0]<<"分"<<endl;
330 }//最低英语成绩
331 void tempC()
332 {
333     for(int i=0;i<mm-1;i++)
334         for(int i2=i+1;i2<mm;i2++)
335         {
336             maxC[i]=st1[i].GetComputer();
337             maxC[i2]=st1[i2].GetComputer();
338             if(maxC[i]>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<<"最高计算级成绩为:"<<maxC[mm-1]<<"分"<<endl;
351 }//最高计算机成绩
352 void lowallC()
353 {
354     tempC();
355     cout<<"最低计算机为:"<<maxC[0]<<"分"<<endl;
356 }//最低计算机成绩
357 void sortnumber()
358 {
359     for(int i1=0;i1<mm-1;i1++)
360         for(int i2=i1+1;i2<mm;i2++)
361         {
362             if(st1[i1].GetNumber()>st1[i2].GetNumber())
363             {
364                     Students temp;
365                     temp=st1[i1];
366                     st1[i1]=st1[i2];
367                     st1[i2]=temp;
368             }
369         }
370         cout<<"按学号排列为:"<<endl;
371     displayall();
372 }//按学号排列
373 void sortchengji()
374 {
375     for(int i1=0;i1<mm-1;i1++)
376         for(int i2=i1+1;i2<mm;i2++)
377         {
378             max[i1]=st1[i1].GetComputer()+st1[i1].GetEnglish()+st1[i1].GetMath();
379             max[i2]=st1[i2].GetComputer()+st1[i2].GetEnglish()+st1[i2].GetMath();
380             if(max[i1]<max[i2])
381             {
382                 Students temp;
383                 temp=st1[i1];
384                 st1[i1]=st1[i2];
385                 st1[i2]=temp;
386             }
387         }
388     cout<<"按成绩降序排列为:"<<endl;
389     displayall();
390 }//按成绩排序
391 void coun1M()
392 {
393     int count=0;
394     for(int i=0;i<mm;i++)
395     {
396         if(st1[i].GetMath()>90)
397         {
398             count++;
399         }
400     }
401     cout<<"数学成绩大于90分的有"<<count<<"人"<<endl;
402 }
403 void coun2M()
404 {
405     int count=0;
406     for(int i=0;i<mm;i++)
407     {
408         if(st1[i].GetMath()>79 &&st1[i].GetMath()<90)
409         {
410             count++;
411         }
412     }
413     cout<<"数学成绩在80-89分的有"<<count<<"人"<<endl;
414 }
415 void coun3M()
416 {
417     int count=0;
418     for(int i=0;i<mm;i++)
419     {
420         if(st1[i].GetMath()>69 &&st1[i].GetMath()<80)
421         {
422             count++;
423         }
424     }
425     cout<<"数学成绩在70-79分的有"<<count<<"人"<<endl;
426 }
427 void coun4M()
428 {
429     int count=0;
430     for(int i=0;i<mm;i++)
431     {
432         if(st1[i].GetMath()>59 &&st1[i].GetMath()<70)
433         {
434             count++;
435         }
436     }
437     cout<<"数学成绩在60-69分的有"<<count<<"人"<<endl;
438 }
439 void coun5M()
440 {
441     int count=0;
442     for(int i=0;i<mm;i++)
443     {
444         if(st1[i].GetMath()<60)
445         {
446             count++;
447         }
448     }
449     cout<<"数学成绩不及格的有"<<count<<"人"<<endl;
450 }
451 void coun1C()
452 {
453     int count=0;
454     for(int i=0;i<mm;i++)
455     {
456         if(st1[i].GetComputer()>90)
457         {
458             count++;
459         }
460     }
461     cout<<"计算机成绩大于90分的有"<<count<<"人"<<endl;
462 }
463 void coun2C()
464 {
465     int count=0;
466     for(int i=0;i<mm;i++)
467     {
468         if(st1[i].GetComputer()>79 &&st1[i].GetComputer()<90)
469         {
470             count++;
471         }
472     }
473     cout<<"计算机成绩在80-89分的有"<<count<<"人"<<endl;
474 }
475 void coun3C()
476 {
477     int count=0;
478     for(int i=0;i<mm;i++)
479     {
480         if(st1[i].GetComputer()>69 &&st1[i].GetComputer()<80)
481         {
482             count++;
483         }
484     }
485     cout<<"计算机成绩在70-79分的有"<<count<<"人"<<endl;
486 }
487 void coun4C()
488 {
489     int count=0;
490     for(int i=0;i<mm;i++)
491     {
492         if(st1[i].GetComputer()>59 &&st1[i].GetComputer()<70)
493         {
494             count++;
495         }
496     }
497     cout<<"计算机成绩在60-69分的有"<<count<<"人"<<endl;
498 }
499 void coun5C()
500 {
501     int count=0;
502     for(int i=0;i<mm;i++)
503     {
504         if(st1[i].GetComputer()<60)
505         {
506             count++;
507         }
508     }
509     cout<<"计算机成绩不及格的有"<<count<<"人"<<endl;
510 }
511 void coun1E()
512 {
513     int count=0;
514     for(int i=0;i<mm;i++)
515     {
516         if(st1[i].GetEnglish()>90)
517         {
518             count++;
519         }
520     }
521     cout<<"英语成绩大于90分的有"<<count<<"人"<<endl;
522 }
523 void coun2E()
524 {
525     int count=0;
526     for(int i=0;i<mm;i++)
527     {
528         if(st1[i].GetEnglish()>79 &&st1[i].GetEnglish()<90)
529         {
530             count++;
531         }
532     }
533     cout<<"英语成绩在80-89分的有"<<count<<"人"<<endl;
534 }
535 void coun3E()
536 {
537     int count=0;
538     for(int i=0;i<mm;i++)
539     {
540         if(st1[i].GetEnglish()>69 &&st1[i].GetEnglish()<80)
541         {
542             count++;
543         }
544     }
545     cout<<"英语成绩在70-79分的有"<<count<<"人"<<endl;
546 }
547 void coun4E()
548 {
549     int count=0;
550     for(int i=0;i<mm;i++)
551     {
552         if(st1[i].GetEnglish()>59 &&st1[i].GetEnglish()<70)
553         {
554             count++;
555         }
556     }
557     cout<<"英语成绩在60-69分的有"<<count<<"人"<<endl;
558 }
559 void coun5E()
560 {
561     int count=0;
562     for(int i=0;i<mm;i++)
563     {
564         if(st1[i].GetEnglish()<60)
565         {
566             count++;
567         }
568     }
569     cout<<"英语成绩不及格的有"<<count<<"人"<<endl;
570 }
571 void coun1Z()
572 {
573     int count=0;
574     for(int i=0;i<mm;i++)
575     {
576         if(double((st1[i].GetComputer()+st1[i].GetEnglish()+st1[i].GetMath())/3.0)>90)
577         {
578             count++;
579         }
580     }
581     cout<<"平均成绩大于90分的有"<<count<<"人"<<endl;
582 }
583 void coun2Z()
584 {
585     int count=0;
586     for(int i=0;i<mm;i++)
587     {
588         double aa=double(st1[i].GetComputer()+st1[i].GetEnglish()+st1[i].GetMath())/3.0;
589         if(aa>79 &&aa<90)
590         {
591             count++;
592         }
593     }
594     cout<<"平均成绩在80-89分的有"<<count<<"人"<<endl;
595 }
596 void coun3Z()
597 {
598     int count=0;
599     for(int i=0;i<mm;i++)
600     {
601         double aa=double(st1[i].GetComputer()+st1[i].GetEnglish()+st1[i].GetMath())/3.0;
602         if(aa>69 && aa<80)
603         {
604             count++;
605         }
606     }
607     cout<<"平均成绩在70-79分的有"<<count<<"人"<<endl;
608 }
609 void coun4Z()
610 {
611     int count=0;
612     for(int i=0;i<mm;i++)
613     {
614         double aa=double(st1[i].GetComputer()+st1[i].GetEnglish()+st1[i].GetMath())/3.0;
615         if(aa>59 && aa<70)
616         {
617             count++;
618         }
619     }
620     cout<<"平均成绩在60-69分的有"<<count<<"人"<<endl;
621 }
622 void coun5Z()
623 {
624     int count=0;
625     for(int i=0;i<mm;i++)
626     {
627         if((double(st1[i].GetComputer()+st1[i].GetEnglish()+st1[i].GetMath())/3.0)<60)
628         {
629             count++;
630         }
631     }
632     cout<<"平均成绩不及格的有"<<count<<"人"<<endl;
633 }
634 2.1.4  功能组合
635 void mainloop1()
636  {
637      cout<<"输入1:查看全部成绩" <<endl;
638      cout<<"输入2:按学号查询"<<endl;
639      int xun;
640      cin>>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:查看数学平均成绩"<<endl;
674      cout<<"输入 2:查看英语平均成绩"<<endl;
675      cout<<"输入 3:查看计算机平均成绩"<<endl;
676      cout<<"输入 4:查看总平均成绩"<<endl;
677      int m;
678      cin>>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:查看数学最高成绩"<<endl;
700      cout<<"输入 2:查看英语最高成绩"<<endl;
701      cout<<"输入 3:查看计算机最高成绩"<<endl;
702      cout<<"输入 4:查看总最高成绩"<<endl;
703     int m;
704      cin>>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:查看数学最低成绩"<<endl;
726      cout<<"输入 2:查看英语最低成绩"<<endl;
727      cout<<"输入 3:查看计算机最低成绩"<<endl;
728      cout<<"输入 4:查看总最低成绩"<<endl;
729     int m;
730      cin>>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:查看不及格人数"<<endl;
752      cout<<"输入 2:查看60~69分人数"<<endl;
753      cout<<"输入 3:查看70~79分人数"<<endl;
754      cout<<"输入 4:查看80~89分人数"<<endl;
755      cout<<"输入 5:查看90分以上人数"<<endl;
756      int i1;
757      cin>>i1;
758      if(i1==1)
759      {
760         cout<<"输入 1:查看数学在此范围内人数"<<endl;
761         cout<<"输入 2:查看英语在此范围内人数"<<endl;
762         cout<<"输入 3:查看计算机在此范围内人数"<<endl;
763         cout<<"输入 4:查看平均成绩在此范围内人数"<<endl;
764         int jj;
765         cin>>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:查看数学在此范围内人数"<<endl;
786         cout<<"输入 2:查看英语在此范围内人数"<<endl;
787         cout<<"输入 3:查看计算机在此范围内人数"<<endl;
788         cout<<"输入 4:查看平均成绩在此范围内人数"<<endl;
789         int jj;
790         cin>>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:查看数学在此范围内人数"<<endl;
811         cout<<"输入 2:查看英语在此范围内人数"<<endl;
812         cout<<"输入 3:查看计算机在此范围内人数"<<endl;
813         cout<<"输入 4:查看平均成绩在此范围内人数"<<endl;
814         int jj;
815         cin>>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:查看数学在此范围内人数"<<endl;
836         cout<<"输入 2:查看英语在此范围内人数"<<endl;
837         cout<<"输入 3:查看计算机在此范围内人数"<<endl;
838         cout<<"输入 4:查看平均成绩在此范围内人数"<<endl;
839         int jj;
840         cin>>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:查看数学在此范围内人数"<<endl;
861         cout<<"输入 2:查看英语在此范围内人数"<<endl;
862         cout<<"输入 3:查看计算机在此范围内人数"<<endl;
863         cout<<"输入 4:查看平均成绩在此范围内人数"<<endl;
864         int jj;
865         cin>>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<<endl;
907         cout<<endl;
908         cout<<"                          学生成绩管理系统                   " <<endl;
909         cout<<"                    =========================================="<<endl;
910         cout<<"                    \t    1.学生成绩查询    \t"<<endl;
911         cout<<"                    \t    2.添加学生成绩    \t"<<endl;
912         cout<<"                    \t    3.修改学生成绩    \t"<<endl;
913         cout<<"                    \t    4.删除学生成绩  \t"<<endl;
914         cout<<"                    \t    5.学生平均成绩      \t"<<endl;
915         cout<<"                    \t    6.科目平均成绩      \t"<<endl;
916         cout<<"                    \t    7.学生最高成绩    \t"<<endl;
917         cout<<"                    \t    8.学生最低成绩          \t"<<endl;
918         cout<<"                        9.学生各个分数段人数         \t"<<endl;
919         cout<<"                10.成绩升序排列为            \t"<<endl;
920         cout<<"                  =========================================="<<endl;
921         cout<<"0-退出\t请选择(1-10): ";
922         cin>>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)满足时退出系统。

循环中采用switch,case结构方便进行选择。

6.主窗体设计。

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

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

5.界面展示

6.  开发难点及解决技巧

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

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

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

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

循环中采用switch,case结构方便进行选择。

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<iostream.h>

#include<fstream>

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;

}

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

时间: 2024-08-02 10:57:51

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

C语言课程设计之学生信息管理系统

#include"stdio.h"        //标准的输入输出函数文件头部说明 #include"math.h"              // 数学函数头部说明 #include"string.h" #include"stdlib.h"    //通过该函数头部里的函数,改变控制台的背景和颜色 #include"windows.h"    //头文件声明,下文用到了改变控制台的宽度和高度 #defi

java课程设计(学生信息管理系统)

1.需求分析 功能要求: 1)需要管理的学生信息有:学号.姓名.性别.出生日期.政治面貌.家庭住址.电话.宿舍号. 2)实现查询.增.删.改等功能. 数据存储:数据库或文件. 2.本组课题及本人任务 本组的课题是学生信息管理系统,我负责的任务是完成学生信息管理系统的图形界面. 3.总体设计(概要设计) 本组完成的是学生信息管理系统,主要的功能有增,删,查,改,管理的学生信息有学号.姓名.性别.出生日期.政治面貌.家庭住址.电话.宿舍号.并且使用数据库来储存学生信息. 小组成员 翁华辉:负责完成学

数据结构第一次作业(学生信息管理系统-顺序表&amp;&amp;链表)

实验目的 : 1 .掌握线性表的定义: 2 .掌握线性表的基本操作,如建立.查找.插入和删除等. 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的的 顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息: (3) 根据姓名进行查找,返回此学生的学号和成绩: (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩): (5) 给定一个学生信息,插入到表中指定的位置: (6) 删除指定位置的学生记录: (7) 统计表中

学术休假-学生信息管理系统v1.0

这是第一个学术休假的项目,主体部分在回家时的火车上完成的,隔了几天继续加工,今天终于完成,这是学生管理系统的beta版本,后续还将继续完善. 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.试设计一学生信息管理系统,使之能提供以下功能: (1)系统以菜单方式工作 (2)学生信息录入功能(学生信息用文件保存)---输入 (3)学生信息浏览功能---输出 (4)查询.排序功能 按学号查询 按姓名查询 (5)学生信息的删除与修改(可选项) /* *Copyright (c)

Java 学生信息管理系统的实现(简洁易懂),适合计算机专业学生参考,毕业论文设计参考等

编写一个简单的学生管理信息系统. 在oracle中设计一张学生表,以学号作为关键字. 其他学生信息有:姓名.手机号. 在进入系统时,显示如下菜单: ************************************************** =====欢迎进入学生管理信息系统===== 1. 新增学生 2. 修改学生 3. 删除学生 4. 查询学生 5. 退出系统 请选择(1-5): ************************************************** (

大一C语言结课设计之《学生信息管理系统》

第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm> #include <vector> using std::sort; using std::vector; /*==存储单元节点=

S2SH框架学生信息管理系统之毕业论文

大家好,马上毕业了,最近在忙着我的毕业设计.十天的日夜兼程,终于做完了,剩下的又是一个伤感的6月——毕业季,我的大学就要随着一顿散伙饭拜拜了. 好了,不多说了.这次给大家分享我的毕业设计,基于S2SH开发的学生信息管理系统,主要实现系级,专业,班级,学生,老师,课程,分数简单的CRUD以及 角色和权限的设计与分配. 分享出来,给大家做毕业设计一个参照,希望高手多多指点.项目的论文files.cnblogs.com/files/yx-my-life/S2SH%E6%A1%86%E6%9E%B6%E

学生信息管理系统修改

北京工业大学耿丹学院 c语言设计课程报告   课程设计名称:高级语言程序设计 专业班级:计算机科学与技术1 姓名:吴双 学号:150809201   2016年5月10日 一 对c语言指针链表的体会 ------------------------ 二 修改学生信息管理系统 ------------------------ 三 体会 ------------------------ 一 对c语言指针链表的体会 1.指针 简单来说,指针是一个存储计算机内存地址的变量. 用 int *ptr 这种形

数据结构——课程设计

  <数据结构课程设计>   课程题目 模拟电话客服管理系统 课程编号 j1620102 学生姓名 吴佳煜 所在专业 信息管理与信息系统 所在班级 信管1133 任课老师 易学明 实习时间 二〇一四年十二月二十五日 设计成绩 老师评语 一.课程设计题目 赵斌是一个信管专业的学生,大学四年顺利毕业了.在毕业季,他也像其他学子一样,投身于求职大军,投出一份又一份求职简历,在苦苦地等待之后,他接到了中国移动通信公司广东分司的面试通知书,通知他于本月1号10点到公司面试.当天,晴空万里,艳阳高照,他身