问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

学分管理程序

发布网友 发布时间:2022-05-26 21:26

我来回答

2个回答

热心网友 时间:2023-09-09 22:33

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#define null '\0'
int shoudsave=0;

struct student /*声明一个结构体类型struct student*/
{
char clas[20]; /*定义成员班级号*/
char name[20]; /*定义成员学生姓名*/
char classnum[20]; /*定义成员学生学号*/
float basis; /*定义成员基础学分*/
float major; /*定义成员专业学分*/
float elective; /*定义成员选修学分*/
float humanity; /*定义成员人文学分*/
float laboratory; /*定义成员实验学分*/
float sum; /*定义成员学分总和*/
float average; /*定义成员平均学分*/
};

typedef struct node /*声明一个节点类型struct node*/
{
struct student data; /*定义节点数据*/
struct node *next; /*定义节点指针*/
}Node,*Link;

void menu1() /*输出系统名称及简介*/
{
printf("\n 学生学分管理系统 \n");
printf("********************************************************************************");
printf("说明:本系统旨在帮助师生方便,快捷地统计,管理学分。您可以进行输入,修改,查看,排序等操作,界面清爽,操作简单,欢迎您的使用。\n");
printf("********************************************************************************");
}//menu1

void menu2() /*输出主菜单*/
{
printf(" 菜 单 \n");
printf("\t\t0:退出本次登入\t\t\t5:清除屏幕内容\n");
printf("\t\t1:输入学生信息\t\t\t6:修改学生学分\n");
printf("\t\t2:删除学生信息\t\t\t7:显示学生学分\n");
printf("\t\t3:查询学生学分\t\t\t8:统计学生信息\n");
printf("\t\t4:排序学生学分\t\t\t9:保存学生学分\n");
}//menu2

void menu3() /*输出排序菜单,供void sort(Link l)函数调用*/
{
printf("\n\t\tA:基础学分\t\t\tB:专业学分\n");
printf("\t\tC:选修学分\t\t\tD:人文学分\n");
printf("\t\tE:实验学分\t\t\tF:学分总和\n");
printf("\t\tG:平均学分\t\t\t\n");
printf("\n请选则您要排序的课程代码:");
}//menu3

void menu4() /*输出菜单上下*符*/
{
printf("================================================================================");
}//menu4

void title() /*输出显示菜单,供void display(Link l)函数调用*/
{
printf(" 班级\t学号\t姓名\t基础\t专业\t选修\t人文\t试验\t总分\t平均\n");
}//title

void data(Node *p,char find[]) /*输出按姓名查找的结果,供void search(Link l)函数调用*/
{
if(strcmp(p->data.name,find)==0)
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p->data.clas,p->data.classnum,p->data.name,p->data.basis,p->data.major,p->data.elective,p->data.humanity,p->data.laboratory,p->data.sum,p->data.average);
}//data

void data1(Node *p) /*输出按学号查找的结果,供void search(Link l)函数调用*/
{
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p->data.clas,p->data.classnum,p->data.name,p->data.basis,p->data.major,p->data.elective,p->data.humanity,p->data.laboratory,p->data.sum,p->data.average);
}//data1

void data2(Node *p,char find[]) /*输出按班级查找的结果,供void search(Link l)函数调用*/
{
if(strcmp(p->data.clas,find)==0)
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p->data.clas,p->data.classnum,p->data.name,p->data.basis,p->data.major,p->data.elective,p->data.humanity,p->data.laboratory,p->data.sum,p->data.average);
}//data2

Node* Locate(Link l,char find[],char match[]) /*查找匹配函数定义,该函数用于定位链表中符合要求的节点,并返回该指针*/
{
Node *r; /*定义节点指针r*/
if(strcmp(match,"classnum")==0) /*按学号查询*/
{
r=l->next; /*初始化r,指向第一个节点*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r->data.classnum,find)==0) /*查询成功*/
return r;
r=r->next; /*节点后移*/
} //while
} //if
else if(strcmp(match,"name")==0) /*按姓名查询*/
{
r=l->next; /*初始化r,指向第一个节点*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r->data.name,find)==0) /*查询成功*/
return r;
r=r->next; /*节点后移*/
} //while
} //else if
else if(strcmp(match,"clas")==0) /*按班级号查询*/
{
r=l->next; /*初始化r,指向第一个节点*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r->data.clas,find)==0) /*查询成功*/
return r;
r=r->next; /*节点后移*/
}//while
}//else if
return 0;
}//Locate

