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

c语言超过500行的程序

发布网友 发布时间:2022-06-01 14:30

我来回答

1个回答

热心网友 时间:2024-11-23 01:48

学生成绩管理是学校教务管理的重要组成部分,其处理信息量很大,本程序是对学生的成绩管理作一个简单的模拟,用菜单选择操作方式完成下列功能:
(1)学生成绩录入;
(2)查询学生成绩;
(3)插入学生成绩;
(4)删除学生成绩

(5) 打印学生成绩

其中学生信息有:学号,姓名,性别,及四科课程的成绩,我用了一个结构体来保存这些信息

typedef struct LNode
{ int number; //学号
char name[15]; //姓名
char sex[8]; //性别
float score[4]; //4门成绩数组分数
struct LNode *next;
}LNode,*Linklist;

采用单链表(linklist.h)来表示数据之间的关系,

linklist.h源程序如下:

/*******************************************************//linklist.h**************************************/
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int Status;
char course[4][10]={"物理","化学","英语","语文"};

typedef struct LNode
{ int number; //学号
char name[15]; //姓名
char sex[8];
float score[4]; //4门成绩数组分数
struct LNode *next;
}LNode,*Linklist;

//函数声明如下:
Status CreateList(Linklist &L,int n); //创建链表
Status InitList(Linklist &L);
Status DeleteList(Linklist &L); //删除链表
Status DeleteNode(Linklist &L,Linklist p); //删除一个节点
Status InsertNode(Linklist &L,Linklist &q,Linklist p); //在q前面插入一个结点p
Status FindForName(Linklist &L,char *name,Linklist &p); //通过名字查询,用p返回
Status FindForNum(Linklist &L,int num,Linklist &p); //通过学号查询,用p返回

Status InitList(Linklist &L)
{
L=(LNode *)malloc(sizeof(LNode));
L->next=NULL;
return OK;
}

Status CreateList(Linklist &L,int n) //创建链表
{
Linklist p=NULL,q;
InitList(L);
q=L;
for(int i=1;i<=n;i++){
p=(LNode *)malloc(sizeof(LNode));
printf("请根据提示信息输入第%d个学生的信息\n",i);
printf("学号:");
scanf("%d",&p->number);
printf("姓名:");
scanf("%s",p->name);
printf("性别(male/female):");
scanf("%s",p->sex);
for(int j=0;j<4;j++){
printf("%s:",course[j]);
scanf("%f",&p->score[j]);
}
q->next=p;
q=p;
q->next=NULL;
}
return OK;
}

Status DeleteNode(Linklist &L,Linklist p) //删除一个节点
{
Linklist q=L;
while(q&&q->next!=p)
q=q->next;
if(q) q->next=p->next;
free(p);
return OK;
}

Status InsertNode(Linklist &L,Linklist &q,Linklist p) //在q前面插入一个结点p
{
p->next=q;
q=p;
return OK;
}

Status FindForName(Linklist &L,char *name,Linklist &p) //通过名字查询,用p返回
{
p=L->next;
while(p!=NULL&&(strcmp(p->name,name)!=0))
p=p->next;
return OK;
}

Status FindForNum(Linklist &L,int num,Linklist &p) //通过学号查询,用p返回
{
p=L->next;
while(p!=NULL&&(p->number!=num))
p=p->next;
return OK;
}

Status DeleteList(Linklist &L) //删除链表
{
Linklist p=L;
while(p){
L=p->next;
free(p);
p=L;
}
return OK;
}

/******************************************************************************/

这里又利用一个头文件包含基本功能实现的操作函数,如下:

/******************************************************************************************/

//operte.h

#include "linklist.h"

Status Create(Linklist &L){
int n;
printf("请输入要录入成绩的学生人数:");
scanf("%d",&n);
CreateList(L,n);
return OK;
}

Status Find(Linklist L){
int k;
int number;
char name[20]="";
Linklist p=NULL;
do{
printf("1————根据姓名查询\n2————根据学号查询\n");
scanf("%d",&k);
}while(k<1||k>2);
switch(k){
case 1: printf("请输入姓名:");
scanf("%s",name);
FindForName(L,name,p);
break;
case 2: printf("请输入学号:");
scanf("%d",&number);
FindForNum(L,number,p);
break;
}
if(p!=NULL){
printf("您查找的信息如下:\n");
printf("姓名:%s\n",p->name);
printf("性别:%s\n",p->sex);
printf("学号:%d\n",p->number);
printf("四科成绩如下:\n");
for(int i=0;i<4;i++)
printf("%s:%f ",course[i],p->score[i]);
printf("\n");
}
else
printf("没有找到要查找的数据,可能是你输入有误,请仔细察看!!!");
return OK;
}//find

Status Insert(Linklist &L){
Linklist p=(LNode*)malloc(sizeof(LNode));;
printf("\n插入一个学生成绩,请按照提示信息输入\n");
printf("学号:");
scanf("%d",&p->number);
printf("姓名:");
scanf("%s",p->name);
printf("性别(male/female):");
scanf("%s",p->sex);
for(int j=0;j<4;j++){
printf("%s:",course[j]);
scanf("%f",&p->score[j]);
}
InsertNode(L,L->next,p);

return OK;
}

