学生成绩管理系统数据结构课程设计.docx
《学生成绩管理系统数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据结构课程设计.docx(56页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统数据结构课程设计
算法与数据结构课程设计---学生成绩管理系统
《算法与数据结构课程设计》
综合实验
课程设计名称:
学生成绩管理系统
专业:
计算机科学与技术
学生成绩管理系统
一、问题的描述和分析
1.1问题的描述
随着社会的发展和经济时代的到来,管理信息系统在各行各业都越来越重要,特别是教育事业。
在经济发达的国家,许多教育机构(如公办、私立、培训机构等),都投入了大量的资金开发MIS系统,以求在将来激烈的竞争中立于不败之地。
在我国,民办教育是新兴的一个行业,是随着改革开放和市场经济的发展根据中国特有的国情发展起来的,特别是中国民办教育促进法的出台,从一定的程度上规范和促进了中国民办教育的发展,这是一个很有发展前途的新兴产业,但是同发达国家相比,我国的民办教育行业的信息技术的应用程度还很低,只有在大城-0-
算法与数据结构课程设计---学生成绩管理系统
市中发展较早、规模较大的民办院校中才使用计算机进行大规模操作,从各方面提高工作效率,取得良好的社会和经济效益,而一些新兴的、规模较小的民办机构还没有全部具备这种功能。
因此可见,随着我国民办教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。
1.2现有系统存在问题的分析
有的学校根本就没有系统,还是手工操作计算机日新月异的发展,但是有的领导只见眼前利益,不关心,甚至不敢尝试新兴的事物。
手工操作还十分落后,效率极低,成本很大,以后的社会是信息的社会,信息只有快,准,精才能发挥其价值。
所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。
人工操作必将被计算机代替。
有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。
还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统能有保障吗?
所以制作一个完善的学生管理系统是必不可少的。
二、数据结构的设计
structperson
{
charname[20];
longnum;
floatmath;
floatEnglish;
floatchinese;
floataverage;
floatsum;
}student;
三、模块:
-1-
算法与数据结构课程设计---学生成绩管理系统
学生成绩管理系统模块四、算法的设计在此成绩管理系统中,要求用户输入的只是有字符型和数值型数据,所以我设计了下面函数1.-2-
算法与数据结构课程设计---学生成绩管理系统
来处理并对输出的数据进行检验。
gets(numstr);intN=0;
Enter()
student.English=atof(numstr);{
printf(\
yourFILE*fp;chinese:
);
charch;gets(numstr);charch2;charnumstr[20];student.chinese=atof(numstr);
structpersonstudent2;
student.sum=student.chinese+student.matclrscr();
h+student.English;
fp=fopen(jie.txt,ab);
if(fp==NULL)student.average=student.sum/3;
{
printf(can'topenthisfwrite(&student,sizeof(struct
file.\n);
person),1,fp);
withforasecondprintf(waitN++;
patience.\nthesystemisexiting.\n);printf(Doyoucontinue
getch();addingotherstudents(Y/N)?
\n);
exit(0);ch=getchar();
}getchar();
else}while(ch=='y'||ch=='Y');
{}
do{
printf(Showall(Y/N)?
\n);
printf(yourname:
);ch2=getchar();
gets(student.name);getchar();
printf(\
yournum:
);if(ch2=='y'||ch2=='Y')
gets(numstr);
Listall();
student.num=atol(numstr);fclose(fp);
printf(\
yourmath:
);return_confirm();
gets(numstr);clrscr();
}
student.math=atof(numstr);
printf(\
your
English:
);
查询学生记录2.即按学号或按姓名进行查询。
当用户执行此查询任务时,系统会提示用户进行查询字段的选择,-3-
算法与数据结构课程设计---学生成绩管理系统
若此学生记录存在,则会打印输出此学生记录的信息。
Search()
ch2=getchar();
{
getchar();charchoice;
}while(ch2==charch1;
'y'||ch2=='Y');
charch2;
printf(Searchcharch3;
byotherways(Y/N)?
\n);
charch4;
ch3=getchar();charname[20];
getchar();longnum;
charnumstr[20];
if(ch3=='y'||ch3=='Y')
clrscr();
gotoLoop2;printf(***WAYSOF
break;SEARCHING***\n);
case'2':
printf(---------------------------\n)do{
;
Loop2:
printf(**1.name
**\n);
wantyouofprintf(**2.numstudentsprintf(inputthenum
tosearch:
\n);
**\n);
gets(numstr);
牰湩晴尨?
?
?
?
?
?
?
?
?
?
?
?
?
?
屜屮num=atol(numstr);
);
Search2(num);printf(giveyourchoice:
\n);
printf(GOONchoice=getchar();
SEARCHINGBYNUM(Y/N)?
\n);getchar();
while(choice>'2'||choice<'1')
ch1=getchar();
{
getchar();printf(Sorry.yourchoiceis
}while(ch1=='y'||wrong.\npleasegiveacorrectone:
\n);
ch1=='Y');choice=getchar();
}getchar();
}
}
Search2(longnum)根据姓名或学号进行查找3.
{
switch(choice)
FILE*fp;{
charch;case'1':
do{
intflag=0;Loop1:
intt;
clrscr();
printf(inputthenameofstudentsyou
fp=fopen(jie.txt,
b);wanttosearch:
\n);
if(fp==NULL)gets(name);
{
printf(can'topenthisSearch1(name);
file.\n);
printf(GOON
with
SEARCHINGBYNAEM(Y/N)?
\n);
forasecondprintf(wait
4
算法与数据结构课程设计---学生成绩管理系统
exit(0);patience.\nthesystemisexiting.\n);
}getch();
elseexit(0);
{
}
flag=0;
else
t=0;{
flag=0;
while(fread(&student,sizeof(structt=0;
person),1,fp))
while(fread(&student,sizeof(struct
if((strcmp(name,student.name))==0)person),1,fp))
{if(num==student.num)
{
printf(
ame\t\tnum\tchinese\tEnglish\t
math\sum\taverage\n);printf(
ame\t\tnum\tchinese\tEnglish\tmath\sum\taverage\n);
printf(%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8
.2f%-8.2f\n,student.name,student.num,sprintf(%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8tudent.chinese,student.English,student..2f%-8.2f\n,student.name,student.num,smath,student.sum,student.average);tudent.chinese,student.English,student.t=1;math,student.sum,student.average);
break;t=1;
}break;
if(t==0)
}
printf(Sorry.theif(t==0)
studentyouaresearchingnotprintf(Sorry.the
existed.\n);
studentyouaresearchingnot
rewind(fp);existed.\n);
}
rewind(fp);
fclose(fp);}
}
fclose(fp);
Delete()}
{
Search1(char*name)
FILE*fp;
{
structperson
FILE*fp;
student1[30],student2[30];charch;
inti;intflag=0;
intk;intt;
intj;clrscr();
intflag;fp=fopen(jie.txt,
b);
charch1;
if(fp==NULL)
charname[20];{
charch;printf(can'topenthis
charch2;file.\n);
clrscr();
forasecondprintf(waitwith
fp=fopen(jie.txt,
b+);patience.\nthesystemisexiting.\n);
if(fp==NULL)
getch();
5
算法与数据结构课程设计---学生成绩管理系统
}
{
printf(j=%d\n,j);printf(can'topenthis
k=j;file.\n);
i=0;withprintf(waitforasecond
fclose(fp);patience.\nthesystemisexiting.\n);
if(flag==0)
getch();
printf(Sorry.thestudentexit(0);
youaresearchingnotexisted.\n);}
if(flag==1)else
{
printf(Congratulation!
youdo{
succeed!
!
!
\n);
i=0;
fp=fopen(jie.txt,wb+);j=0;
if(fp==NULL)flag=0;
{
printf(inputthenameof
printf(can'topenstudentsyouaregoingtodelete.\n);
thisfile.\n);
scanf(%s,name);
printf(waitfora
secondwithpatience.\nthesystemiswhile(fread(&student,sizeof(struct
exiting.\n);
person),1,fp)==1)
getch();{
exit(0);
}if((strcmp(name,student.name))!
=0)
else{
{
i=0;student2[j]=student;
do{j++;
}
fwrite(&student2[i],sizeof(structelse
person),1,fp);
{
i++;flag=1;
}while(i}printf(
ame\t\t\tnum\tchinese\t\tEngliLoop:
sh\t\tmath\tsum\taverage\n);
getchar();
printf(Goon(Y/N)?
\n);printf(%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%ch=getchar();8.2f\n,student.name,student.num,studengetchar();
t.chinese,student.English,student.math,}while(ch=='y'||ch=='Y');student.sum,student.average);
printf(Showall(Y/N)?
\n);
ch2=getchar();printf(Delete(Y/N)?
\n);
getchar();
ch1=getchar();
if(ch2=='y'||ch2=='Y')getchar();
{
toupper(ch);
rewind(fp);if(ch=='N')
gotoLoop;
printf(
ame\t\t\tnum\tchinese\t\tEngli}
6
算法与数据结构课程设计---学生成绩管理系统
do{
sh\t\tmath\tsum\taverage\n);
flag=0;
while(fread(&student,sizeof(struct
fread(&student,sizeof(structperson),1,fp))
person),1,fp);{
if((strcmp(name,student.name))==0)printf(%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%{
8.2f\n,student.name,student.num,studenflag=1;t.chinese,student.English,student.math,printf(he
student.sum,student.average);
being}studentisinformationoffollowing
deleted:
\n);
}
}
printf(
ame\t\tnum\tmath\tchinese\tEngfclose(fp);
lish\tsum\taverage\n);return_confirm();
}
printf(%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%4.修改学生记录
8.2f\n,student.name,student.num,studen在修改学生记录操作中,系统会先按输入的t.chinese,student.English,student.math,学号或姓名查找该记录,然后提示用户修改student.sum,student.average);学号或姓名之外的值,但学号或姓名不能修do{改。
Revise()
printf(***informationsfor{
revising***\n);
FILE*fp;
charch;
printf(===============================charch1;
=====\n);
longoffset=sizeof(structperson);
printf(#1.nameintflag=0;
2.num#\n);
charnumstr[20];
printf(#3.mathcharname[20];
4.English#\n);
clrscr();
printf(#
fp=fopen(jie.txt,
b+);
5.chinese6.total#\n);if(fp==NULL)
{
printf(===============================printf(can'topenthis
=====\n);
file.\n);
printf(giveaforasecondprintf(waitwith
choice:
\n);
patience.\nthesystemisexiting.\n);
ch=getchar();getch();
getchar();exit(0);
}
while(ch>'6'||ch<'1')else
{{
again:
printf(Sorry.youputiswrong.\npleaseprintf(
ameofrivesing
inputanotherchoice:
\n);
student:
\n);
ch=getchar();
gets(name);
7
算法与数据结构课程设计---学生成绩管理系统
ass_revise(
um);
getchar();
}
gets(numstr);
switch(ch)
{
student.num=atol(numstr);
case
'1':
ass_revise(
ame);
ass_revise(math);
gets(student.name);
gets(numstr);
break;
student.math=atof(numstr);
case
'2':
ass_revise(
um);
ass_revise(English);
gets(numstr);
gets(numstr);
student.num=atol(numstr);
student.English=atof(numstr);
break;
ass_revise(chinese);
case
'3':
ass_revise(math);
gets(numstr);
gets(numstr);
student.chinese=atof(numstr);
}student.math=atof(numstr);
student.sum=student.chinese+student.matbreak;
h+student.English;
case
'4':
ass_revise(English);
student.average=student.sum/3;
gets(numstr);
printf(Continuerevisingthesame
student(Y/N)?
\n);
student.English=atof(numstr);
ch1=getchar();
break;
getchar();case
}while(ch=='y'||c'5':
ass_revise(chinese);
h=='Y');
fseek(fp,-offset,1);gets(numstr);
fwrite(&student,sizeof(structstudent.chinese=atof(numstr);
person),1,fp);
printf(he
break;
followingisinformationofstudenthadcase
beenrevised:
\n);'6':
ass_revise(otal);
printf(
ame\t\tnum\tmath\tchinese\tEnggets(student.name);
lish\tsum\taverage\n);
8
算法与数据结构课程设计---学生成绩管理系统
}
rewind(fp);printf(%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%i=0;8.2f\n,student.name,student.num,student.chinese,student.English,student.math,while(fread(&student1[i],sizeof(structstudent.sum,student.average);
person),1,fp))
i++;printf(Congratulation!
you
k=i;succeed!
!
!
\n);