C 语言课程设计报告.docx

上传人:b****5 文档编号:29380517 上传时间:2023-07-22 格式:DOCX 页数:23 大小:19.60KB
下载 相关 举报
C 语言课程设计报告.docx_第1页
第1页 / 共23页
C 语言课程设计报告.docx_第2页
第2页 / 共23页
C 语言课程设计报告.docx_第3页
第3页 / 共23页
C 语言课程设计报告.docx_第4页
第4页 / 共23页
C 语言课程设计报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C 语言课程设计报告.docx

《C 语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C 语言课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。

C 语言课程设计报告.docx

C语言课程设计报告

C语言课程设计报告:

学生成绩管理系统

系统需求

一、当前学生信息:

通过结构体structstudent来保存学生的姓名,学号,性别,语文,数

学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息.

二、学生成绩查询:

输入一个学号,在文件中查找此学生,若找到则输出此学生的全部信息

和成绩;若找不到则输出查找失败的信息.同时也可以全部把各科的平均成绩,最高和最低

分输出。

三、新生插入:

通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小

则靠前排,将此生的信息保存下来。

四、输出全部学生信息和全部学生成绩。

五、退出系统.

六、附加说明:

系统将来完善的功能有:

可以通过性别来模糊查询,也可以通过姓名的姓来

先进行模糊查询,以便后面精确查找。

总体设计

一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)

1、输入初始的学生信息:

其中包括学生的姓名、学号和性别以及学生的语文、数学、英语

和计算机等相关信息;可用函数cin(stu*p1)来实现此操作。

2、查询模块:

可用stu*lookdata(stu*p1)来实现。

找到就输出此学生全部信息包括学生的

语文、数学、英语和计算机等的成绩。

3、插入模块:

可用insert()函数来实现。

其中通过学号的大小来比较的,并且以此来排

序。

4、输出学生的信息以及成绩:

通过学生的姓名来查看学生的语文、数学、英语和计算机等

相关成绩,同时也可以分别通过caverage()、maverage()、eaverage()和comaverage()来

输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

5、退出系统:

可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的

内存空间,再退出此程序。

二、系统主模块结构图:

详细设计

一、界面设计

此系统界面采用图形和数字化菜单设计。

主界面设计如下:

学生成绩管理系统

请选择相应的数字执行相应的功能:

1:

是否输入其他数据

2:

查看数据

3:

插入数据

4:

查找数据

5:

更新数据

6:

保留数据

7:

显示或打印数据

8:

语文成绩状况

9:

数学成绩状况

10:

英语成绩状况

11:

计算机成绩状况

12:

13:

退出系统

二、数据结构设计:

程序设计中用到的结构体类型:

学生信息结构体类型:

typedefstructstudent{

charname[MAX];

intnum[MAX];

charsex[MAX];

intchinese;

intmathematic;

intenglish;

intcomputer;

structstudent*next;

}

程序代码:

//原始密码是123456

#include"stdio.h"

#include"stddef.h"

#include"stddef.h"

#include"string.h"

#defineMAX10

typedefstructstudent{/*定义结构体*/

charname[MAX];/*姓名*/

intnum[MAX];/*学号*/

charsex[MAX];/*性别*/

intchinese;/*语文*/

intmathematic;/*数学*/

intenglish;/*英语*/

intcomputer;/*计算机*/

structstudent*next;/*结构体指针*/

}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");/*访问数据*/

printf("<5>Update\t");/*以前数据*/

printf("<6>Save\t");/*保留数据*/

printf("<7>Fresh\t");/*更新数据*/

printf("<8>ChineseAverage\t");/*语文平均成绩*/

printf("<9>MathAverage\t");/*数学平均成绩*/

printf("<10>EnglishAverage\t");/*英语平均成绩*/

printf("<11>ComputerAverage\t");/*计算机平均成绩*/

printf("<12>Quit\t\n");/*退出*/

}

voidcin(stu*p1)/*输入相关数据的函数*/

