C语言课程设计报告学生成绩管理系统.docx
《C语言课程设计报告学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生成绩管理系统.docx(12页珍藏版)》请在冰豆网上搜索。
![C语言课程设计报告学生成绩管理系统.docx](https://file1.bdocx.com/fileroot1/2022-10/20/56cb701b-1d1c-4e7f-929e-14e3a29a6f09/56cb701b-1d1c-4e7f-929e-14e3a29a6f091.gif)
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("\t\t\tScore Manage System\n"); /*成绩管理系统*/
printf("<1>Enter Record\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>Chinese Average\t"); /*语文平均成绩*/
printf("<9>Math Average\t"); /*数学平均成绩*/
printf("<10>English Average\t"); /*英语平均成绩*/
printf("<11>Computer Average\t"); /*计算机平均成绩*/
printf("<12>Quit\t\n"); /*退出*/
}
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:
%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;
}
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->numnum)) /*通过学号的比较来插入*/
{ 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=