软件开发实习报告2_第1页
软件开发实习报告2_第2页
软件开发实习报告2_第3页
软件开发实习报告2_第4页
软件开发实习报告2_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1信息科学与技术学院本科一年级软件开发实习报告专 业:软件工程班 级:软件三班姓 名:张兆龙学 号:20103154实习指导单位:软件工程实验中心2011 年 7 月 25 日诚信承诺:2本人_张兆龙_保证本次软件开发实习报告和程序设计源程序均为自己独立编辑完成,软件开发实习报告不会有三分之一以上的内容与其他同学雷同,程序设计源程序语句形式不会有三分之一以上与其他同学雷同,源程序结构也不会有三分之一以上与其他同学雷同。 如果出现以上情况,本次软件开发实习成绩自愿记为零分。承诺人签名:张兆龙日期:2011年7月25日3一、程序原代码#include"iostream"#include"iomanip"#include"string"#include"fstream"#include"cstdio"#include"cstring"#include"cstdlib"#include"conio.h"#include"strstream"usingnamespacestd;classbasic{public:charnum[10];charname[13];charsex[4];floatscore;chargrade[13];charprofession[13];classbasic*next;};classmainmanue{public:inlineintprint(){cout<<"

***********************************"<<endl;cout<<"cout<<"

学生信息管理系统 "<<endl;************************************"<<endl;cout<<"================================================================================"<<endl;cout<<"cout<<"cout<<"cout<<"cout<<"cout<<"

1.添加学生"<<endl;2.查询学生"<<endl;3.删除学生"<<endl;4.打印全部"<<endl;5.修改学生信息 "<<endl;6.学生排序"<<endl;cout<<"cout<<"cout<<"

