C语言课程设计报告学生成绩管理系统Word下载.docx
- 文档编号:17450414
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:17
- 大小:21.27KB
C语言课程设计报告学生成绩管理系统Word下载.docx
《C语言课程设计报告学生成绩管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生成绩管理系统Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
语文成绩状况
9:
数学成绩状况
10:
英语成绩状况
11:
计算机成绩状况
12:
?
13:
退出系统
二、数据结构设计:
程序设计中用到的结构体类型:
学生信息结构体类型:
typedefstructstudent{
charname[MAX];
intnum[MAX];
charsex[MAX];
intchinese;
intmathematic;
intenglish;
intcomputer;
structstudent*next;
}
程序代码:
//原始密码是123456
#include"
stdio.h”
stddef.h”
#include”stddef。
h”
string.h"
#defineMAX10
typedefstructstudent{/*定义结构体*/
charname[MAX];
/*姓名*/
intnum[MAX];
/*学号*/
charsex[MAX];
/*性别*/
intchinese;
/*语文*/
intmathematic;
/*数学*/
/*英语*/
/*计算机*/
/*结构体指针*/
}stu;
stu*head;
/*头指针*/
voidprint()/*显示或打印函数*/
{
system("
cls"
);
printf(”\t\t\tScoreManageSystem\n”);
/*成绩管理系统*/
printf(”〈1〉EnterRecord\t"
);
/*输入数据*/
printf(”〈2〉Display\t”);
/*显示*/
printf("
<
3>
Insert\t"
/*插入数据*/
printf(”<
4〉Quest\t”);
/*访问数据*/
〈5〉Update\t"
/*以前数据*/
6〉Save\t"
/*保留数据*/
7〉Fresh\t"
/*更新数据*/
printf(”〈8>
ChineseAverage\t"
/*语文平均成绩*/
9〉MathAverage\t"
/*数学平均成绩*/
10〉EnglishAverage\t”);
/*英语平均成绩*/
〈11〉ComputerAverage\t”);
/*计算机平均成绩*/
〈12〉Quit\t\n"
/*退出*/
voidcin(stu*p1)/*输入相关数据的函数*/
{printf("
Entername:
\n”);
scanf("
%s”,&p1—>
name);
printf(”Enternum:
scanf(”%d"
,&p1—〉num);
Entersex:
\n”);
%s”,&p1->
sex);
printf(”Enterscore:
printf(”Enterchinese:
scanf(”%d"
&p1—〉chinese);
printf(”Entermath:
\n"
scanf(”%d”,&p1—〉mathematic);
printf(”EnterEnglish:
scanf(”%d”,&p1—>
english);
printf(”EnterComputer:
%d"
,&
p1—>
computer);
stu*cindata()/*其他数据是否继续输入的函数*/
{stu*p1,*p2;
inti=1;
charch;
p1=(stu*)malloc(sizeof(stu));
head=p1;
while(i)
{
cin(p1);
DoyouWanttoContinue?
yesorno”);
/*是否继续输入数据*/
ch=getchar();
if(ch==’n’||ch==’N'
)
{i=0;
p1—〉next=NULL;
else
{p2=p1;
p1=(stu*)malloc(sizeof(stu));
p2-〉next=p1;
}
return(p1-〉next);
}
stu*lookdata(stu*p1)/*查看数据的函数*/
while(p1!
=NULL)
{printf(”Num:
%d\t"
,p1-〉num);
Name:
%s\t"
,p1—>
printf(”Sex:
%s\t”,p1—〉sex);
printf(”\n"
printf(”Chinese:
%d\t"
,p1—〉chinese);
printf(”Math:
%d\t”,p1—〉mathematic);
printf(”English:
english);
printf(”Computer:
%d\t”,p1—>
printf(”\n”);
p1=p1-〉next;
returnp1;
voidinsert()/*通过比较学号来插入数据的函数*/
{stu*p1,*p3,*p2;
charch;
p1=head;
p3=(stu*)malloc(sizeof(stu));
p3—〉next=NULL;
if(head==NULL){head=p3;
return;
cin(p3);
while(p1!
=NULL&
&
(p1—>
num<
p3—〉num))/*通过学号的比较来插入*/
{p2=p1;
p1=p1—〉next;
if(p2==head){p3—>
next=head;
head=p3;
p3—〉next=p1;
p2->
next=p3;
find(stu*p2)/*通过姓名查找查看数据的函数*/
{charname[20];
intb=0;
printf(”Enterthenameofthestudentyouwanttofind:
”);
/*通过姓名查看*/
scanf(”%s”,name);
while(p2!
{if(strcmp(name,p2-〉name)==0)
printf(”Thedatayouwanthasbefound\n”);
Name:
%s\t”,p2—〉name);
Num:
,p2—>
num);
printf(”sex%s\t”,p2->
printf(”Chinese:
%d\t”,p2—〉chinese);
printf(”Math:
%d\t”,p2-〉mathematic);
%d\t”,p2—>
%d\t”,p2—〉computer);
printf(”\n”);
b=1;
elseif(b==0)
printf(”sorrynotfinddata!
p2=p2—>
next;
if(b==1)
print();
printf(”Findone\n”);
{print();
Notfind\n”);
}
voidcaverage()/*求各学生语文平均分、最高和最低分成绩的函数*/
{stu*p1;
inti;
floatmax=0.0,min=200.0;
floatsum=0。
0,aver=0;
if(p1==NULL)
notdata!
"
{for(i=0;
p1!
=NULL;
i++,p1=p1—〉next)
sum+=p1—〉chinese;
aver=sum/i;
for(i=0;
p1!
=NULL;
i++,p1=p1—>
next)
{if(max〈p1-〉chinese)
max=p1-〉chinese;
i++,p1=p1—>
if(min〉p1—〉chinese)
min=p1—〉chinese;
ChineseAverage:
%f”,aver);
printf(”ChineseMax:
%f”,max);
printf(”ChineseMin:
%f"
,min);
voidmaverage()/*求各学生数学平均分、最高和最低分成绩的函数*/
{stu*p1;
inti;
floatmax=0。
0,min=200。
0;
printf(”notdata!
i++,p1=p1->
sum+=p1—〉mathematic;
p1=head;
for(i=0;
{if(max<
p1-〉mathematic)
max=p1—〉mathematic;
i++,p1=p1-〉next)
if(min>
mathematic)
min=p1-〉mathematic;
printf(”MatheAverage:
%f”,aver);
printf(”MatheMax:
max);
MatheMin:
%f"
voideaverage()/*求各学生英语平均分、最高和最低分成绩的函数*/
floatmax=0.0,min=200.0;
{for(i=0;
sum+=p1—>
english;
{if(max〈p1—〉english)
max=p1-〉english;
i++,p1=p1—〉next)
p1—〉english)
min=p1—〉english;
printf(”EnglishAverage:
printf(”EnglishMax:
%f”,max);
printf(”EnglishMin:
%f”,min);
voidcomaverage()/*求各学生计算机平均分、最高和最低分成绩的函数*/
{stu*p1;
0,min=200.0;
floatsum=0.0,aver=0;
”);
computer;
aver=sum/i;
i++,p1=p1->
{if(max〈p1—>
computer)
max=p1->
if(min〉p1—〉computer)
min=p1-〉computer;
printf(”ComputerAverage:
printf(”ComputerMax:
%f”,max);
printf(”ComputerMin:
min);
update(stu*p2)/*通过姓名查找来更新数据*/
charname[10];
/*p2为指向结构体structstudent的指针*/
intb=0;
printf(”EnterTheName”);
/*输入姓名*/
%s”,name);
{if(strcmp(name,p2->
name)==0)
Findyoudata\n”);
scanf(”Name:
%s”,p2—>
name);
scanf(”Num:
%s"
num);
scanf(”Sex:
%s"
p2->
sex);
scanf(”Chinese:
%d”,p2—〉chinese);
scanf(”Math:
%d”,p2—>
mathematic);
scanf(”english:
%d”,p2—〉english);
scanf(”Computer:
p2—〉computer);
Success!
b=1;
printf(”SorrynotFinddata!
next;
if(b==0)
{print();
printf(”SorrynotFinddata!
print();
printf(”Finish!
save(stu*p2)/*保留数据函数*/
FILE*fp;
charfile[10];
Enterfilename”);
/*输入文件名*/
file);
fp=fopen(file,”w”);
fprintf(fp,"
fprintf(fp,”%s”,p2—>
fprintf(fp,"
%d”,p2—〉chinese);
fprintf(fp,”%d”,p2-〉mathematic);
fprintf(fp,”%d”,p2—〉english);
fprintf(fp,”%d”,p2—〉computer);
p2=p2-〉next;
fclose(fp);
charpassword[7]=”123456”;
/*定义初始密码*/
voidmain()/*主函数*/
{intchoice;
stu*p2;
chars[8];
intflag=0,i;
/*标志项*/
intn=3;
do{printf(”Enterpassword:
%s”,s);
if(!
strcmp(s,password))/*进行密码匹配验证*/
PASS\n\n\n"
flag=1;
break;
else{
printf(”ErrorEnteragain:
n——;
while(n〉0);
if(!
flag)
{printf("
youhaveEnter3times!
/*输入密码超过了3次!
!
*/
exit(0);
/*自动退出*/
/*密码验证成功后进入的界面*/
~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n”);
/*操作界面*/
\t\tWelcomtotheMis\n”);
Author:
—-—-—\tClass:
-—-——-\tNum:
———-—-\n"
/*作者,班级和号码*/
printf(”Adress:
HG\n"
/*地址*/
printf(”%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"
printf(”\t\tEnterOP:
printf(”\n\n\n\n”);
==============\t\t==============\n”);
==============\t\t==============\n”);
\t\tEntertheMISyesorno\n"
/*问进入系统与否*/
%d”,&
choice);
if(choice==’n’||choice==’N’)
exit
(1);
while
(1)
printf(”Enterchoice:
scanf(”%d”,&i);
if(i〈1||i〉13)
Enternumfrom1to13:
/*再从1—13中进行选择*/
switch(i)
{case1:
p2=cindata();
/*其他数据是否继续输入的函数*/
case2:
p2=lookdata(head);
/*查看数据的函数*/
case3:
insert();
/*通过比较学号来插入数据的函数*/
case4:
find(head);
/*通过姓名查找查看数据的函数*/
case5:
update(head);
/*通过姓名查找来更新数据*/
case6:
save(head);
/*保留数据函数*/
break;
case7:
/*显示或打印函数*/
case8:
caverage();
/*求各学生语文平均分、最高和最低分成绩的函数*/
case9:
maverage();
/*求各学生数学平均分、最高和最低分成绩的函数*/
case10:
eaverage();
/*求各学生英语平均分、最高和最低分成绩的函数*/
case11:
comaverage();
/*求各学生计算机平均分、最高和最低分成绩的函数*/
case12:
;
/*空操作*/
case13:
exit
(1);
,&i);
程序中出现的问题及解决方法
问题一、学生初始信息模块:
其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;
可用函数cin(stu*p1)来实现此操作.当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。
解决办法及步骤:
1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有.
2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错
3、输出用于循环检查语句中的学生信息,发现乱码
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量.
问题二、查询模块:
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息.
问题三、插入模块:
其中通过学号的大小来比较的,并且以此来排序。
当我们输入插入信息时,系统却提示插入不进数据。
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 学生 成绩管理系统