编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩。具体功能: (1)创建信息 10
编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按...
编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩。具体功能:
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的成绩;
(3)按学号或姓名查询成绩;
(4)添加成绩记录;
(5)修改指定姓名或学号的学生的成绩并可存盘;
(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息(可选项)。 展开
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的成绩;
(3)按学号或姓名查询成绩;
(4)添加成绩记录;
(5)修改指定姓名或学号的学生的成绩并可存盘;
(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息(可选项)。 展开
2个回答
展开全部
很久很久以前写过一个
不过成绩并不是c语言成绩而是有多种成绩(语言、数学、英语之类)
我把代码给你
你只需要将其中关于成绩(课程的地方)修改下(删减点代码)就可以了
stumenu.h
#ifndef _STUMENU_H
#define _STUMENU_H
#include "student.h"
void main_menu(void);
/*程序主界面*/
void do_student(STUDENT *head,int num);
/*功能模块*/
int next_do(void);
/*输入代码*/
void exit_student(void);
/*退出程序*/
#endif
student.h
#ifndef _STUDENT_H
#define _STUDENT_H
#define MAX 1000
typedef struct data
{
char name[10];
char adress[100];
char phone[12];
int no;
float chiness;
float math;
float english;
float computer;
float physic;
float chemistry;
float politic;
float history;
float all;
}DATA;
typedef struct student
{
DATA data;
int student_num;
struct student *next;
}STUDENT;
#define MAL (STUDENT *)malloc(sizeof(STUDENT))
STUDENT *init_student(void);
/*初始化数据库,student_num=0,next指向NULL*/
int is_student_full(STUDENT *head);
/*检查数据库是否已满,满返回1否则返回0*/
int is_student_empty(STUDENT *head);
/*检查数据库是否为空,如为空返回1否则返回0*/
DATA input_student_info(void);
/*输入学生信息*/
void insert_student_data(STUDENT *head);
/*将data插入到学生信息数据库中*/
int get_student_num(STUDENT *head);
/*计算出当前数据库中学生的个数*/
void get_student_info(STUDENT *head,char *name);
/*查看name在数据库中的所有信息*/
int save_student_info(STUDENT *head);
/*将学生信息数据保存到文件中,如果成功返回1否则返回0*/
int read_student_info(STUDENT *head);
/*从文件中读学生信息,如果成功返回1,否则返回0*/
void print_student_info(STUDENT *head);
/*在屏幕中输出学生信息*/
void delete_student_info(STUDENT *head,char *name);
/*在数据库中删除name*/
void delete_student_all_info(STUDENT *head);
/*删除所有学生信息*/
void re_student_info(STUDENT *head,char *name);
/*修改name在数据库中的信息*/
void sort_student_num(STUDENT *head);
/*以总分排名次*/
#endif
stumenu.c
#include "stdio.h"
#include "stumenu.h"
#include "student.h"
#include "stdlib.h"
void get_name(char *name);
char name[10];
void main_menu(void)
{
printf("\t********************欢迎使用学生管理系统********************\n");
printf("\t* 0.退出本程序 1.检查数据库是否为空 *\n");
printf("\t* 2.检查数据库是否已满 3.插入一个学生信息 *\n");
printf("\t* 4.输出当前学生个数 5.查看指定学生信息 *\n");
printf("\t* 6.保存学生信息到文件 7.加载学生信息 *\n");
printf("\t* 8.输出所有学生信息 9.删除指定学生信息 *\n");
printf("\t* 10.删除所有学生信息 11.修改指定学生信息 *\n");
printf("\t 12.按学生成绩总分排序 *\n");
printf("\t********************欢迎使用学生管理系统********************\n");
printf("输入前面的数字可进行操作:");
}
int next_do(void)
{
int num;
scanf("%d",&num);
while(num<0&&num>11)
{
printf("\n输入错误,请重新输入:");
scanf("%d",&num);
}
return num;
}
void do_student(STUDENT *head,int num)
{
switch(num)
{
case 1:
if(is_student_empty(head))
printf("数据库为空!\n");
else
printf("数据库不为空!\n");
break;
case 2:
if(is_student_full(head))
printf("数据库已满!\n");
else
printf("数据库未满!\n");
break;
case 3:
insert_student_data(head);
break;
case 4:
printf("当前学生个数为:%d\n",get_student_num(head));
break;
case 5:
get_name(name);
get_student_info(head,name);
break;
case 6:
save_student_info(head);
break;
case 7:
read_student_info(head);
break;
case 8:
print_student_info(head);
break;
case 9:
get_name(name);
delete_student_info(head,name);
break;
case 10:
delete_student_all_info(head);
break;
case 11:
get_name(name);
re_student_info(head,name);
break;
case 12:
sort_student_num(head);
break;
case 0:
exit_student();
default:
printf("输入错误,请重新输入!\n");
}
}
void exit_student(void)
{
printf("\t\t谢谢使用本程序,本程序由炕头哥亲情制作!\n");
printf("\t\t按回车键退出. . .");
while(getchar()!='\n')
continue;
getchar();
exit(0);
}
void get_name(char *name)
{
printf("请输入姓名:");
scanf("%s",name);
}
student.c
#include "stdio.h"
#include "student.h"
#include "stdlib.h"
#include "string.h"
STUDENT *init_student(void)
{
STUDENT *head;
if(head->next==NULL)
return;
head=MAL;
head->student_num=0;
head->next=NULL;
printf("初始化完成!\n");
return head;
}
int is_student_full(STUDENT *head)
{
if(head->student_num>=MAX)
return 1;
else
return 0;
}
int is_student_empty(STUDENT *head)
{
if(head->student_num==0)
return 1;
else
return 0;
}
DATA input_student_info(void)
{
DATA data;
printf("请输入学生姓名:");
scanf("%s",data.name);
printf("\n请输入学号:");
scanf("%d",&data.no);
printf("\n请输入地址:");
scanf("%s",data.adress);
printf("\n请输入电话号码:");
scanf("%s",data.phone);
printf("\n请输入语文成绩:");
scanf("%f",&data.chiness);
printf("\n请输入数学成绩:");
scanf("%f",&data.math);
printf("\n请输入英语成绩:");
scanf("%f",&data.english);
printf("\n请输入物理成绩:");
scanf("%f",&data.physic);
printf("\n请输入化学成绩:");
scanf("%f",&data.chemistry);
printf("\n请输入政治成绩:");
scanf("%f",&data.politic);
printf("\n请输入历史成绩:");
scanf("%f",&data.history);
printf("\n请输入计算机成绩:");
scanf("%f",&data.computer);
data.all=data.chiness+data.math+data.english+data.computer+data.physic+data.chemistry+data.politic+data.history;
return data;
}
void insert_student_data(STUDENT *head)
{
if(is_student_full(head))
{
printf("数据已满,不能再插入数据!\n");
return;
}
STUDENT *s,*r;
float all;
r=head;
s=MAL;
s->data=input_student_info();
while(r->next!=NULL)
r=r->next;
r->next=s;
s->next=NULL;
head->student_num++;
}
int get_student_num(STUDENT *head)
{
return head->student_num;
}
void get_student_info(STUDENT *head,char *name)
{
STUDENT *r;
r=head;
while(r->next!=NULL)
if((strcmp(r->next->data.name,name))==0)
{
printf("\n姓名:%s\n学号:%d\n家庭住址:%s\n电话:%s\n语文:%.1f\n数学:%.1f\n英语:%.1f\n物理:%.1f\n化学:%.1f\n政治:%.1f\n历史:%.1f\n计算机:%.1f\n总分:%.1f\n",name,r->next->data.no,r->next->data.adress,r->next->data.phone,r->next->data.chiness,r->next->data.math,r->next->data.english,r->next->data.physic,r->next->data.chemistry,r->next->data.politic,r->next->data.history,r->next->data.computer,r->next->data.all);
break;
}
else
r=r->next;
if(r->next==NULL)
printf("没有找到%s!\n",name);
}
int save_student_info(STUDENT *head)
{
STUDENT *r;
FILE *fp;
if((fp=fopen("student_information.data","wb"))==NULL)
return 0;
for(r=head->next;r!=NULL;r=r->next)
fwrite(r,sizeof(STUDENT),1,fp);
fclose(fp);
return 1;
}
int read_student_info(STUDENT *head)
{
FILE *fp;
if((fp=fopen("student_information.data","rb"))==NULL)
return 0;
STUDENT *r,*s;
r=head;
s=MAL;
fread(s,sizeof(STUDENT),1,fp);
while(!feof(fp))
{
r->next=s;
r=s;
head->student_num++;
s=MAL;
fread(s,sizeof(STUDENT),1,fp);
}
free(s);
r->next=NULL;
fclose(fp);
return 1;
}
void print_student_info(STUDENT *head)
{
if(is_student_empty(head))
{
printf("数据为空!\n");
return;
}
STUDENT *r;
int i=0;
r=head;
while(r->next!=NULL)
{
printf("\n%d.姓名:%s\n学号:%d\n家庭住址:%s\n电话:%s\n语文:%.1f\n数学:%.1f\n英语:%.1f\n物理:%.1f\n化学:%.1f\n政治:%.1f\n历史:%.1f\n计算机:%.1f\n总分:%.1f\n",i,r->next->data.name,r->next->data.no,r->next->data.adress,r->next->data.phone,r->next->data.chiness,r->next->data.math,r->next->data.english,r->next->data.physic,r->next->data.chemistry,r->next->data.politic,r->next->data.history,r->next->data.computer,r->next->data.all);
r=r->next;
i++;
printf("\n\n\n");
}
}
void delete_student_info(STUDENT *head,char *name)
{
STUDENT *r,*q;
r=head;
if(is_student_empty(head))
return;
for(q=r->next;r!=NULL;r=q,q=q->next)
if((strcmp(q->data.name,name))==0)
{
STUDENT *temp;
temp=r->next;
r->next=q->next;
free(temp);
head->student_num--;
break;
}
if(r==NULL)
printf("没有找到%s!\n",name);
}
void delete_student_all_info(STUDENT *head)
{
STUDENT *temp,*r;
r=head->next;
while(r!=NULL)
{
temp=r;
r=r->next;
free(temp);
head->student_num--;
}
}
void re_student_info(STUDENT *head,char *name)
{
STUDENT *r;
r=head;
while(r->next!=NULL&&(strcmp(r->next->data.name,name))!=0)
r=r->next;
if(r->next==NULL)
{
printf("没有找到%s!\n",name);
return;
}
r->next->data=input_student_info();
}
void sort_student_num(STUDENT *head)
{
if(is_student_empty(head))
{
printf("数据库为空!\n");
return;
}
STUDENT *temp,*q,*p;
for(q=head;q->next!=NULL;q=q->next)
for(p=q->next;p->next!=NULL;p=p->next)
{
if(p->next->data.all>q->next->data.all)
if(q->next==p)
{
temp=p->next;
p->next=p->next->next;
temp->next=p;
q->next=temp;
p=temp;
}
else
{
temp=p->next;
p->next=q->next;
q->next=temp;
temp=p->next->next;
p->next->next=q->next->next;
q->next->next=temp;
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询