C语言课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言课程设计报告”。
C语言课程设计报告--学生成绩管理系
C语言课程设计报告: 学生成绩管理系统 系统需求
一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过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:退出系统
二、数据结构设计:
程序设计中用到的结构体类型:
学生信息结构体类型: typedef struct student{
char name[MAX];
int num[MAX];
char sex[MAX];
int chinese;
int mathematic;
int english;
int computer;
struct student *next;
}
程序代码:
//原始密码是123456 #include“stdio.h” #include“stddef.h” #include“stddef.h” #include“string.h” #define MAX 10 typedef struct student{
char name[MAX];
int num[MAX];
/*定义结构体*/
/*姓名*/
/* 学号*/
char sex[MAX];
/*性别*/
int chinese;
/*语文*/
int mathematic;
/* 数学*/
int english;
/*英语*/
int computer;
/*计算机*/
struct student *next;
/*结构体指针*/
}stu;stu *head;
/*头指针*/ void print()
/*显示或打印函数*/
{
system(“cls”);
printf(“tttScore Manage Systemn”);
printf(“Enter Recordt”);
printf(“Displayt”);
printf(“Insertt”);
printf(“Questt”);
printf(“Updatet”);
printf(“Savet”);
printf(“Fresht”);
printf(“Chinese Averaget”);
printf(“Math Averaget”);
printf(“English Averaget”);
printf(“Computer Averaget”);
printf(“Quittn”);
}
void cin(stu *p1)
{ printf(“Enter name:n”);
scanf(“%s”,&p1->name);
printf(“Enter num:n”);
scanf(“%d”,&p1->num);
printf(“Enter sex:n”);
scanf(“%s”,&p1->sex);
printf(“Enter score:n”);
printf(“Enter chinese:n”);
scanf(“%d”,&p1->chinese);
printf(“Enter math:n”);
scanf(“%d”,&p1->mathematic);
printf(“Enter English:n”);
scanf(“%d”,&p1->english);
printf(“Enter Computer:n”);
scanf(“%d”,&p1->computer);
} stu *cindata()
/*成绩管理系统*/
/*输入数据*/
/*显示*/
/*插入数据*/
/*访问数据*/
/*以前数据*/
/*保留数据*/
/*更新数据*/
/*语文平均成绩*/
/*数学平均成绩*/
/*英语平均成绩*/
/*计算机平均成绩*/
/*退出*/
/*输入相关数据的函数*/ /*其他数据是否继续输入的函数*/
{ stu *p1,*p2;
int i=1;
char ch;
p1=(stu *)malloc(sizeof(stu));
head=p1;
while(i)
{
cin(p1);
printf(“Do you Want to Continue?yes or no”);
/*是否继续输入数据*/
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:%dt”,p1->num);
printf(“Name:%st”,p1->name);
printf(“Sex:%st”,p1->sex);
printf(“n”);
printf(“Chinese:%dt”,p1->chinese);
printf(“Math:%dt”,p1->mathematic);
printf(“English:%dt”,p1->english);
printf(“Computer:%dt”,p1->computer);
printf(“n”);
p1=p1->next;
}
return p1;
}
void insert()
/*通过比较学号来插入数据的函数*/ { stu *p1,*p3,*p2;
char ch;
p1=head;
p3=(stu *)malloc(sizeof(stu));
p3->next=NULL;
if(head==NULL){ head=p3;return;}
cin(p3);
while(p1!=NULL&&(p1->num
num))
/*通过学号的比较来插入*/
{ p2=p1;p1=p1->next;}
if(p2==head){p3->next=head;head=p3;return;}
p3->next=p1;
p2->next=p3;}
find(stu *p2)
/*通过姓名查找查看数据的函数*/ { char name[20];
int b=0;
printf(“Enter the name of the student you want to find:”);
/*通过姓名查看*/
scanf(“%s”,name);
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf(“The data you want has be foundn”);
printf(“ Name:%st”,p2->name);
printf(“Num:%dt”,p2->num);
printf(“sex%st”,p2->sex);
printf(“n”);
printf(“Chinese:%dt”,p2->chinese);
printf(“Math:%dt”,p2->mathematic);
printf(“English:%dt”,p2->english);
printf(“Computer:%dt”,p2->computer);
printf(“n”);
b=1;
}
else if(b==0)
printf(“sorry not find data!”);
p2=p2->next;
}
if(b==1)
{
print();
printf(“Find onen”);}
else
{print();
printf(“Not findn”);
} }
void caverage()
/*求各学生语文平均分、最高和最低分成绩的函数*/ { stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf(“not data!”);
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(max
chinese)
max=p1->chinese;
}
p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->chinese)
min=p1->chinese;
}
printf(“Chinese Average:%f”,aver);
printf(“Chinese Max:%f”,max);
printf(“Chinese Min:%f”,min);}
void maverage()
/*求各学生数学平均分、最高和最低分成绩的函数*/ { stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf(“not data!”);
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(max
mathematic)
max=p1->mathematic;
}
p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->mathematic)
min=p1->mathematic;
}
printf(“Mathe Average:%f”,aver);
printf(“Mathe Max:%f”,max);
printf(“Mathe Min:%f”,min);}
void eaverage()
/*求各学生英语平均分、最高和最低分成绩的函数*/ { stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf(“not data!”);
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(max
english)
max=p1->english;
}
p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->english)
min=p1->english;
}
printf(“English Average:%f”,aver);
printf(“English Max:%f”,max);
printf(“English Min:%f”,min);}
void comaverage()
/*求各学生计算机平均分、最高和最低分成绩的函数*/ { stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf(“not data!”);
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(max
computer)
max=p1->computer;
}
p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->computer)
min=p1->computer;
}
printf(“Computer Average:%f”,aver);
printf(“Computer Max:%f”,max);
printf(“Computer Min:%f”,min);}
update(stu *p2)
/*通过姓名查找来更新数据*/
{
char name[10];
/*p2为指向结构体struct student的指针*/
int b=0;
printf(“Enter The Name”);
/*输入姓名*/
scanf(“%s”,name);
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf(“Find you datan”);
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(“Succe!”);
b=1;}
else if(b==0)
printf(“Sorry not Find data!”);
p2=p2->next;}
if(b==0)
{print();
printf(“Sorry not Find data!”);
}
else
{
print();
printf(“Finish!”);
}
}
save(stu *p2)
/*保留数据函数*/
{
FILE *fp;
char file[10];
printf(“Enter file name”);
/*输入文件名*/
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);}
char paword[7]=“123456”;
/*定义初始密码*/
void main()
/*主函数*/ { int choice;
stu *p2;
char s[8];
int flag=0,i;
/*标志项*/
int n=3;
do{ printf(“Enter paword:n”);
scanf(“%s”,s);
if(!strcmp(s,paword))
/*进行密码匹配验证*/
{ printf(“PASSnnn”);
flag=1;
break;
}
else{
printf(“Error Enter again:n”);
n--;
}
}
while(n>0);
if(!flag)
{printf(“you have Enter 3 times!”);
/*输入密码超过了3次!*/
exit(0);
/*自动退出*/
}
/*密码验证成功后进入的界面*/
printf(“~~~~~~~~~~ttt~~~~~~~~~~~~n”);
/*操作界面*/
printf(“ttWelcom to the Misn”);
printf(“Author:-----tCla:------tNum:------n”);
/*作者,班级和号码*/
printf(“Adre:HGn”);
/*地址*/
printf(“%%%%%%%%%%%%%%%%%%%%%%%%%%%n”);
printf(“ttEnter OP:n”);
printf(“nnnn”);
printf(“==============tt==============n”);
printf(“==============tt==============n”);
printf(“ttEnter the MIS yes or non”);
/*问进入系统与否*/
scanf(“%d”,&choice);
if(choice=='n'||choice=='N')
exit(1);
print();
while(1)
{
printf(“Enter choice:”);
scanf(“%d”,&i);
if(i13)
{
printf(“Enter num from 1 to 13:n”);
/*再从1-13中进行选择*/
exit(1);
}
switch(i)
{
case 1:
p2=cindata();/*其他数据是否继续输入的函数*/
break;
case 2:
p2=lookdata(head);
/*查看数据的函数*/
break;
case 3:
insert();
/*通过比较学号来插入数据的函数*/
break;
case 4:
find(head);
/*通过姓名查找查看数据的函数*/
break;
case 5:
update(head);
/*通过姓名查找来更新数据*/
break;
case 6:
save(head);
/*保留数据函数*/
break;
case 7:
print();
/*显示或打印函数*/
break;
case 8:
caverage();
/*求各学生语文平均分、最高和最低分成绩的函数*/
break;
case 9:
maverage();
/*求各学生数学平均分、最高和最低分成绩的函数*/
break;
case 10:
eaverage();/*求各学生英语平均分、最高和最低分成绩的函数*/
break;
case 11:
comaverage();/*求各学生计算机平均分、最高和最低分成绩的函数*/
break;
case 12:
;
/*空操作*/
case 13:
exit(1);
/*退出*/
break;}
scanf(“%d”,&i);} }
程序中出现的问题及解决方法
问题
一、学生初始信息模块:
其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。
解决办法及步骤:
1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。
2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错
3、输出用于循环检查语句中的学生信息,发现乱码
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。
问题
二、查询模块:
可用stu *lookdata(stu *p1)来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。
问题
三、插入模块:
可用insert()函数来实现。其中通过学号的大小来比较的,并且以此来排序。当我们输入插入信息时,系统却提示插入不进数据。
解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。
2、检查当我们在输入插入信息时,看是否我们输入的插入信息有
C语言课程设计报告班级:10电子本1学号:10303033122姓名:指导老师:方文森完成日期:温州大学城市学院课程设计目 录1、课程设计目的和要求 .......................................
目录 1前言 ..............................................................1 2正文 ..............................................................1 2.1设计目的 .........
C语言课程设计报告1.实验题目:职员信息管理系统2.数据结构:整型int,字符型char,长整型long,结构体及结构体数组 3.源代码 :#include"stdio.h" #include"string.h" #define......
C语言课程设计报告Experiment Designing reporter课程名称 : C语言课程设计 英文名称 : C Program Experiment Designing 专 业 : 学 号 : 姓 名 :指导教师 :日 期: 2011年7月18......
课 程 报 告 课 程 名 称: 专 业 班 级 : 学 生 姓 名 : 学 号 : 程序设计实践 ****** 20104683**** 任 课 教 师 : 学 2010期 :2010-2011 学年第二学期 课程报告任务书 课程报告......