void input(Link l) /*输入函数定义,用于增加学生信息*/
{
char clas[10];
Node *r,*p; /*定义节点r和p*/
r=l; /*将r指向头结点*/
while(r->next!=NULL)
r=r->next; /*将指针置于最末尾*/
while(l)
{
printf("\n友情提示:输入'#'返回上一菜单\n");
printf("\n输入学生的班级号:");
scanf("%s",clas);
if(strcmp(clas,"#")==0)
break;
p=(Node *)malloc(sizeof(Node)); /*生成新的节点*/
strcpy(p->data.clas,clas); /*将clas字符串复制到p->data.clas中*/
printf("输入学生的学 号:");
scanf("%s",&p->data.classnum);
getchar();
printf("输入学生的姓 名:");
scanf("%s",&p->data.name);
getchar();
printf("输入学生的基础分:");
scanf("%3.1f",&p->data.basis);
getchar();
printf("输入学生的专业分:");
scanf("%3.1f",&p->data.major);
getchar();
printf("输入学生的选修分:");
scanf("%3.1f",&p->data.elective);
getchar();
printf("输入学生的人文分:");
scanf("%3.1f",&p->data.humanity);
getchar();
printf("输入学生的实验分:");
scanf("%3.1f",&p->data.laboratory);
getchar();
p->data.sum=p->data.basis+p->data.major+p->data.elective+p->data.humanity+p->data.laboratory; /*计算学分总和*/
p->data.average=p->data.sum/5; /*计算平均学分*/
p->next=NULL; /*p节点的下一个节点为空*/
r->next=p; /*节点前移*/
r=p;
}//while
}//input

void delet(Link l) /*删除函数定义*/
{
char find[10];
Node *p,*r; /*定义节点r和p*/
if(!l->next) /*删除位置不合理*/
{ printf("\n\a对不起,无信息可删除!");
printf("\n");
return;
}//if
printf("\n请输入要删除学生的学号:");
scanf("%s",find);
p=Locate(l,find,"classnum");
if(p)
{ r=l; /*r指向头结点*/
while(r->next!=p) /*r的下一个节点不是p,一直循环*/
r=r->next; /*顺指针向后查找,直到r指向p的前一个节点*/
r->next=p->next; /*删除节点p*/
free(p); /*释放节点p*/
printf("\n\a系统提示:信息删除成功!\n");
shoudsave=1; /*保存资料*/
}//if
else
{ printf("\n\a对不起,无信息可删除!");
printf("\n");
}//else
}//delet

void search(Link l) /*查询函数定义*/
{
char temp; /*定义单字符temp*/
char find[10]; /*定义字符串find[]*/
Node *p; /*定义节点p*/
if(!l->next)
{
printf("\n\a对不起,无信息可查询!");
printf("\n");
return;
}//if
printf("\n\t\t1:按学号查询\t 2:按姓名查询\t 3:按班级查询\n");
printf("\n请输入您要查询的方式:");
scanf("%s",&temp);
if(temp!='1' && temp!='2' && temp!='3')
printf("\n\a\a系统提示:您输入错误!\n");
else if(temp=='1')
{
printf("\n请输入要查询的学号:");
scanf("%s",find);
p=Locate(l,find,"classnum"); /*按学号进行查找匹配*/
}//else if
else if(temp=='2')
{
printf("\n请输入要查询的姓名:");
scanf("%s",find);
p=Locate(l,find,"name"); /*按名字进行查找匹配*/
}//else if
else if(temp=='3')
{
printf("\n请输入您要查询的班级:");
scanf("%s",find);
p=Locate(l,find,"clas"); /*按班级号进行查找匹配*/
}//else if
if(p)
{
printf("\n ==============>查询结果<==============\n");
menu4();
title();
if(temp=='1')
data1(p); /*输出按学号查找的结果*/
else if(temp=='2')
while(p)
{
data(p,find); /*输出按名字查找的结果*/
p=p->next; /*节点后移*/
}//while
else if(temp=='3')
while(p)
{
data2(p,find); /*输出按班级号查找的结果*/
p=p->next; /*节点后移*/
}//while
menu4();
}//if
else
{
printf("\n\a对不起,无信息可查询!");
printf("\n");
}//else
}//search