{printf("Entername:

\n");

scanf("%s",&p1->name);

printf("Enternum:

\n");

scanf("%d",&p1->num);

printf("Entersex:

\n");

scanf("%s",&p1->sex);

printf("Enterscore:

\n");

printf("Enterchinese:

\n");

scanf("%d",&p1->chinese);

printf("Entermath:

\n");

scanf("%d",&p1->mathematic);

printf("EnterEnglish:

\n");

scanf("%d",&p1->english);

printf("EnterComputer:

\n");

scanf("%d",&p1->computer);

}

stu*cindata()/*其他数据是否继续输入的函数*/

{stu*p1,*p2;

inti=1;

charch;

p1=(stu*)malloc(sizeof(stu));

head=p1;

while(i)

{

cin(p1);

printf("DoyouWanttoContinue?

yesorno");/*是否继续输入数据*/

ch=getchar();

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);

printf("Name:

%s\t",p1->name);

printf("Sex:

%s\t",p1->sex);

printf("\n");

printf("Chinese:

%d\t",p1->chinese);

printf("Math:

%d\t",p1->mathematic);

printf("English:

%d\t",p1->english);

printf("Computer:

%d\t",p1->computer);

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->numnum))/*通过学号的比较来插入*/

{p2=p1;p1=p1->next;}

if(p2==head){p3->next=head;head=p3;return;}

p3->next=p1;

p2->next=p3;

}

find(stu*p2)/*通过姓名查找查看数据的函数*/

{charname[20];

intb=0;

printf("Enterthenameofthestudentyouwanttofind:

");/*通过姓名查看*/

scanf("%s",name);

while(p2!

=NULL)

{if(strcmp(name,p2->name)==0)

{

printf("Thedatayouwanthasbefound\n");

printf("Name:

%s\t",p2->name);

printf("Num:

%d\t",p2->num);

printf("sex%s\t",p2->sex);

printf("\n");

printf("Chinese:

%d\t",p2->chinese);

printf("Math:

%d\t",p2->mathematic);

printf("English:

%d\t",p2->english);

printf("Computer:

%d\t",p2->computer);

printf("\n");

b=1;

}

elseif(b==0)

printf("sorrynotfinddata!

");

p2=p2->next;

}

if(b==1)

{

print();

printf("Findone\n");}

else

{print();

printf("Notfind\n");

}

}

voidcaverage()/*求各学生语文平均分、最高和最低分成绩的函数

*/

{stu*p1;

inti;

floatmax=0.0,min=200.0;

floatsum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("notdata!

");

else

{for(i=0;p1!

=NULL;i++,p1=p1->next)

sum+=p1->chinese;

aver=sum/i;

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

{if(maxchinese)

max=p1->chinese;

}

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

if(min>p1->chinese)

min=p1->chinese;

}

printf("ChineseAverage:

%f",aver);

printf("ChineseMax:

%f",max);

printf("ChineseMin:

%f",min);

}

voidmaverage()/*求各学生数学平均分、最高和最低分成绩的函

数*/

{stu*p1;

inti;

floatmax=0.0,min=200.0;

floatsum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("notdata!

");

else

{for(i=0;p1!

=NULL;i++,p1=p1->next)

sum+=p1->mathematic;

aver=sum/i;

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

{if(maxmathematic)

max=p1->mathematic;

}

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

if(min>p1->mathematic)

min=p1->mathematic;

}

printf("MatheAverage:

%f",aver);

printf("MatheMax:

%f",max);

printf("MatheMin:

%f",min);

}

voideaverage()/*求各学生英语平均分、最高和最低分成绩的函数*/

{stu*p1;

inti;

floatmax=0.0,min=200.0;

floatsum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("notdata!

");

else

{for(i=0;p1!

=NULL;i++,p1=p1->next)

sum+=p1->english;

aver=sum/i;

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

{if(maxenglish)

max=p1->english;

}

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

if(min>p1->english)

min=p1->english;

}

printf("EnglishAverage:

%f",aver);

printf("EnglishMax:

%f",max);

printf("EnglishMin:

%f",min);

}

voidcomaverage()/*求各学生计算机平均分、最高和最低分成绩的函数*/

{stu*p1;

inti;

floatmax=0.0,min=200.0;

floatsum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("notdata!

");

else

{for(i=0;p1!

=NULL;i++,p1=p1->next)

sum+=p1->computer;

aver=sum/i;

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

{if(maxcomputer)

max=p1->computer;

}

p1=head;

for(i=0;p1!

=NULL;i++,p1=p1->next)

if(min>p1->computer)

min=p1->computer;

}

printf("ComputerAverage:

%f",aver);

printf("ComputerMax:

%f",max);

printf("ComputerMin:

%f",min);

}

update(stu*p2)/*通过姓名查找来更新数据*/

{

charname[10];/*p2为指向结构体structstudent的指针*/

intb=0;

printf("EnterTheName");/*输入姓名*/

scanf("%s",name);

while(p2!

=NULL)

{if(strcmp(name,p2->name)==0)

{

printf("Findyoudata\n");

scanf("Name:

%s",p2->name);

scanf("Num:

%s",p2->num);

scanf("Sex:

%s",p2->sex);

scanf("Chinese:

%d",p2->chinese);

scanf("Math:

%d",p2->mathematic);

scanf("english:

%d",p2->english);

scanf("Computer:

%d",p2->computer);

printf("Success!

");

b=1;}

elseif(b==0)

printf("SorrynotFinddata!

");

p2=p2->next;}

if(b==0)

{print();

printf("SorrynotFinddata!

");

}

else

{

print();

printf("Finish!

");

}

}

save(stu*p2)/*保留数据函数*/

{

FILE*fp;

charfile[10];

printf("Enterfilename");/*输入文件名*/

scanf("%s",file);

fp=fopen(file,"w");

while(p2!

=NULL)

{

fprintf(fp,"%s",p2->name);

fprintf(fp,"%s",p2->num);

fprintf(fp,"%s",p2->sex);

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:

\n");

scanf("%s",s);

if(!

strcmp(s,password))/*进行密码匹配验证*/

{printf("PASS\n\n\n");

flag=1;

break;

}

else{

printf("ErrorEnteragain:

\n");

n--;

}

}

while(n>0);

if(!

flag)

{printf("youhaveEnter3times!

");/*输入密码超过了3次!

*/

exit(0);/*自动退出*/

}

/*密码验证成功后进入的界面*/

printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n");/*操作界面*/

printf("\t\tWelcomtotheMis\n");

printf("Author:

-----\tClass:

------\tNum:

------\n");/*作者,班级和号码*/

printf("Adress:

HG\n");/*地址*/

printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");

printf("\t\tEnterOP:

\n");

printf("\n\n\n\n");

printf("==============\t\t==============\n");

printf("==============\t\t==============\n");

printf("\t\tEntertheMISyesorno\n");/*问进入系统与否*/

scanf("%d",&choice);

if(choice=='n'||choice=='N')

exit

(1);

print();

while

(1)

{

printf("Enterchoice:

");

scanf("%d",&i);

if(i<1||i>13)

{

printf("Enternumfrom1to13:

\n");/*再从1-13中进行选择*/

exit

(1);

}

switch(i)

{case1:

p2=cindata();/*其他数据是否继续输入的函数*/

break;

case2:

p2=lookdata(head);/*查看数据的函数*/

break;

case3:

insert();/*通过比较学号来插入数据的函数*/

break;

case4:

find(head);/*通过姓名查找查看数据的函数*/

break;

case5:

update(head);/*通过姓名查找来更新数据*/

break;

case6:

save(head);/*保留数据函数*/

break;

case7:

print();/*显示或打印函数*/

break;

case8:

caverage();/*求各学生语文平均分、最高和最低分成绩的函数*/

break;

case9:

maverage();/*求各学生数学平均分、最高和最低分成绩的函数*/

break;

case10:

eaverage();/*求各学生英语平均分、最高和最低分成绩的函数*/

break;

case11:

comaverage();/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1