用C语言写学生成绩管理系统基本功能:1、 输入一个班级的学生基本信息(包括学号,姓名,性别,5门课程成绩
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言写学生成绩管理系统基本功能:1、 输入一个班级的学生基本信息(包括学号,姓名,性别,5门课程成绩相关的知识,希望对你有一定的参考价值。
2、 按姓名或学号查找、修改、删除和保存各个学生的信息。 3、 计算每个学生的各门功课总分和平均分,按学号或总分排序输出每个学生的基本信息及总分、平均分和名次等信息。4、 计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息。5、 显示每门科目中,成绩在90分以上的学生信息,以及每门科目中不及格的学生信息。6、 设置系统登录密码,只有正确输入密码方可进入管理系统。可更改和保存登录密码。
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <windows.h>
struct stud_node
long int ID; //学号
int age; //年龄
long int dormnumber,phonenumber; //宿舍号码,电话号码
char name[15]; //姓名
char sex; //性别
struct student*next;
;
struct stud_node*Create_Stu_Doc();//新建链表
int main(void)
system("color 3E");
FILE *fp=NULL;//定义文件指针
fp=fopen("stud.txt","wb");
if(fp==NULL)
printf("File open error \n");
exit (0);
struct stud_node*head,*p;
int choice,age;
long int ID,dormnumber,phonenumber;
char name[15],sex;
int size=sizeof(struct stud_node);
printf("+---------------------------+\n");
printf("| 欢迎使用教务信息管理系统 |\n");
printf("+---------------------------+\n");
printf("\n\t\t-----------------------------------------------------\n");
printf("\t\t+ 主菜单 +\n");
printf("\t\t-----------------------------------------------------\n");
printf("\t\t+ [1]--录入学生资料 +\n");
printf("\t\t+ [0]--退出系统 +\n");
printf("\t\t-----------------------------------------------------\n");
printf("\n");
printf("\t\t请输入您的选择:");
scanf("%d",&choice);
switch(choice)
case 0 : break;
case 1 : head=Create_Stu_Doc;break;
default:printf("\n无效选项!");
struct stud_node*Create_Stu_Doc()//新建链表
int y,age;
long int ID,dormnumber,phonenumber;
char name[15],sex;
int size=sizeof(struct stud_node);
struct stud_node*head,*tail,*p;
FILE *fp=NULL;//定义文件指针
fp=fopen("stud.txt","r");
head=tail=NULL;
printf("--------------------\n");
printf("请输入学生的学号:");
printf("请输入学生的姓名:");
printf("请输入学生的性别:");
printf("请输入学生的年龄:");
printf("请输入学生的宿舍号码:");
printf("请输入学生的电话号码:");
while(!feof(fp))
p=(struct stud_node *)malloc(size);
fscanf(fp,"%ld%c%c%d%ld%ld",&ID,&name,&sex,&age,&dormnumber,&phonenumber);
p->ID=ID;
strcpy(p->name,name);
strcpy(p->age,age);
p->dormnumber=dormnumber;
p->phonenumber=phonenumber;
p->next=NULL;
if(head==NULL) head=p;
else tail->next=p;
tail=p;
printf("\n1.继续输入.\n0.结束输入.\n");
printf("请选择:");
scanf("%d",&y);
if(y)
return head;
fclose(fp);
参考技术A 我正准备做这个程序,你想要什么版本的,是控制台版本的是还是win32版本的。
用C语言写一个班级管理系统,要求用到指针,结构体
有姓名,出生日期,和性别等项目。
能输入、修改、查询、删除、按出生日期排序等功能
懂的大侠们,请详细写一下,不胜感激!
有姓名,出生日期,和性别等项目。
能输入、修改、查询、删除、按出生日期排序等功能从大到小*/
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct Date
int year;
int month;
int day;
Date;
typedef struct stu
int id;
char name[20];
Date date;
char sex[5];
struct stu *next;
stu;
int compare(Date d1,Date d2)/*比较两个日期的大小,以方便下面按年龄从大到小插入。即存入学生信息时,就是按顺序存入,故直接输出即可。*/
if(d1.year>d2.year)
return 1;
else if(d1.year<d2.year)
return 0;
else
if(d1.month>d2.month)
return 1;
else if(d1.month<d2.month)
return 0;
else
if(d1.day>d2.day)
return 1;
else if(d1.day<d2.day)
return 0;
else
return 2;
//建表,即输入
void insert(stu *head,stu *temp)
stu *p,*q;
p=q=(stu*)malloc(sizeof(struct stu));
if(head->next==NULL)
temp->next=head->next;
head->next=temp;
else
p=q=(stu *)malloc(sizeof(struct stu));
q=head;
p=head->next;
while(p->next!=NULL&&compare(p->date,temp->date)==0)//要插入的学生年龄较小
q=p;
p=p->next;
if(p->next==NULL&&compare(p->date,temp->date)==0)/*当走到最后一个节点时,才找到要插入的学生年龄大于最后一个节点p->date,单独处理*/
temp->next=p->next;
p->next=temp;
else
temp->next=p;
q->next=temp;
//修改
void revise(stu *head,int num)
stu *p=(stu*)malloc(sizeof(struct stu));
p=head;
while(p->next!=NULL&&p->id!=num)
p=p->next;
if(p->next==NULL&&p->id!=num)//走到最后一个节点但是p->id!=num证明该生不在班级信息中
printf("没有找到要修改的学生的信息,该生不存在!\n");
else
int choose1;
while(1)
printf("请选择要修改的项:0 退出 1 修改id 2 修改姓名 3 修改年龄 4 修改 性别\n");
scanf("%d",&choose1);
switch(choose1)
case 0:
return;
case 1:
printf("输入想要修改的id号:");
int num1;
scanf("%d",&num1);
p->id=num1;
break;
case 2:
printf("输入想要修改的姓名:");
char name1[20];
scanf("%s",name1);
strcpy(p->name,name1);
break;
case 3:
printf("输入想要修改的出生日期:");
Date date1;
scanf("%d%d%d",&date1.year,&date1.month,&date1.day);
p->date.year=date1.year;
p->date.month=date1.month;
p->date.day=date1.day;
break;
case 4:
printf("输入想要修改的性别:");
char sex1[5];
scanf("%s",sex1);
strcpy(p->sex,sex1);
break;
//删除
void Delete(stu *head,int num)
stu *p,*q;
p=q=(stu*)malloc(sizeof(struct stu));
q=head;
p=head->next;
while(p->next!=NULL&&p->id!=num)
q=p;
p=p->next;
if(p->next==NULL&&p->id!=num)
printf("没有找到要修改的学生的信息,该生不存在!\n");
else
q->next=p->next;
delete p;
printf("已成功将该生信息删除!\n");
void display(stu *head)
stu *p=(stu*)malloc(sizeof(struct stu));;
p=head->next;
while(p!=NULL)
printf("学号:%d",p->id);
printf("姓名:%s ",p->name);
printf("年龄%d_%d_%d ",p->date.year,p->date.month,p->date.day);
printf("性别%s\n",p->sex);
p=p->next;
if(p==NULL)
printf("现在系统中还没有存入学生信息!\n");
void main()
stu *head=(stu *)malloc(sizeof(struct stu));
head->next=NULL;
int choose;
while(1)
printf("请选择您的操作: 0 退出 1 添加 2 修改 3 删除 4 查找\n");
scanf("%d",&choose);
switch(choose)
case 0:
return;
case 1:
stu*temp=(stu*)malloc(sizeof(struct stu));
printf("输入学号:");
scanf("%d",&temp->id);
printf("输入姓名:");
scanf("%s",temp->name);
printf("输入出生日期:");
scanf("%d%d%d",&temp->date.year,&temp->date.month,&temp->date.day);
printf("输入性别");
scanf("%s",temp->sex);
insert(head,temp);
break;
case 2:
printf("请输入想要修改的学生的学号:");
int num;
scanf("%d",&num);
revise(head,num);
break;
case 3:
printf("请输入想要删除的学生的学号:");
int num;
scanf("%d",&num);
Delete(head,num);
break;
case 4:
display(head);
break;
/*程序可能健壮性不很好,但只要按要求输入就可以了,其他的小地方你自己改吧,呵呵,希望对你有帮助*/ 参考技术A 用一个二维数组就可以了,你先试试,有疑问在找我 ,我QQ837333118追问
好像没这么简单吧,麻烦您给写一写。
参考技术B你是中南的么
我是中南的
刚做了一个实习
和你的一模一样
我的QQ562888025
粘在这里乱码了
有空切磋下
以上是关于用C语言写学生成绩管理系统基本功能:1、 输入一个班级的学生基本信息(包括学号,姓名,性别,5门课程成绩的主要内容,如果未能解决你的问题,请参考以下文章