学生成绩管理系统,数据结构课程设计_第1页
学生成绩管理系统,数据结构课程设计_第2页
学生成绩管理系统,数据结构课程设计_第3页
学生成绩管理系统,数据结构课程设计_第4页
学生成绩管理系统,数据结构课程设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

课程设计务书学姓:指教:

专班:工单:题

目:学成管系已技参和计求现有学生成绩信息文件1(容如下姓名学语文数英语张明明01677882李成友02789188张辉灿03688256王露04564577陈东明05673847…......…学生成绩信息文件2(cj2.txt,内容如:姓名学语文数英语陈果31576882李华明32889068张明东33484256李明国34504587陈道亮35475877…......…试编写一管理系,其本能求实现对两个文件数据进行合并,成新文件cj3.txt抽取出三科成绩中有补考的学生并保存在一个新文件cj4.txt对合并后的文件3.txt中数据按总分降序排至少采用两种排序方法实)输入一个学生姓名后能查找到此学生的信息并输出结(少采用两种查找方法实现)要求使用结构体,链或数组等实上述要.采用多种方法且算法正确,可当加.要完的要务:一需分

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)数据结构程设计说明

、问题描述现如今,学校人数的暴涨,对学生基本信息的录入,保存量越来越大,为了简化对工作人员的作,故设计一个程序来完成对学生基本信息的录入,保存,编辑等简单操作。、基本任务()对生信息表cj1和cj2进行合并;()把并的信息生成cj3;()把cj3中补考的学生息生成cj4;()对并后的文件3.txt中的数据按总分降序排序;()输一个学生姓名后能找到此学生的信息并输出结果。二概设为了完成需求分析的基本任务,主要从以下3个面进行设计:1主界面设为了实现学生成绩管理系统的各项功能,设计了一个含有多个菜单项的主控菜单模块以链接系的各项功能,以方便用户使用系统。系统主控菜单运行界面如图1所:图1学成绩管理系统主菜单2数结设系统采用链表的顺序存储结构个符数组存储学生姓名个型数存储学生学号﹑语文成绩﹑数学成绩﹑英语成绩。和一个结构体数组。3系功设(从c盘读取cj1.txt和cj2.txt中学生成绩信息序会给出提示为如果在c盘下存在这两个文件那么程序将不能继续会自动退出。(程给出选择是否将从c盘读取的学生信息保存到盘下cj3.txt中如您选择是那程序将执行如在c盘在一个为cj3.txt的文件那程序将用读取的信息将其覆盖果存在,

则系统会自动生成一个名为cj3.txt的文将数据放入其中。(会出选择是否将中有补考的学生信息生成一个cj4.txt的件您择是。那么程序将会执行。对于在c盘否有名为cj4.txt的件的处理和上面一样。()序会给出按总分大小排序的选项。程序设计了两种排序方法—直接插入法排序和冒泡排。(5)最后程序设计了一个循环,现根据学生姓名查找学生成绩信息。如果你所输入的学生姓名不存在,程序将会输出“查无此人”的提示符并提示是否继续查找。你可根据需要选择。如果选否,程序退出。三模设【主程序模块voidmain(){fp=fopen(,"rt");从文本文件cj1.txt中读取数据传向cj3.txtfp=fopen(,"rt"//从文本文件cj2.txt中读取数据接到cj3.txt的后面fp=fopen(,"rt"//从合成后的cj3.txt读取数据,生成链表fp=fopen(,"wt"//把三科成绩中有补考的学生信息放入for{}//接插入法排序for{}//泡法排序do{}while}【功能模块调用关系图】主程序模块读取学生信息排序查找

【模板详细设计】成绩管理系统读取数据从cj1.txt中从cj2.txt中

合并数据生成cj3.txt生成cj4.txt

成绩排序直接插入法打乱

姓名查找输入姓名

退出本系统冒泡法typedefstructLNode{charname[6];intno;intyw;intsx;intyy;structLNode*next;}LinkList;structNameNo{intno;intyw;intsx;inttotal;charname[6];}st[10];四详设(c盘根目录下打开c用FILE指针fp指向cj1.txt,fp=fopen("c:\\cj1.txt","rt")再用一个ILE型指针*fp1打开cj3.txt。使fp1=fopen("c:\\cj3.txt","wt")对j3.txt只写。后循环使用c和putc(ch,fp1)cj1.txt信息复制cj3.txt中if((fp=fopen("c:\\cj1.txt","rt"))==NULL)//文本文件cj1.txt中读取数据传向

cj3.txt{printf("无cj1.txt文本文件,程序结束。无cj1.txt程序将无法进行。return;//程序退出}fp1=fopen("c:\\cj3.txt","wt");//打开cj3.txt写ch=fgetc(fp);//从cj1.txt中读取一个字符存入h中while(ch!=EOF)//循环{fputc(ch,fp1);//把ch中的字符写入cj3.txtch=fgetc(fp);}fclose(fp1);fclose(fp);2fp=fopen("c:\\cj2.txt","rt")。*fp1打开cj3.txt追加。因cj2.txt中一行是提示,cj1.txt已经存在,所以它是多余的,循fgetc(fp)三十六次把指针移动到下一行。ch=fgetc(fp)fputc(ch,fp1)把j2.txt的信息追加到cj3.txt中部。3中p=(LinkList*)malloc(sizeof(LinkList));p->next=NULL;fp=fopen("c:\\cj3.txt","rt");//从合成后的j3.txt读取数据,生成链表for(i=0;i<36;i++)fgetc(fp);ch=fgetc(fp);while(ch!=EOF){s=(LinkList*)malloc(sizeof(LinkList));fgets(s->name,7,fp);for(i=0;i<5;i++)fgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->no=x;for(i=0;i<5;i++)

fgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->yw=x;for(i=0;i<5;i++)fgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->sx=x;for(i=0;i<5;i++)fgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->yy=x;s->next=p->next;p->next=s;ch=fgetc(fp);}fclose(fp);4fputs("姓名学号语文fclose(fp);fp=fopen("c:\\cj4.txt","a");s=p->next;while(s!=NULL){

数学

英语",fp);if(s->yw<60||s->sx<60||s->yy<60){ch='\n';fputc(ch,fp);fputs(s->name,fp);for(i=0;i<5;i++){ch='';fputc(ch,fp);}ch=s->no/10+48;fputc(ch,fp);ch=s->no-(s->no/10)*10+48;fputc(ch,fp);

for(i=0;i<5;i++){ch='';fputc(ch,fp);}ch=s->yw/10+48;fputc(ch,fp);ch=s->yw-(s->yw/10)*10+48;fputc(ch,fp);for(i=0;i<5;i++){ch='';fputc(ch,fp);}ch=s->sx/10+48;fputc(ch,fp);ch=s->sx-(s->sx/10)*10+48;fputc(ch,fp);for(i=0;i<5;i++){ch='';fputc(ch,fp);}ch=s->yy/10+48;fputc(ch,fp);ch=s->yy-(s->yy/10)*10+48;fputc(ch,fp);s=s->next;}elses=s->next;}fclose(fp);56

五调分(1)编译,调过后,行程序。(2)输入选择进行两的合成和生cj4.txt

(3)合成成功,选择总分进行直插入法序。(4)打乱排序再用冒法排序。

(5)入姓名行查找六用手1本序的特点是我们不在需要从键盘上输入数据是接从已有文件中读取数据在据很大时或者需要反复使用同一个数据时有很大的优势。2、要程序运行的关键是在c盘存在cj1.txt和cj2.txt两文,用户在使用是需得注意。3、本人在写程序时重心主要放对数据的处理上,所以在界面设计方面还做得不好,请多多包涵。4、程序操作很简单,只要按提操作即可完成要求的内容。

七参文1据结构教程(第三版李葆尹民编著C言程序设计(第三版何铭颜晖主据结构教程机实验指导》李春葆编八程设总

清华大学出版社高等教育出版社清华大学出版社通过两个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。是啊,读了么多年的书,课程设计可是第一次。看着劳动成果,很欣慰!虽然这不是我一个人做的,是大家共同努力得来的。“也许完成不了!”两个星期前我们这样说,“完成他没问题!”一个星期前我们这样说,现我们可以说:“哈哈,完成啦”!刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于画图方面的,可是这点进展远远不够,这只是一个小小的开始。下一步是上网查,找到了些与我们题目相似的,那时我每个人都很高兴,可是那还不是我们要的,于是又上网查到了些有关的函数等等,终于在我们大家的力下,完成了这个程序。虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!上无难事,只怕有心人,的确如此。做完这个程序最大的收获就是感受到了集体的力量,当然个的智慧也是很重要的哦!做完这个课程设计,我们的自信一下子提高了,我们也会写程序了;尽管对于有些人这种程序很简单可对我们C语初学者来说经很不容易了次体验为以后的学习计算机的我们增强了心。享受劳动成果的滋味实在很美妙啊!九程源码录#include<stdio.h>#include<stdlib.h>voidmain(){typedefstructLNode{charname[6];intno;intyw;intsx;intyy;structLNode*next;}LinkList;structNameNo{intno;

intyw;intsx;inttotal;charname[6];}st[10];FILE*fp,*fp1;charch,sname[6];intx,i,j;NameNotmp;LinkList*p,*s;printf();printf();printf("学生成绩管理系统");printf(printf();printf("在您的盘根目录下是否有j1.txtcj2.txt件?如果有请输入,);printf("否则输入;如果没有,那么程序将终止!?"scanf(,&i);ifreturnprintf();printf("对j1.txtcj2.txt进行合成请按‘’");scanf(,&i);ifreturnprintf("正在把j1.txtcj2.txt的数据进行合并\n");printf();if"rt"从文本文件j1.txt读取数据传向cj3.txt{printf("无j1.txt本文件,程序结束。);return}fp1=fopen(,"wt"ch=fgetc(fp);while{fputc(ch,fp1);ch=fgetc(fp);}fclose(fp1);fclose(fp);if"rt"从文本文件j2.txt读取数据接到cj3.txt后面{printf("无本文件,程序结束。);return}

fp1=fopen(,"a");forfgetc(fp);ch=fgetc(fp);while{fputc(ch,fp1);ch=fgetc(fp);}fclose(fp1);fclose(fp);printf("合并成功!现在你可以在盘根目录下看到一个cj3.txt件\n"printf();p=(LinkList*)malloc((LinkList));p->next=NULL;fp=fopen(,"rt");//从合成后的j3.txt取数据,生成链表forfgetc(fp);ch=fgetc(fp);while{s=(LinkList*)malloc((LinkList));fgets(s->name,7,fp);forfgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->no=x;forfgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->yw=x;forfgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->sx=x;forfgetc(fp);x=fgetc(fp)-48;x=x*10+fgetc(fp)-48;s->yy=x;s->next=p->next;

p->next=s;ch=fgetc(fp);}fclose(fp);printf("对j3.txt有不及格的学生信息生成j4.txt按‘’);scanf(,&i);ifreturnprintf("正在生成j4.txt\n");printf();iffp=fopen(,"wt");//把三科成绩中有补考的学生信息放入j4.txtfputs(姓

学号语文

数学

英语"fclose(fp);fp=fopen(,"a"s=p->next;while{if{ch=;fputc(ch,fp);fputs(s->name,fp);for{ch='fputc(ch,fp);}ch=s->no/10+48;fputc(ch,fp);ch=s->no-(s->no/10)*10+48;fputc(ch,fp);for{ch='fputc(ch,fp);}ch=s->yw/10+48;fputc(ch,fp);ch=s->yw-(s->yw/10)*10+48;fputc(ch,fp);for{ch='fputc(ch,fp);

}ch=s->sx/10+48;fputc(ch,fp);ch=s->sx-(s->sx/10)*10+48;fputc(ch,fp);for{ch='fputc(ch,fp);}ch=s->yy/10+48;fputc(ch,fp);ch=s->yy-(s->yy/10)*10+48;fputc(ch,fp);s=s->next;}elses=s->next;}fclose(fp);printf("生成成功!现在你可以在盘根目录下看到一个cj4.txt件"printf();s=p->next;//将学生信息从链表复制到数组中for{st[i].no=s->no;st[i].yw=s->yw;st[i].sx=s->sx;st[i].total=s->yw+s->sx+s->yy;forst[i].name[j]=s->name[j];s=s->next;}printf("用直接插入法排序请按‘’:);scanf(,&i);printf();if{for//直接插入法排序{tmp=st[i];j=i-1;while{

st[j+1]=st[j];j--;}st[j+1]=tmp;}printf(printf();

直接插入法排序后总分从大到小排序为);printf("姓名

学号

语文

数学

英语

总分);for{if{printf("printf(printf("printf("printf("printf("printf(,st[i].total);printf(}else{printf("printf("printf("printf("printf("printf(,st[i].total);printf();}}}printf("将排好序的数组打乱n"printf();s=p->next;//将排好序的数组打乱,从新用冒泡法排序for{st[i].no=s->no;st[i].yw=s->yw;st[i].sx=s->sx;st[i].total=s->yw+s->sx+s->yy;forst[i].name[j]=s->name[j];

s=s->next;}printf("用冒泡法排序请按‘’:);scanf(,&i);printf();if{for//冒泡法排序{forif{tmp=st[j];st[j]=st[j-1];st[j-1]=tmp;}}printf(printf();

冒泡法排序后总分从大到小排序为n"printf

温馨提示

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

评论

0/150

提交评论