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

C语言提问

用链表实现简单的学籍管理,1链表建立 ,节点插入(学号),删除链表节点(按学号),链表输出(按学号和总分),2各功能分别用函数实现;节点信息让用户输入;总分通过计算获得;用简单的操作界面
答案:#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 5
#define PRIN1  "课程编号   课程名称   课程性质   总学时   总学分\n"     /*宏定义,表格标题*/
#define PRIN2  "%-12d%-8s\t%-10c%-8d%-4.2f\n"           /*宏定义,格式控制,使用2个printf且与PRIN1连用输出课程信息。*/
typedef struct  kecheng                /*定义结构体,用typedef重命名结构体*/
{
 int num;       /*课程编号*/
 int zxs;       /*总学时*/
 float xf;      /*课程学分*/
    char name[20]; /*课程名称*/
 char xz;       /*课程性质*/
}kc;                        
int lr(kc k[],int n)                           /*录入函数,用于录入课程信息。*/
{
 int i;
 system("cls");                         /*清屏*/
 printf("\t\t\t录入课程信息!\n");
 printf("请输入课程编号:\n");
 if(n!=0)                                   /*当录入过信息后为保证编号不重复,在此进行编号检查,重复则重新输入*/
 { 
 p: scanf("%d",&k[n].num);
   for(i=0;i<n;i++)
   {
    if(k[n].num==k[i].num)
    { 
     printf("录入编号已存在,请重新输入:\n");
     goto p;
    }
   }
 }
 else                       /*如果是第一次输入不会有重复,直接接收。*/
  scanf("%d",&k[n].num);
 printf("请输入课程名称:\n");
 scanf("%s",k[n].name);
 printf("请输入课程性质选修X或必修B\n");
 getchar();                                /*屏蔽回车*/
 k[n].xz=getchar();
 if(k[n].xz>97)           /*此处判断输入的字母是否为大写,保证性质属性一致为大写进行大小写转换,方便后面根据课程性质查询。*/
  k[n].xz=k[n].xz-32; 
 printf("请输入课程总学时:\n");
 scanf("%d",&k[n].zxs);
 printf("请输入总学分:\n");
 scanf("%f",&k[n].xf);
  n++;        /*录入完成后计数值加一表示新增一条记录。*/
 return n;
}
void px(kc k[],int n)         /*按编号排序*/
{
 int i,j;
 kc m;
 for(i=0;i<n-1;i++)   /*运用冒泡法,按照课程的编号进行排序*/
 {
  for(j=0;j<n-1-i;j++)
   if(k[i].num>k[i+1].num)
   {
    {m.num=k[i].num; k[i].num=k[i+1].num; k[i+1].num=m.num;}/*编号互换*/
    {m.zxs=k[i].zxs; k[i].zxs=k[i+1].zxs; k[i+1].zxs=m.zxs;}/*总学时互换*/
    {m.xf=k[i].xf; k[i].xf=k[i+1].xf; k[i+1].xf=m.xf;}/*学分互换*/
    {m.xz=k[i].xz; k[i].xz=k[i+1].xz; k[i+1].xz=m.xz;}/*性质互换*/
    {strcpy(m.name,k[i].name); strcpy(k[i].name,k[i+1].name); strcpy(k[i+1].name,m.name);}/*名字互换*/
   }
 }
}
void ll(kc k[],int n)                           /*浏览函数*/
{
 system("cls");
 printf("\t\t\t课程信息浏览!\n");
 char c;
 if(n==0)                /*判断是否有记录*/
 {
  printf("暂无记录!\n");
  return ;
 }
 int i;
 printf(PRIN1);
 for(i=0;i<n;i++)
 {
  printf(PRIN2,k[i].num,k[i].name,k[i].xz,k[i].zxs,k[i].xf);
  printf("\n");
 }
 printf("是否按序号排序查看?Y/N\n");
 getchar();
 c=getchar();
 if(c=='Y')
 {
  system("cls");
  px(k,n);                    /*调用排序函数,对课程按编号排序*/
  printf(PRIN1);
  for(i=0;i<n;i++)
  {
   printf(PRIN2,k[i].num,k[i].name,k[i].xz,k[i].zxs,k[i].xf);
   printf("\n");
  }
  return ;
 }
 else
  return ;
}
void fscx(kc k[],int n)                         /*分数查询函数*/
{
 system("cls");
 float x;
 int i,a=0;
 printf("\t\t\t按学分查询课程!\n");
 printf("请输入要查询的学分:\n");
 scanf("%f",&x);
 printf(PRIN1);
 for(i=0;i<n;i++)        
 {
  if(x==k[i].xf)
  {
   a++;
   printf(PRIN2,k[i].num,k[i].name,k[i].xz,k[i].zxs,k[i].xf);
  }
 }
 if(a==0)
 {
  system("cls");
  printf("没有该学分的课程!\n");
 }
}
void xzcx(kc k[],int n)                         /*性质查询函数*/
{
 system("cls");
 char c;
 int i,a=0;
 printf("\t\t\t按学科性质查询!\n");
 printf("请输入你要查询的学科性质选修X必修B:\n");
 do{
  getchar();
  c=getchar();
  if(c=='X'||c=='B')break;     /*为保证输入与所查内容一致,限定输入为大写X或者B。*/
  else
   printf("输入有误,请输入X或者B:\n");
 }while(c!='X'||c!='B');
 printf(PRIN1);
  for(i=0;i<n;i++)
 {
  if(c==k[i].xz)
  {
   a++;
   printf(PRIN2,k[i].num,k[i].name,k[i].xz,k[i].zxs,k[i].xf);
  }
 }
 if(a==0)
 {
  system("cls");
  printf("目前没有该性质的课程!\n");
 }
}
void find(kc k[],int n)      /*查询菜单*/
{
 system("cls");
 int c;
 printf("请选择一种查询方式:\n");
 printf("*1按照课程学分查询\n");
 printf("*2按照课程性质查询\n");
 scanf("%d",&c);
 switch(c)
 {
  case 1:fscx(k,n);break;/*调用分数查询函数*/
  case 2:xzcx(k,n);break; /*调用性质查询函数*/
  default:printf("暂无第三种查询方式!\n");
 }
}
void change(kc k[],int n)                         /*修改已有的课程

上一个:什么是C语言
下一个:怎么学习C语言

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