C语言实验综合程序设计------学生管理系统
一、实验目的
1.熟悉和回顾编程的一般方法
2.循序渐进编写实际编程问题
3.进一步学习和提高综合编程能力和解决编程中出现的问题的能力
二、实验内容
1.设计和完成:简单学生成绩管理信息系统
学生成绩信息包括:学号,姓名,课程名,平时成绩,实验成绩,考试成绩,总评成绩。
2.要求实现如下功能:
1) 能够实现学生成绩信息的插入、删除和修改;
2) 能够实现各种查询(分别根据学生学号、姓名、课程名称等);
3) 能够实现按照考试成绩、总评成绩进行排序;
4) 能够查询某门课程的最高分、最低分并输出相应学生信息;
5) 能够查询某门课程的优秀率(90分及以上)、不及格率;
3.说明:
1) 本次试验是综合设计实验,用6个学时(3次实验课)完成 ,程序的最终运行结果界面如:图10 功能模块界面,根据输入序号选择执行相应功能(仅供参考)
图10 功能模块界面
2) 也可以自己选定其它类似题目,功能要求参考学生成绩管理系统。
三、源代码:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
typedef struct STUDENT
{
int num;
char name[10];
char Class[50];
char classname[8][80];
float score[4];
float total;
int classnum;
struct STUDENT *next;
}student;
typedef struct NODE
{
float score;
char name[20];
struct NODE *next;
}node;
student *z;
student* initiate()
{
student *p;
p=(student*)malloc(sizeof(student));
p->next=NULL;
z=p;
return p;
}
void input(int n)//输入学生信息
{
int i,j;
student *temp;
for(i=0;i<n;i++)
{
temp=(student*)malloc(sizeof(student));
temp->total=0;
printf("请输入学生的学号:");
scanf("%d",&temp->num);
printf("请输入学生的姓名:");
scanf("%s",temp->name);
printf("请输入学生的班级:");
scanf("%s",temp->Class);
printf("请输入学生所选课程的个数:");
scanf("%d",&temp->classnum);
printf("请输入各个课程名称和所得的分数:\n");
for(j=0;j<temp->classnum;j++)
{
scanf("%s %f",temp->classname[j],&temp->score[j]);
temp->total=temp->total+temp->score[j];
}
temp->next=NULL;
z->next=temp;
z=temp;
}
}
void ranking(student *head)
{
int i;
char classname[20],ch;
student *p=head->next;
node *temp,*q,*w;
temp=(node*)malloc(sizeof(node));
temp->next=NULL;
printf("请输入课程名:");
scanf("%s",classname);
while(p!=NULL)
{
for(i=0;i<(p->classnum);i++)
{
if(strcmp(classname,p->classname[i])==0)
{
w=temp;
q=(node*)malloc(sizeof(node));
strcpy(q->name,p->name);
q->score=p->score