Link sortH(Link l,char ch) /*分类排序函数定义*/
{
Node *p,*q,*wei,*s,*p1; /*定义节点p,q,wei,s,p1*/
wei=NULL; /*将尾节点置空*/
char temp;
temp=ch;
if(!l->next)
{
printf("\n\a对不起,无信息可排序!");
printf("\n");
return 0;
}//if
while(l->next!=wei)
{
p=l;
q=p->next;
while(q->next!=wei)
{
if(temp=='A') /*按基础学分由高到低进行排序*/
{
if(p->next->data.basis<q->next->data.basis)
{
s=q->next;
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
q=s;
}//if
}//if
else if(temp=='B') /*按专业学分由高到低进行排序*/
{
if(p->next->data.major<q->next->data.major)
{
s=q->next;
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
q=s;
}//if
}//else if
else if(temp=='C') /*按选修学分由高到低进行排序*/
{
if(p->next->data.elective<q->next->data.elective)
{
s=q->next;
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
q=s;
}//if
}//else if
else if(temp=='D') /*按人文学分由高到低进行排序*/
{
if(p->next->data.humanity<q->next->data.humanity)
{
s=q->next;
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
q=s;
}//if
}//else if
else if(temp=='E') /*按实验学分由高到低进行排序*/
{
if(p->next->data.laboratory<q->next->data.laboratory)
{
s=q->next;
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
q=s;
}//if
}//else if
else if(temp=='F') /*按学分总和由高到低进行排序*/
{ if(p->next->data.sum<q->next->data.sum)
{
s=q->next;
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
q=s;
}//if
}//else if
else if(temp=='G') /*按平均学分由高到低进行排序*/
{
if(p->next->data.average<q->next->data.average)
{
s=q->next;
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
q=s;
}//if
}//else if
p=p->next;
q=q->next;
}//while
wei=q;
}//while
p1=l->next;
printf("\n ==============>排序结果<==============\n");
menu4();
if(temp=='A') /*输出按基础学分排序的结果*/
{ printf("\t\t\t班级\t学号\t姓名\t基础学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1->data.clas,p1->data.classnum,p1->data.name,p1->data.basis);
p1=p1->next;
}//while
}//if
if(temp=='B') /*输出按专业学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t专业学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1->data.clas,p1->data.classnum,p1->data.name,p1->data.major);
p1=p1->next;
}//while
}//if
if(temp=='C') /*输出按选修学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t选修学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1->data.clas,p1->data.classnum,p1->data.name,p1->data.elective);
p1=p1->next;
}//while
}//if
if(temp=='D') /*输出按人文学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t人文学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1->data.clas,p1->data.classnum,p1->data.name,p1->data.humanity);
p1=p1->next;
}//while
}//if
if(temp=='E') /*输出按实验学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t实验学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1->data.clas,p1->data.classnum,p1->data.name,p1->data.laboratory);
p1=p1->next;
}//while
}//if
if(temp=='F') /*输出按学分总和排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t学分总和\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1->data.clas,p1->data.classnum,p1->data.name,p1->data.sum);
p1=p1->next;
}//while
}//if
if(temp=='G') /*输出按平均学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t平均学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1->data.clas,p1->data.classnum,p1->data.name,p1->data.average);
p1=p1->next;
}//while
}//if
printf("\n");
menu4();
printf("\n");
return l;
}//sortH

void sort(Link l) /*排序函数定义*/
{
menu3();
char temp;
scanf("%s",&temp);
switch(temp) /*对要排序的类别进行选择*/
{
case 'A':sortH(l,'A');break;
case 'B':sortH(l,'B');break;
case 'C':sortH(l,'C');break;
case 'D':sortH(l,'D');break;
case 'E':sortH(l,'E');break;
case 'F':sortH(l,'F');break;
case 'G':sortH(l,'G');break;
default:printf("\n\a\a系统提示:您输入错误!\n");getchar();break;
}//switch
}//sort

void modify(Link l) /*修改函数定义*/
{
char temp;
char find[10];
Node *p; /*定义节点p*/
if(!l->next)
{
printf("\n\a\a对不起,无信息可修改!");
printf("\n");
return;
}//if
printf("\n\t\t1:按学号修改\t 2:按姓名修改\n");
printf("\n请输入您要修改的方式:");
scanf("%s",&temp);
if(temp!='1'&&temp!='2')
{
printf("\n\a\a系统提示:您输入错误!\n");
return;
}//if
else if(temp=='1') /*按学号修改*/
{
printf("请输入要修改的学号:");
scanf("%s",find);
p=Locate(l,find,"classnum"); /*按学号查找匹配*/
}//else if
没有空间了 邮箱给我 发你邮箱去追问邮箱多少

热心网友 时间:2023-09-09 22:33

朋友你的这个程序搞好了吗 可以发给我吗?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有效的教学激励策略有哪些 手机充电嗡嗡响怎么回事 手机在充电时发出嗡嗡作响 手机充电头快充有嗡嗡的声音 影视多媒体设计真的不好找工作吗 专科学影视多媒体技术好就业吗 影视多媒体技术专业就业怎么样 影视多媒体技术就业率 胆结石病人在输血后半个月,全身开始发痒是什么原因,怎样能够止痒呢?谢 ... 有关胆结石手术后的恢复,求教 一火车皮(60吨)能装多少块红砖(230*110*50) 红砖出现质量问题找谁投诉 红砖出现质量问题该如何赔偿 建筑用红砖,签订了合同.按约定的规格进行生产,可以不执行国家标准吗 你好,我给他人拉了3车红砖一共18000块每块0.25元 没有开票,我和他要了几回他不说好听的,我 iphone5升级ios8音量减小键失灵 wps怎么能删除字体是下面的横线不变,或者把横线变 怎样在Word文档里面的一段文字中间画一条横线,上面可以打文字,删除文字横线不会一起删除 office 2013怎样不删除下划线,仅删除文字 怎样删掉文字但可以不删掉它下面的下划线 求大神赐名:2020年8月22日晚20点15分出生的男宝宝该怎么取名,姓尹 58同城二手车1万元以左右的车是骗子吗 58同城二手车可靠吗 梦见很多人去埋仗自己的亲人 什么是锅炉再热器干烧 干煸读音是什么呢? 什么样的操作算是电磁炉干烧? 红烧鱼和干烧鱼的最大区别是什么拜托了各位 谢谢 为啥用些东西炒的时候不放油直接翻炒什么是干炒? 热水袋干烧是什么意思 设计一个学生的学分管理程序 中国医师协会学分怎么录入山西省医学教育 用C语言编写一个学分管理程序 学生学籍管理程序 求c语言学分管理程序,外加此程序的课程设计报告 学分管理 c++ c语言:学生成绩简单管理程序 求C语言大神,我想设计一个学生学分查询系统的程序,要求如下:具有添加、查询、删除、退出,私聊我 .学生成绩管理 c语言程序 旱荷花的养殖方法是什么有什么注意事项 3、 学生成绩管理程序。根据学生选修的课程及课程学分和课程成绩计算平均学分绩点GPA。GPA为所有课程成绩 C语言实训,编译一个学分管理系统(用到菜单程序) 用C语言编程“学分管理系统”怎么写? 编制一个学生的选课及学籍管理程序 人体器官重要性排名前五的都有什么? 静脉痉挛的症状 如何保持记忆力 帮我找个下载小说的网站 帮我推荐几个给力的下载歌曲的网站,谢谢! 请大家帮我找一个下载mp3歌曲的网站