7.从文件读取信息 "<<endl;8.分析统计系统 "<<endl;9.退出系统"<<endl;cout<<"================================================================================"<<endl<<endl;cout<<"请选择操作:"<<endl;return(getch()-48);4}};classmainmanuesort{public:inlineintshunxu(){system("cls");cout<<"********************************************************************************"<<endl;cout<<"1.升序"<<endl;cout<<"2.降序"<<endl;cout<<"3.退出"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:";return(getch()-48);}inlineintaccordingsort(){system("cls");cout<<"********************************************************************************"<<endl;cout<<"1.按照学号"<<endl;cout<<"2.按照成绩"<<endl;cout<<"3.退出"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:";return(getch()-48);}};classmainmanuesearch{public:intaccordingsearch(){system("cls");cout<<"********************************************************************************"<<endl;cout<<"

1.按学号查找

"<<endl;cout<<"

2.按成绩查找

"<<endl;cout<<"

3.按专业查找

"<<endl;5cout<<"cout<<"

4.按班级查找"<<endl;7.退出"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:";return(getch()-48);}};classmainmanueamend{public:intamenditem(){cout<<"********************************************************************************"<<endl;cout<<"1.修改学号"<<endl;cout<<"2.修改姓名"<<endl;cout<<"3.修改成绩"<<endl;cout<<"4.修改班级"<<endl;cout<<"5.修改专业"<<endl;cout<<"6.修改性别"<<endl;cout<<"7.退出"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:";return(getch()-48);}};classfunction:virtualpublicbasic,publicmainmanuesearch,publicmainmanuesort,publicmainmanueamend,publicmainmanue{public:function(){head=newbasic;p2=newbasic;p3=newbasic;p4=newbasic;p5=newbasic;p6=newbasic;p7=newbasic;p=newbasic;memset(head,0,sizeof(classbasic));6}~function(){deletehead;deletep1;deletep2;deletep3;deletep4;deletep5;deletep6;deletep7;deletep8;}voidsavestudent();voidsavestudentreplace();voidread();voidadd1(){p1=newbasic;system("cls");cout<<"请输入学生学号 :";cin>>p1->num;while(1){if(strlen(p1->num)==4)break;else{system("cls");cout<<"学号必须为 4位,请重新输入: ";cin>>p1->num;}}system("cls");cout<<"请输入学生姓名 :";cin>>p1->name;system("cls");cout<<"请选择学生性别 :"<<endl;cout<<"********************************************************************************"<<endl;cout<<"cout<<"

1.男"<<endl;2.女"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:";switch(getch()-48)7{case1:strcpy(p1->sex,"男");break;case2:strcpy(p1->sex,"女");break;}system("cls");cout<<"请输入学生成绩 :";cin>>p1->score;system("cls");cout<<"请输入学生班级 :";cin>>p1->grade;system("cls");cout<<"请输入学生专业 :";cin>>p1->profession;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;cout<<setw(13)<<p1->num;cout<<setw(13)<<p1->name;cout<<setw(13)<<p1->sex;cout<<setw(13)<<p1->score;cout<<setw(13)<<p1->grade;cout<<setw(13)<<p1->profession<<endl;cout<<"按任意键继续 ...."<<endl;getch();}voidaddstudent(){add1();p2=head->next;head->next=p1;p1->next=p2;count++;savestudent();savestudentreplace();}voidprintall(){system("cls");if(head->next==0){cout<<"没有学生信息 !"<<endl;cout<<"按任意键继续 ...."<<endl;8getch();return;}cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;p4=head->next;while(p4!=0){cout<<setw(13)<<p4->num<<setw(13)<<p4->name<<setw(13)<<p4->sex<<setw(13)<<p4->score<<setw(13)<<p4->grade<<setw(13)<<p4->profession<<endl;p4=p4->next;}cout<<"按任意键继续...."<<endl;getch();}voidsearchnum(){system("cls");cout<<"请输入需要查找的学号 :";cin>>numsearch;while(1){if(strlen(numsearch)==4)break;else{system("cls");cout<<"学号必须为 4位,请重新输入: ";cin>>numsearch;}}for(p=head;p->next!=0;p=p->next){if(!strcmp(numsearch,p->next->num)){system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;cout<<setw(13)<<p->next ->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;cout<<"按任意键继续...."<<endl;getch();break;9}}if(p->next==0){cout<<"你要查找的学生不存在 !"<<endl;cout<<"按任意键继续...."<<endl;getch();}}voidsearchscore(){intlab=0;system("cls");cout<<"请输入需要查找学生的成绩 :";cin>>scoresearch;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;for(p=head;p->next!=0;p=p->next){if(scoresearch==p->next->score){cout<<setw(13)<<p->next ->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;lab++;}}if(p->next==0&&lab==0){system("cls");cout<<"你要查找的学生不存在 !"<<endl;cout<<"按任意键继续...."<<endl;getch();return;}if(lab>1){cout<<"********************************************************************************"<<endl;cout<<"cout<<"

1.继续按学号查找2.退出"<<endl;

"<<endl;cout<<"********************************************************************************"<<endl;10cout<<"请选择:"<<endl;switch(getch()-48){case1:intlab=0;cout<<"请输入你要查找学生的学号 :";cin>>numamend;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;for(p=head;p->next!=0;p=p->next){if(strcmp(numamend,p->next->num)==0&&scoresearch==p->next->score){cout<<setw(13)<<p->next ->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;lab++;}}if(p->next==0&&lab==0){system("cls");cout<<"你要查找的学生不存在 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}break;}}cout<<"按任意键继续 ...."<<endl;getch();}voidsearchprofession(){intlab=0;system("cls");cout<<"请输入你要查找学生的专业 :";cin>>amendprofession;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;for(p=head;p->next!=0;p=p->next){11if(!strcmp(amendprofession,p->next->profession)){cout<<setw(13)<<p->next ->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;lab++;}}if(p->next==0&&lab==0){system("cls");cout<<"你要查找的学生不存在 !"<<endl;cout<<"按任意键继续...."<<endl;getch();return;}if(lab>1){cout<<"********************************************************************************"<<endl;cout<<"cout<<"

1.继续按班级查找2.退出"<<endl;

"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:"<<endl;switch(getch()-48){case1:intlab=0;cout<<"请输入你要查找学生的班级 :";cin>>amendgrade;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;for(p=head;p->next!=0;p=p->next){if(strcmp(amendprofession,p->next->profession)==0&&strcmp(amendgrade,p->next->grade)==0){cout<<setw(13)<<p->next ->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;lab++;}12}if(p->next==0&&lab==0){system("cls");cout<<"你要查找的学生不存在 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}if(lab>1){cout<<"********************************************************************************"<<endl;cout<<" 1.继续按姓名查找"<<endl;cout<<" 2.退出"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:"<<endl;switch(getch()-48){case1:intlab=0;cout<<"请输入你要查找学生的姓名 :";cin>>amendname;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<" 性别"<<setw(13)<<" 成绩"<<setw(13)<<"班级"<<setw(13)<<" 专业"<<endl;for(p=head;p->next!=0;p=p->next){if(strcmp(amendprofession,p->next->profession)==0&&strcmp(amendgrade,p->next->grade)==0&&strcmp(amendname,p->next->name)==0){cout<<setw(13)<<p->next->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;lab++;}}if(p->next==0&&lab==0){system("cls");cout<<"你要查找的学生不存13在!"<<endl;cout<<"按任意键继续...."<<endl;getch();return;}break;}}break;}}cout<<"按任意键继续 ...."<<endl;getch();}voidsearchgrade(){intlab=0;system("cls");cout<<"请输入你要查找学生的班级 :";cin>>amendgrade;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;for(p=head;p->next!=0;p=p->next){if(!strcmp(amendgrade,p->next->grade)){cout<<setw(13)<<p->next ->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;lab++;}}if(p->next==0&&lab==0){system("cls");cout<<"你要查找的学生不存在 !"<<endl;cout<<"按任意键继续...."<<endl;getch();return;}if(lab>1){cout<<"********************************************************************************"<<endl;14cout<<"cout<<"

1.继续按成绩查找2.退出"<<endl;

"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:"<<endl;switch(getch()-48){case1:intlab=0;cout<<"请输入你要查找学生的成绩 :";cin>>amendscore;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;for(p=head;p->next!=0;p=p->next){if(strcmp(amendgrade,p->next->grade)==0&&amendscore==p->next->score){cout<<setw(13)<<p->next ->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;lab++;}}if(p->next==0&&lab==0){system("cls");cout<<"你要查找的学生不存在 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}if(lab>1){cout<<"********************************************************************************"<<endl;cout<<" 1.继续按姓名查找"<<endl;cout<<" 2.退出"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:"<<endl;switch(getch()-48)15{case1:intlab=0;cout<<"请输入你要查找学生的姓名 :";cin>>amendname;system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;for(p=head;p->next!=0;p=p->next){if(strcmp(amendgrade,p->next->grade)==0&&amendscore==p->next->score&&strcmp(amendname,p->next->name)==0){cout<<setw(13)<<p->next->num<<setw(13)<<p->next->name<<setw(13)<<p->next->sex<<setw(13)<<p->next->score<<setw(13)<<p->next->grade<<setw(13)<<p->next->profession<<endl;lab++;}}if(p->next==0&&lab==0){system("cls");cout<<"你要查找的学生不存在!"<<endl;cout<<"按任意键继续...."<<endl;getch();return;}break;}}break;}}cout<<"按任意键继续 ...."<<endl;getch();}voidsearch(){while(head->next==0){system("cls");cout<<"没有学生信息 !"<<endl;16cout<<"按任意键继续 ...."<<endl;getch();return;}choosesearch=accordingsearch();switch(choosesearch){case1:searchnum();break;case2:searchscore();break;case3:searchprofession();break;case4:searchgrade();break;case5:return;}}voidamend(){system("cls");if(head->next==0){cout<<"没有学生信息 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;p4=head->next;while(p4!=0){cout<<setw(13)<<p4->num<<setw(13)<<p4->name<<setw(13)<<p4->sex<<setw(13)<<p4->score<<setw(13)<<p4->grade<<setw(13)<<p4->profession<<endl;p4=p4->next;}cout<<"\n请输入你要修改学生的学号 :";cin>>numamend;while(1){if(strlen(numamend)==4)break;else{system("cls");cout<<"学号必须为 4位,请重新输入: ";cin>>numamend;}}for(p3=head;p3->next!=0;p3=p3->next)17{if(!strcmp(numamend,p3->next->num)){system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业"<<endl;cout<<setw(13)<<p3->next->num<<setw(13)<<p3->next->name<<setw(13)<<p3->next->sex<<setw(13)<<p3->next->score<<setw(13)<<p3->next->grade<<setw(13)<<p3->next->profession<<endl;break;}}if(p3->next==0){cout<<"你要查找的学生不存在 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}chooseamend=amenditem();switch(chooseamend){case1:cout<<"请输入新学号:";cin>>newnumamend;while(1){if(strlen(newnumamend)==4)break;else{system("cls");cout<<"学号必须为 4位,请重新输入: ";cin>>newnumamend;}}strcpy(p3->next->num,newnumamend);break;case2:cout<<"请输入新姓名 :";cin>>amendname;strcpy(p3->next->name,amendname);break;case3:cout<<"请输入新成绩 :";18cin>>amendscore;p3->next->score=amendscore;break;case4:cout<<"请输入新班级 :";cin>>amendgrade;strcpy(p3->next->grade,amendgrade);break;case5:cout<<"请输入新专业 :";cin>>amendprofession;strcpy(p3->next->profession,amendprofession);break;case6:system("cls");cout<<"请选择学生性别 :"<<endl;cout<<"********************************************************************************"<<endl;cout<<"cout<<"

1.男"<<endl;2.女"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:";switch(getch()-48){case1:strcpy(p3->next->sex,"break;

男");case2:strcpy(p3->next->sex,"break;

女");}case7:default:;}savestudent();savestudentreplace();}voiddeletes();voidsort();voidsortnum(int);19voidsortscore(int);voidanalyse();intflag;private:charnumamend[10];charnumsearch[10];charnewnumamend[10];chardeletenum[10];charamendname[13];charamendgrade[13];charamendprofession[13];charsex[4];intchoosesearch;intchoosesort;intchooseamend;floatscoresearch;floatamendscore;classbasic*head,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p;staticintcount;};intfunction::count=0;voidfunction::deletes(){system("cls");if(head->next==0){cout<<"没有学生信息

!"<<endl;cout<<"按任意键继续

...."<<endl;getch();return;}cout<<"请输入你要删除学生的学号

(删除全部请输入

0000):";cin>>deletenum;while(1){if(strlen(deletenum)==4)break;else{system("cls");cout<<"学号必须为

4位,请重新输入:

";cin>>deletenum;}}if(!strcmp(deletenum,"0000")){cout<<"你确定要删除所有学生的信息?

"<<endl;cout<<"********************************************************************************"<<endl;cout<<"cout<<"

1.确定"<<endl;2.退出"<<endl;cout<<"********************************************************************************"<<endl<<endl;20cout<<"请选择:";switch(getch()-48){case1:p2=head;while(p2->next){p5=p2->next;p2->next=p5->next;free(p5);}count=0;break;case2:return;}}else{for(p6=head->next,p3=head;p6!=0;p3=p6,p6=p6->next){if(!strcmp(deletenum,p6->num)){system("cls");cout<<setiosflags(ios::left);cout<<setw(13)<<"

学号

"<<setw(13)<<"

姓名

"<<setw(13)<<"

性别

"<<setw(13)<<"

成绩"<<setw(13)<<"

班级"<<setw(13)<<"

专业"<<endl;cout<<setw(13)<<p6

->num<<setw(13)<<p6->name<<setw(13)<<p6->sex<<setw(13)

<<p6->score<<setw(13)<<p6->grade<<setw(13)<<p6->profession<<endl;break;}}if(p6==0){cout<<"你要删除的学生不存在 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}cout<<"你确定要删除所选学生的信息?

"<<endl;cout<<"********************************************************************************"<<endl;cout<<"cout<<"

1.确定"<<endl;2.退出"<<endl;21cout<<"********************************************************************************"<<endl<<endl;cout<<"请选择:";switch(getch()-48){case1:p3->next=p6->next;free(p6);count--;break;case2:return;}}savestudent();savestudentreplace();}voidfunction::savestudent(){ofstreamoutfile("student.txt",ios::binary);if(!outfile){cerr<<"存盘失败!"<<endl;abort();}outfile<<setiosflags(ios::left);outfile<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"性别"<<setw(13)<<"成绩"<<setw(13)<<"班级"<<setw(13)<<"专业";outfile<<"\r\n";p2=head->next;while(p2){outfile<<setw(13)<<p2->num<<setw(13)<<p2->name<<setw(13)<<p2->sex<<setw(13)<<p2->score<<setw(13)<<p2->grade<<setw(13)<<p2->profession<<"\r\n";p2=p2->next;}outfile.close();}voidfunction::savestudentreplace(){ofstreamoutfile("replace.txt",ios::binary);if(!outfile){cerr<<"存盘失败!"<<endl;abort();}p2=head->next;22while(p2){outfile<<p2->num<<" "<<p2->name<<" "<<p2->sex<<" "<<p2->score<<""<<p2->grade<<""<<p2->profession<<"";p2=p2->next;}outfile.close();}voidfunction::read(){system("cls");ifstreaminfile("student.txt",ios::in|ios::binary);ifstreaminfilereplace("replace.txt",ios::in|ios::binary);cout<<"********************************************************************************"<<endl;cout<<"cout<<"cout<<"

1.只读入到屏幕"<<endl;2.同时读入到屏幕和程序3.退出"<<endl;

"<<endl;cout<<"********************************************************************************"<<endl;cout<<"请选择:";switch(getch()-48){case1:system("cls");if(head->next){printall();return;}/*choosesort=0;charsh;while(!infile.eof()){infile.get(sh);if(sh=='\n')choosesort++;}if(choosesort==2){cout<<"没有学生信息 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}infile.seekg(ios::beg);*/23charch;while(!infile.eof()){infile.get(ch);cout<<ch;}infilereplace.close();infile.close();cout<<"按任意键继续 ...."<<endl;getch();break;case2:if(head->next)printall();else{intc=0;charch;while(!infile.eof()){infile.get(ch);if(ch=='\n')c++;}for(inti=0;i<c-2;i++){p8=newbasic;infilereplace.getline(numamend,12,'');strcpy(p8->num,numamend);infilereplace.getline(amendname,12,'');strcpy(p8->name,amendname);infilereplace.getline(sex,12,'');strcpy(p8->sex,sex);infilereplace>>p8->score;infilereplace.seekg(1,ios::cur);infilereplace.getline(amendgrade,12,'');strcpy(p8->grade,amendgrade);infilereplace.getline(amendprofession,12,'');strcpy(p8->profession,amendprofession);p5=head->next;head->next=p8;p8->next=p5;}printall();infilereplace.close();infile.close();for(p3=head;p3->next!=0;p3=p3->next)count++;24}break;case3:default:;}}voidfunction::sortnum(intchoose){switch(choose){case1:inti,j;for(i=1;i<=count-1;i++)/* 第i轮*/{p2=head;p3=p2->next;p=p3->next;for(j=1;j<=count-i;j++)/* 第j次*/if(strcmp(p3->num,p->num)>0){p2->next=p;p3->next=p->next;p->next=p3;p2=p;p=p3->next;}else{p2=p3;p3=p;p=p->next;}}break;case2://inti,j;for(i=1;i<=count-1;i++)/* 第i轮*/{p2=head;p3=p2->next;p=p3->next;for(j=1;j<=count-i;j++)/* 第j次*/if(strcmp(p3->num,p->num)<0){p2->next=p;p3->next=p->next;p->next=p3;p2=p;p=p3->next;}else{p2=p3;25p3=p;p=p->next;}}break;case3:default:;}}voidfunction::sortscore(intchoose){switch(choose){case1:inti,j;for(i=1;i<=count-1;i++)/*

第i轮*/{p2=head;p3=p2->next;p=p3->next;for(j=1;j<=count-i;j++)/*

第j次*/if(p3->score>p->score){p2->next=p;p3->next=p->next;p->next=p3;p2=p;p=p3->next;}else{p2=p3;p3=p;p=p->next;}}break;case2://inti,j;for(i=1;i<=count-1;i++)/*

第i轮*/{p2=head;p3=p2->next;p=p3->next;for(j=1;j<=count-i;j++)/*

第j次*/if(p3->score<p->score){p2->next=p;p3->next=p->next;p->next=p3;26p2=p;p=p3->next;}else{p2=p3;p3=p;p=p->next;}}break;case3:default:;}}voidfunction::sort(){system("cls");if(head->next==0){cout<<"没有学生信息 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}switch(accordingsort()){case1:sortnum(shunxu());break;case2:sortscore(shunxu());break;case3: default:;}savestudent();savestudentreplace();}voidfunction::analyse(){system("cls");cout<<"********************************************************************************"<<endl;cout<<"cout<<"cout<<"

1.人数统计"<<endl;2.分数统计"<<endl;3.退出"<<endl;27cout<<"********************************************************************************"<<endl;cout<<"请选择:";switch(getch()-48){case1:choosesort=0;chooseamend=0;system("cls");if(head->next==0){cout<<"没有学生信息 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}for(p3=head;p3->next!=0;p3=p3->next){if(!strcmp("男",p3->next->sex))choosesort++;elseif(!strcmp("女",p3->next->sex))chooseamend++;}cout<<"********************************************************************************"<<endl;cout<<" 总人数:"<<choosesort+chooseamend<<endl;cout<<" 男生人数:"<<choosesort<<endl;cout<<" 女生人数:"<<chooseamend<<endl;cout<<"********************************************************************************"<<endl;cout<<"按任意键继续 ...."<<endl;getch();break;case2:floatmax,min,sum=0;system("cls");if(head->next==0){cout<<"没有学生信息 !"<<endl;cout<<"按任意键继续 ...."<<endl;getch();return;}sortscore(2);max=head->next->score;28sortscore(1);min=head->next->score;for(p3=head;p3->next!=0;p3=p3->next){sum=sum+p3->next->score;}cout<<"********************************************************************************"<<endl;cout<<"cout<<"cout<<"

1.最高分:"<<max<<endl;2.最低分:"<<min<<endl;3.平均分:"<<sum/count<<endl;cout<<"********************************************************************************"<<endl;cout<<"按任意键继续...."<<endl;getch();break;}}intmain(){functiona;a.flag=1;while(a.flag){system("cls");switch(a.print()){case1:a.addstudent();break;case2:a.search();break;case3:a.deletes();break;case4:a.printall();break;case5:a.amend();break;case6:a.sort();break;case7:a.read();break;case8:a.analyse();break;case9:a.flag=0;}}return0;}29二、程序说明1.程序基本功能:程序全部使用弹出式菜单,并时刻提醒用户该进行的操作,用户界面友好,易于操作。程序开始运行时显示出总目录菜单,提醒用户选择自己要进行的操作,程序有以下功能可供选择: 1.添加学生2.查询学生3.删除学生4.打印全部5.修改学生信息6.学生排序7.从文件读取信息8.分析统计系统9.退出系统程序界面如图:2.程序各个功能详细说明:添加学生 这个选项可以实现对学生信息的无限添加。具体实现:首先写了一个add1()函数,其作用是动态申请存储空间, 并通过键盘向此存储空间中依次输入学生信息,包括:学号、姓名、性别、成绩、30专业、班级,输入完成后打印出来让用户检查是否输入有误, 然后在addstudent()函数中调用此函数。Addstudent()函数的作用是把新申请的存储空间p1添加到头节点 head后面,由语句p2=head->next;head->next=p1;p1->next=p2; 实现循环添加。程序运行界面如图:查询学生查找学生。程序运行界面如图:

这个选项可以实现分别按:学号、成绩、专业、班级具体实现:如果没有学生信息,即整个链表是空的,直接输出“没有学生信息!”,用”if(!head->next)”语句来判断链表是否为空。一般说来,学生学号是没有重复的,只要查找到一个,就可以直接输出后结束。查找方法是把整个链表从头到尾查找一遍,利用strcmp()函数确定出需要查找的学生,如果没有要查找的学生信息,提醒用户“要查找的学生不存在!”。程序运行界面如图:31但是对于同一个成绩、专业和班级,就可能对应着多个学生信息,这样在第一轮查找中还不能直接定位到某一个具体的学生,就必须再继续深入查找,以此类推,层层深入,直到定位到某一个具体的学生。在具体查询过程中,如果只查到一个符合此要求的学生, 就在输出之后直接结束,但如果查询到超过一个的学生信息,就弹出菜单选项,让用户选择是继续查找还是结束。实现方法是设一个变量,查询到一个就加一,最后若此变量大于一,就弹出选择菜单让用户选择是否继续查找。否则直接结束。深入查找的具体方法是把以前的查找条件和深入查找的条件加合在一起进行查找,这样以此类推就可以确定到固定的学生。在实现这一功能时程序的基本结构是 switch语句,要深入查找则是在 switch语句中嵌套switch语句,若要多次深入查询,就层层嵌套switch语句。程序运行界面如图:32删除学生除。

这个选项可以实现学生信息的单个删除和全部删具体实现:首先判断链表是否为空,若链表为空,则提示“没有学生信息! ”。单个删除,首先提示用户输入想要删除学生的学号,然后开始查找,若没有找到,则提示“你想要删除的训生不存在!”,否则将查找到的学生信息输出供用户查阅,接着弹出菜单选项,让用户选择是否确定删除已经查找到的学生信息,具体方法是:将要删除学生信息所在的这个节点释放掉,把这个节点的前一个节点的next的值设为要删除的节点的next值,由p3->next=p6->next;free(p6); 实现。程序运行界面如图:全部删除:提醒用户若要全部删除,则输入0000,利用strcmp()函数判断若用户所输入的就是0000,则弹出选择菜单让用户选择是否确定删除所有学生信息,若用户选择确定,则全部删除后直接返回主界面,由p2=head;while(p2->next)33{p5=p2->next;p2->next=p5->next;free(p5);} 实现。程序运行界面如图:打印全部 这个选项可以实现把所有的学生信息输出到屏幕。具体实现:首先判断链表是否为空,若链表为空,则提示“没有学生信息!程序运行界面如图:若链表不为空,则把整个链表遍历一次,依次输出所有学生的信息。由p4=head->next;while(p4!=0){cout<<setw(13)<<p4->num<<setw(13)<<p4->name<<setw(13)<<p4->sex<<setw(13)<<p4->score<<setw(13)<<p4->grade<<setw(13)<<p4->profession<<endl;p4=p4->next;} 实现。程序运行界面如图:34修改学生信息 这个选项可以实现对学生信息的修改。具体实现:首先判断链表是否为空,若链表为空,则提示“没有学生信息!若链表不为空,则提示用户输入需要修改的学生的学号,然后开始查找,若没有找到,则输出提示信息“你要修改的学生信息不存在!”。程序运行界面如图:否则将查找到的学生信息输出到屏幕供用户查阅,接着弹出菜单选项,提示用户选择需要修改的属性,由cout<<"请输入新姓名:";cin>>amendname;strcpy(p3->next->name,amendname); 实现。程序运行界面如图:学生排序 这个选项可以实现按照学号和成绩对学生进行排35序。具体实现:首先判断链表是否为空,若链表为空,则提示“没有学生信息!若链表不为空,则弹出菜单选项,让用户选择是按照学号排序还是按照成绩排序,程序运行界面如图:如果用户选择了 1,则程序运行界面为:如果再继续选择 1,然后执行打印全部,程序运行界面为:程序具体实现方法为:利用switch语句,按照条件调用sortnum(int)函数和sortscore(int)函数。在具体调用过程中其中的int型参数由函数shunxu()传递,其形式为“sortnum(shunxu())”,shunxu()函数其实是一个返回整型数据的菜单函数,确定是按照升序排序还是按照降序排序。排序函数所用的算法为“冒泡排序”,由语句for(i=1;i<=count-1;i++)/*第i轮*/{p2=head;p3=p2->next;36p=p3->next;for(j=1;j<=count-i;j++)/*第j次*/if(p3->score<p->score){p2->next=p;p3->next=p->next;p->next=p3;p2=p;p=p3->next;}else{p2=p3;p3=p;p=p->next;}}实现。保存函数 在程序主菜单里并没有设这一项,因为一般来说,输入的信息就应该被保存,因此为了操作方便, 不需用户操作,程序会进行自动保存,将所有学生信息保存在“ student.txt”文件中,若用户想要查看或使用这些数据,可以直接打开此文件。在添加函数、修改函数、排序函数、删除函数最后面都加上语句“savestudent();”调用保存函数就可以实现随时对学生信息的自动保存。文件保存函数和打印全部函数原理相同,只是一个是输出到文件,一个输出到屏幕。其具体实现方法是先打开文件 (若文件存在,则删除原有数据依次写入,若文件不存在,则先建立文件,在进行写入操作) 。由语句ofstreamoutfile("student.txt",ios::binary);if(!outfile)outfile<<setiosflags(ios::left);p2=head->next;while(p2){outfile<<setw(13)<<p2->num<<setw(13)<<p2->name<<setw(13)<<p2->sex<<setw(13)<<p2->score<<setw(13)<<p2->grade<<setw(13)<<p2->profession<<"\r\n";p2=p2->next;}outfile.close(); 实现。从文件读取信息 此选项可以实现从文件把信息读入到屏幕和程37序。具体实现:只读入到屏幕,这部分功能是只把文件中的信息读入到屏幕上,但并不读入程序,也就是说在执行了这一功能后,在执行printall()函数,程序会显示“没有学生信息!”,因为信息并没有从文件读入到程序中,程序运行界面如图:若用户选则操作 1,则文件中的信息被读入到屏幕,程序运行界面如图:若在执行printall()函数,则依然提醒用户“没有学生信息!”,程序运行界面如图:具体实现方法为:利用get()函数把文件中的信息一个字符一个字符的输出到屏幕,直到遇到文件结束符,由语句charch;while(!infile.eof()){infile.get(ch);cout<<ch;} 实现。至于同时读入到屏幕和程序, 就是在把文件中的信息输出到屏幕的同时, 也输入到程序,也就是说若刚开始运行程序,还没有执行添加函数,链表还是空的,在执行了这一步后,就相当于执行了添加函数,再执行printall()函数,就会打印出所有信息,因为这部分程序的功能就是把文件中的信息读入到程序中,程序运38行界面如图:若用户选则操作2,则文件中的信息不但被读入到屏幕,还同时读入到程序中,程序运行界面如图:若再执行printall()函数,则打印出所有学生信息,程序运行界面如图:程序具体实现方法为:在前面说的执行添加函数、修改函数、删除函数、排序函数后,在调用savestudent()函数的同时,也调用 savestudentreplace(函)数,将所有学生信息保存到另外一个文件replace.txt中,这个文件中保存的信息与student.txt中保存的信息唯一的差别是格式的不同,student.txt文件中信息保存的格式是和在屏幕上输出全部的格式一样,比较工整,便于用户查看,而在replace.txt这个文件上保存的信息,没有标明各个属性的这一行,也没有连续超过一个的空格,特意设置成这种格式,就是为了方便把文件中的信息读入到程序中。具体是首先把 student.txt文件扫描一遍,通过检测换行符的数量确定文件中保存的学生信息的数量,然后利用 getline()函数和strcpy()函数,用在添加函数中同样的添加新节点的方法, 每遇到一个空格就结束一次读入, 直到把所有的学39生信息都读入到程序中,由语句while(!infile.eof()){infile.get(ch);if(ch=='\n')c++;}for(inti=0;i<c-2;i++){p8=newbasic;infilereplace.getline(numamend,12,'');strcpy(p8->num,numamend);infilereplace.getline(amendname,12,'');strcpy(p8->name,amendname);infilereplace.getline(sex,12,'');strcpy(p8->sex,sex);infilereplace>>p8->score;infilereplace.seekg(1,ios::cur);infilereplace.getline(amendgrade,12,'');strcpy(p8->grade,amendgrade);infilereplace.getline(amendprofession,12,'');strcpy(p8->profession,amendprofession);p5=head->next;head->next=p8;p8->next=p5;} 实现。分析统计函数 通过此选项可以实现分数和人数的统计。具体实现:人数统计,可以分别输出总人数、男生人数、女生人数,程序运行界面为:若用户选择1,则分别输出总人数、男生人数、女生人数,程序运行界面为:40具体实现方法为:在类 function中已经定义了成员 count,专门用来统计总学生人数,初始化值为 0,每执行一次添加函

温馨提示

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

评论

0/150

提交评论