c语言-简单学生信息管理(内存链表练习)

  原来学C的时候,只是把它当编程基础来学的,现在再回头看一下,发现其实要是想编程,而不是做应用,还是C爽。(不代表偶认为c不可以做应用,相反,有的应用只有c可以做,不过做B/S的东东还是用java\c#\php方便点。)

    一个简单的学生信息管理,由于是用vim编辑的,中文注释就没加。主要函数有三个,main() 
new_stud() 和 listall() 一看就知道结构和功能啦,呵呵。 

 

 

ExpandedBlockStart.gif C
#include<stdio.h>
#include
<stdlib.h>

struct stud
{

    
long num;

    
char name[20];

    
struct stud * next;    
};


void new_stud();
void listall();
struct stud *head,*cur,*newp;
int main(char argc,char** argv )
{
    
char ch;
    
int isClose=0;
    head
=NULL;
    
while(!isClose)
    {
        printf(
"\n type 'E' or 'e' to enter new student,");
        printf(
"\n type 'L' or 'l' to list all students:");
        ch
=getchar();
        getchar();    
        
switch(ch)
        {
            
case 'e':
            
case 'E':new_stud();break;
            
case 'l':
            
case 'L':listall();break;
            
default:isClose=1;
        };
    }

    
return 0;
}

void new_stud()
{
    
char numstr[20];
    newp
=(struct stud *)malloc(sizeof(struct stud));
    
if(head==NULL)
    {
        head
=newp;
    }    
    
else
    {
        cur
=head;
        
while(cur->next!=NULL)
        {
            cur
=cur->next;
        }    
        cur
->next=newp;
    }
    cur
=newp;
    printf(
"\n enter NO.:");
    gets(numstr);
    cur
->num=atol(numstr);
    printf(
"\n enter name:");
    gets(cur
->name);
    cur
->next=NULL;
}

void listall()
{
    
int i=0;
    
if(head==NULL)
    {
        printf(
"\n No Student!");
        
return;
    }
    cur
=head;
    
do
    {
        printf(
"\n=============================");
        printf(
"\n Num:  %ld",cur->num);
        printf(
"\n Name: %s",cur->name);
        printf(
"\n------------------------");
        cur
=cur->next;
    }
    
while(cur!=NULL);
}

 

 

 

注: long atol(const char *nptr) 会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。 返回转换后的长整型数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。 系统的主要功能包括: 1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。 2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。 3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。 4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。 5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。 (1) 按学号查询,输入一个学号,输出对应的学生信息。 (2) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。 (3) 按学院查询,输入学院名称,输出该学院的全部学生的信息。 (4) 按班级查询,输入班级名称,输出该班级的全部学生的信息。 6. 按不同条件对学生成绩进行统计工作。 (1) 按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。 (2) 按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。 (3) 分别找出3门课程成绩最高的学生,并输出他们的信息。 (4) 分别统计出3门课程的不及格率,并输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值