当前位置:编程学习 > C/C++ >>

谁有c语言源代码完整点的,学习用。

答案:帮你找了份:有完整注释。希望对你有帮助

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#define max 20

typedef struct student    //学生
{
char sno[max]; // 学号
char sname[max];  //姓名
char 易做图[max];   //性别
char age[max];  //年龄
char depart[max];  //系
char classs[max];  //班
char grade[max]; //年级

struct student* next;
} student;

student* head;

int LogOn()  //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输
{
  int i=0;
  char username[max],password[max];
  printf("\n请输入用户名:");
  scanf("%s",username);
  printf("\n请输入密码(最多15位):"); //开始以不回显且支持退格方式获取输入密码
  while((i>=0)&&(password[i++]=getch())!=13)//条件i>=0是用于限制退格的范围
  {
    if(password[i-1]=='\b')//对退格键的处理
  {
      printf("%c%c%c",'\b','\0','\b');
      i=i-2;
  }
    else
    printf("*");
  }
  password[--i]='\0'; //已获取密码。验证用户身份
  if(!strcmp(username,"杨立")&&!strcmp(password,"123456"))
  {
    printf("\n登录成功!");
    return 1;
  }
  else  
  return 0;
}

void regist()
{
  char ch;
  student *s,*ptr;  //s用来建新结点,ptr用来暂存头结点
  do
  {
    s=(student*)malloc(sizeof(student)); // 新建一个学生结点
    printf("\n开始注册...");            //开始注册
    printf("\n请输入该学生的学号:");
    scanf("%s",s->sno);
    printf("\n请输入该学生的姓名:");
    scanf("%s",s->sname);
    printf("\n请输入该学生的性别:");
    scanf("%s",s->易做图);
  printf("\n请输入该学生的年龄:");
    scanf("%s",s->age);
    printf("\n请输入该学生的系:");
    scanf("%s",s->depart);
    printf("\n请输入该学生所在的班:");
    scanf("%s",s->classs);
    printf("\n请输入该学生所在的年级");
    scanf("%s",s->grade);

    ptr=head;
    head=s;//将新结点插入队头
    s->next=ptr;
    fflush(stdin);
    printf("\n请问是否继续注册?(Y/N)");
    scanf("%c",&ch);
  }while(ch=='Y'||ch=='y');
  return;
}

void ElePrint(char str[])  //输出单个元素
{
  unsigned int i;
  if(str==NULL) exit(0);
  printf("%s",str);
  for(i=0;i<12-strlen(str);i++) printf(" ");//为了对齐输出,需插入一些空格
  return;
}

int LinePrint(student *ptr) //输出一行
{
  if(ptr==NULL)  //检查传进来的指针
    return 0;
  printf("\n");
  ElePrint(ptr->sno);
  ElePrint(ptr->sname);
  ElePrint(ptr->age);
  ElePrint(ptr->易做图);
  ElePrint(ptr->depart);
  ElePrint(ptr->classs);
  ElePrint(ptr->grade);
  return 1;
}

void print()  //输出全部学生信息
{
  student *ptr=head;
  printf("\n学号        姓名        年龄        性别        系          班          年级        ");
  while(ptr)
  {
    LinePrint(ptr);
    ptr=ptr->next;
  }
  printf("\n");
  return;
}
 
void search()//查询模块
{
  student *p=head,*temp;
  int method;//查询方式
  char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字
  while(1)
  {
    printf("\n请选择查询方式");
    printf("\n1.按学号查询");
    printf("\n2.按姓名查询");
    printf("\n3.按所在系查询");
    printf("\n4.按所在班级查询");
    printf("\n5.按所在年级查询");
    printf("\n6.打印全部学生信息");
    printf("\n7.返回主菜单\n");
    scanf("%d",&method);
    switch(method)
  {
       case 1: 
         printf("\n请输入要查询的学号:");
         scanf("%s",no);    
         while(p)
     {
           if(!strcmp(p->sno,no))
             break;
           else
       {
             temp=p;
             p=p->next;
       }
     }
         printf("\n学号        姓名        年龄        性别        系          班          年级        ");
         LinePrint(p);
         break;
       case 2:
         printf("\n请输入要查询的姓名:");
         scanf("%s",name);
         printf("\n学号        姓名        年龄        性别        系          班          年级        ");
         while(p)
     {
           if(!strcmp(p->sname,name))
           LinePrint(p);     
           p=p->next;
     }
         break;
       case 3:
         printf("\n请输入学生所在的系:");
         scanf("%s",departm);
         printf("\n学号        姓名        年龄        性别        系       &nb

上一个:C语言中的颜色和边框的函数怎么来运用···
下一个:C语言scanf()扩号内怎么设置两个量

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,