资源描述:
《数据结构课程设计报告书--学生奖学金评定系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《数据结构》课程设计报告书题目:学生奖学金评定系统系别:计算机科学与应用学号:081006214学生姓名:蒋文正指导教师:刘双红完成日期:2010年6月10日16目录学生奖学金评定系统31:需求分析32:概要设计33:详细设计43.1:结构体43.2:随机生成文件43.3:读取文件53.4:保存文件73.5:添加信息83.6:删除信息93.7:查询信息103.8:显示链表中的信息113.9:显示获奖学金同学的信息114:调试分析135:测试结果136:总结15指导教师评语:1616学生奖学金评定系统1:需求分
2、析输入部分,要求用户能从屏幕上格式化输入所要求的数据项,例如添加信息的时候输入学生的基本信息:学号、姓名、性别、分数,本程序为方便调试可随机生成100个同学的信息并写入到当前目录中的stuinfo.txt文件中。程序通过对stuinfo.txt文件的读取,得到大量学生的信息,通过使用插入排序方法,按照分数的高低进行降序排列,得到有序单链表。然后通过对链表的操作进行学生信息的添加、查询、删除,在此过程中可随时对链表内修改过的信息进行保存。最终结果将在屏幕上输出获得一、二、三等奖学金同学的名单,同时将结果保存到当
3、前目录下的namelist.txt文件中。开始2:概要设计输入操作序号本程序的流程图如下:添加、删除、查询、排序显示、保存判断序号结束163:详细设计采用VS2010作为开发工具,用结构体定义单链表,对所要处理的学生信息进行存储,分别调用各个功能函数来处理。3.1:单链表信息的存储用链表实现,具体用结构体来定义,其包含的变量有学号、姓名、性别、分数、下结点指针,具体实现如下:structlink{intno;//学号intscore;//分数charname[20];//名字charsex[5];//性别st
4、ructlink*next;};3.2:随机生成文件为方便调试之用,本程序特地编写了本函数用于随机生成调试必须的数据,具体实现如下:voidwenjianwrite(){inti,j;structlinkone;FILE*fp=fopen("stuinfo.txt","w");//创建文件srand(time(0));for(i=0;i<100;i++){one.no=i+1;for(j=0;j<20;j++){16one.name[j]=(char)(rand()%25+63);}one.name[19]=
5、'';if(rand()%2==0){memcpy(one.sex,"boy",5);}else{memcpy(one.sex,"girl",5);}one.score=rand()%100;//随机产生分数fprintf(fp,"%d",one.no);//开始向文件中写信息for(j=0;j<20;j++){fprintf(fp,"%c",one.name[j]);}fprintf(fp,"%c",'');for(j=0;j<5;j++)fprintf(fp,"%c",one.sex[j]);fpri
6、ntf(fp,"%d",one.score);}fclose(fp);printf("随机文件生成成功!");}3.3:读取文件读取文件中的信息,读取过程中用插入排序的方法,按照分数降序排列,并在插入过程中查找是否有相同的学号,如有则拒绝插入,体现了数据的正确性,具体实现如下:voidwenjianread(structlink*head){structlink*one,*p,*q;inti,state;FILE*fp;//定义文件指针p=head->next;q=head;while(head->nex
7、t!=NULL){if(p->next==NULL)16{q->next=NULL;//防止链表悬空free(p);//释放不必要的内存空间p=head->next;q=head;continue;}p=p->next;q=q->next;}fp=fopen("stuinfo.txt","r");//读取文件if(fp==NULL){printf("!openfilefailed!");return;}for(;!feof(fp);){state=0;one=(structlink*)mall
8、oc(sizeof(structlink));one->next=NULL;fscanf(fp,"%d%s%s%d",&one->no,one->name,one->sex,&one->score);//printf("%d%s%s%d",one.no,one.name,one.sex,one.score);p=head->next;while(1){if(p==NULL)break;if(p-