Status delet(Linklist &L){
char key;
Linklist p=NULL;
char name[15];
printf("删除学生信息:\n请输入删除学生的姓名:");
scanf("%s",name);
FindForName(L,name,p);
if(p!=NULL){
printf("您要删除的学生的信息如下:\n");
printf("姓名:%s\n",p->name);
printf("性别:%s\n",p->sex);
printf("学号:%d\n",p->number);
printf("四科成绩如下:\n");
for(int i=0;i<4;i++)
printf("%s:%f ",course[i],p->score[i]);
printf("\n确定删除吗?(y or n)");
getchar();
scanf("%c",&key);
if(key=='y'||key=='Y')
DeleteNode(L,p);
}
else
printf("不能删除,因为没有找到要查找的数据,可能是你输入有误,请仔细察看!!!");
return OK;
}

Status print(Linklist L){
Linklist p=L->next;
printf("打印全班学生成绩如下:\n");
while(p!=NULL){
printf("姓名:%s\n",p->name);
printf("性别:%s\n",p->sex);
printf("学号:%d\n",p->number);
printf("四科成绩如下:\n");
for(int i=0;i<4;i++)
printf("%s:%f ",course[i],p->score[i]);
printf("\n");
p=p->next;
}//while
return OK;
}

主函数如下:

/**************************************************************************/

//Std_ScoreManage.c
#include"operate.h"

int main()
{
Linklist L;
int k; //控制循环的标志
Create(L);
while(1)
{
printf("*******************************************************************\n\n");
printf(" -----------------------------------\n");
printf(" | 学生成绩管理 |\n");
printf(" |__ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|\n");
printf(" | 1. 查询成绩 |\n");
printf(" | 2. 插入成绩 |\n");
printf(" | 3. 删除成绩 |\n");
printf(" | 4. 输出所有学生成绩 |\n");
printf(" | 0. 退出程序 |\n");
printf(" ------------------------------------\n");
printf(" 请输入你的选择: ");
scanf("%d",&k);
switch(k)
{
case 1: Find(L); break;
case 2: Insert(L);break;
case 3: delet(L);break;
case 4: print(L);break;
case 0: DeleteList(L); return TRUE;
default: printf("选择错误,重新开始!\n");
}
} //while
return TRUE;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 求C语言程序,500行左右代码 源代码长度为500行的C语言编程怎么编 五年前社保断了一个月还可以补缴吗 寻求炸弹人游戏源代码?或者其他大于500行的c语言小游戏? 怎么关掉手机锁屏 一个手机号怎么申请第二个? 人体中的元素除了O、C、H、N剩下的都是以无机盐的形式存在吗? 群里面自己发红包自己不能领吗? 我什么我发的红包自己不能领,而且还要输密码才能发红包了 什么颜色的眼影最常用 眼影最常用的是哪些颜色啊?哪个牌子的眼影比较好? 猫除跳蚤用什么药,猫咪去跳蚤用什么药好 ...不小心在我自己群里发了普通红包我自己又没法领,会退回吗?_百度知 ... 女生最常用的眼影颜色是什么颜色 急:我的鼻子近来总是流血不止,排除气候干燥,还会有什么原因造成啊?? ...特别到了秋冬季,每次鼻子都会出些血丝,请问是什么原因? ...用力擤鼻子还会轻微出血,请问是什么原因造成的?应该怎样治疗呢?谢 ... 今天香水就喷到手腕处一点点,,屋里有点热。。现在被自己香水味熏的恶心... 平时爱在手腕喷香水,带着天梭表喷会有影响吗? 捷达跟桑塔纳要买哪个更好? 什么样的车车牌背景是黑色? 车牌底色为黑色的是什么类型的车呢 有没有法律明确规定2000年建的农村的没有房产证的房子拆迁怎么赔偿? 拆迁安置补偿政策有哪些 房屋拆迁办说拆迁要按照2000年以前的房屋来测算补偿,这种说法有法律依据... 我2000年买的房子现在拆迁老房主还问要土地补偿金,我双证齐全应该给吗... 国家拆迁补贴政策是什么样的?有哪些扶持优惠政策 国家规定2000年前满20年以上的房子拆迁吗? 请问2000年买了间二手集资房,有房产证,没过户,若政府拆迁,能否得... 2000年拆迁政策只有户口在册,本人早已外出成家能亨有动迁补偿吗?_百度... 护理类包括哪些专业 都有什么专业 我眉毛缺了一小块 忽然发现眉毛缺了一块,右边后半截都快没有了。最近也没有什么特殊的事情... 木地板施工工艺流程 运动木地板作为运动地面在生产过程中要怎么处理? 怎样写开户许可证迭失证明 一个手机号怎么申请第二个? 怎样关闭iphone music自动续订 ...涨不上去?龙蟠科技2021年季报时间?龙蟠科技股票值多少钱? 中船科技股票今天收盘价