精华内容
下载资源
问答
  • 主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 大一的时候上网可学的不是太好,现在看这个学生成绩管理系统感觉还是有点简陋了,但是嘛,这也是自己的成长过程不是?行了,咱废话不多说,来聊聊这个程序。 设计思路 选择数据 因为学生信息包含学号、成绩数字信息...

    前话:时隔半年的博客,哎,大二课太多了,没办法,这不最近结了几门课,有点空闲时间,正愁写点什么好,恰巧翻到了c语言结课时的大作业,整理整理就来更新了。大一的时候上网课学的不是太好,现在看这个学生成绩管理系统感觉还是有点简陋了,但是嘛,这也是自己的成长过程不是?行了,咱废话不多说,来聊聊这个程序。

    设计思路

    1. 选择数据
      因为学生信息包含学号、成绩数字信息和名字、等级字符信息,所以我们需要使用能够包含不同数据类型的结构体。那么问题来了,是使用链表还是结构体数组呢?对当时的我来说没得选,因为学的太菜(狗头保命),只有用较为简单的结构体数组。
    2. 函数之间的传值问题
      利用指针的特点,即在每个函数中可通过指针直接修改结构体数组中数据,这样就避免了函数之间传值,简化程序。

    我的程序主要有以下七个功能
    在这里插入图片描述
    部分代码详解

    • 菜单函数
    int menu()
    {
    	int n; 
    	printf("\t\t请输入学生人数:");
    	scanf("%d",&n); 
    	printf("\n");
    	printf("				菜	单\n");
    	printf("		------------------------------------------\n");
    	printf("			1-信息录入\n");
    	printf("			2-依据学生的学号查询记录\n");
    	printf("			3-显示所有学生信息\n");
    	printf("			4-依据成绩降序排列\n");
    	printf("			5-依据学号修改成绩\n");
    	printf("			6-统许平均分和不及格人数\n");
    	printf("			7-存档保存\n");
    	printf("			0-退出\n");
    	printf("		------------------------------------------\n");
    	printf("\n");
    	return n;
    }
    

    此函数为什么要先输入学生人数n,打乱队形呢?其实是因为后边的功能函数都需要遍历,当时为了偷懒才这样写(捂脸)。如果你有强迫症的话,可以在结构体内设置最后一位同学信息标志,当检测到这个标志就结束遍历,就不会打乱队形了(哈哈哈,我真是个小机灵鬼)。

    • 降序排序函数
    void sorting(S students[10],int n)//依据成绩降序排列
    {
    	int i,j;
    	struct student max[1],STUDENTS[10];
    	for(i=0;i<n;i++)
    	{
    		STUDENTS[i]=students[i];//只有同样的结构体才能利用=赋值 
    	}
    	for(i=0;i<n;i++)//选择排序 
    	{
    		for(j=i+1;j<n;j++)
    		{
    			if(STUDENTS[i].gread<STUDENTS[j].gread)
    			{
    				max[0]=STUDENTS[i];
    				STUDENTS[i]=STUDENTS[j];
    				STUDENTS[j]=max[0];		
    			}
    		}
    		printf("学号:%12d 姓名:%s 成绩:%4d 等级:%c\n",STUDENTS[i].num,STUDENTS[i].name,
    		STUDENTS[i].gread,STUDENTS[i].level);
    	}
    	printf("\n");
    }
    

    这里再定义一个STUDENTS[10]的原因是我不希望排序的时候会改变原来的信息存储顺序。
    注意:只有同样的结构体才能用=赋值

    完整代码展示

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct student
    {
    	int num;//学号 
    	char name[10];//名字 
    	int gread;//成绩 
    	char level;//等级 
    }S;
    int menu();//初始菜单 
    void choose(S *p,int sel,int n);//选择 
    void show(S *p1,int n);//显示学生信息 
    void search(S *p2,int n);//依据学号查询记录
    void insert(S *p3,int n);//信息录入、评级 
    void sorting(S student[10],int n);//依据成绩降序排列
    void modify_gread(S *p6,int n);//依据学号修改成绩
    void statistics(S *p7,int n);//统计平均分和不及格人数
    void save(S *p8,int n);//归档保存
    
    int main(int argc, char* argu[ ])
    {
    	S students[10];
    	int sel=9,n;
    	n=menu(); 
    	while(sel!=0)//此循环保证程序能够执行多步,直到输入0退出 
    	{
    		printf("请输入您要执行的功能前的号码:");
    		scanf("%d",&sel);
    	if(sel<0 ||sel>8)
    		break;
    	else
    		choose(students,sel,n);
    	}
    	return 0;	
    }
    int menu()
    {
    	int n; 
    	printf("\t\t请输入学生人数:");
    	scanf("%d",&n); 
    	printf("\n");
    	printf("				菜	单\n");
    	printf("		------------------------------------------\n");
    	printf("			1-信息录入\n");
    	printf("			2-依据学生的学号查询记录\n");
    	printf("			3-显示所有学生信息\n");
    	printf("			4-依据成绩降序排列\n");
    	printf("			5-依据学号修改成绩\n");
    	printf("			6-统许平均分和不及格人数\n");
    	printf("			7-存档保存\n");
    	printf("			0-退出\n");
    	printf("		------------------------------------------\n");
    	printf("\n");
    	return n;
    }
    void choose(S *p,int sel,int n) 
    {
    	switch(sel)
    	{
    		case 1:insert(p,n);break;
    		case 2:search(p,n);break;
    		case 3:show(p,n);break;
    		case 4:sorting(p,n);break;
    		case 5:modify_gread(p,n);break;
    		case 6:statistics(p,n);break;
    		case 7:save(p,n);break;
    		case 0:break;
    	}
    }
    void show(S *p1,int n)//显示所有学生信息
    {
    	int i;
    	for(i=0;i<n;i++,p1++)
    	{
    		printf("学号:%12d 姓名:%s 成绩:%4d 等级:%c\n",(*p1).num,(*p1).name,(*p1).gread,(*p1).level);
    	}
    	printf("\n");
    }
    void search(S *p2,int n)//依据学号查询记录
    {
    	int num,i;
    	printf("请输入学号:"); 
    	scanf("%d",&num); 
    	for(i=0;i<n;i++,p2++)
    	{
    		if(num==(*p2).num)
    		printf("学号:%12d 姓名:%s 成绩:%4d 等级:%c",(*p2).num,(*p2).name,(*p2).gread,(*p2).level);
    	}
    	printf("\n");
    }
    void insert(S *p3,int n)//信息录入、评级 
    {
    	int i,last;
    	for(i=0;i<n;i++,p3++)
    	{	
    		//先输入相关信息 
    		printf("当前为第%d个学生\n",i+1);
    		printf("请输入学号:"); 
    		scanf("%d",&(*p3).num); 
    		printf("请输入姓名:");
    		scanf("%s", &(*p3).name);
    		printf("请输入成绩:");
    		scanf("%d",&(*p3).gread);
    		//输入完成后自动根据标准评级 
    		last=(*p3).gread/10;
    		switch(last)
    		{
    			case 9:(*p3).level='A';break;
    			case 8:(*p3).level='B';break;
    			case 7:(*p3).level='C';break;
    			case 6:(*p3).level='D';break;
    			default:(*p3).level='E';break;
    		}
    	}
    	printf("\n");
    }
    void sorting(S students[10],int n)//依据成绩降序排列
    {
    	int i,j;
    	struct student max[1],STUDENTS[10];
    	for(i=0;i<n;i++)
    	{
    		STUDENTS[i]=students[i];//只有同样的结构体才能利用=赋值 
    	}
    	for(i=0;i<n;i++)//选择排序 
    	{
    		for(j=i+1;j<n;j++)
    		{
    			if(STUDENTS[i].gread<STUDENTS[j].gread)
    			{
    				max[0]=STUDENTS[i];
    				STUDENTS[i]=STUDENTS[j];
    				STUDENTS[j]=max[0];		
    			}
    		}
    		printf("学号:%12d 姓名:%s 成绩:%4d 等级:%c\n",STUDENTS[i].num,STUDENTS[i].name,STUDENTS[i].gread,STUDENTS[i].level);
    	}
    	printf("\n");
    }
    
    void modify_gread(S *p5,int n)//依据学号修改成绩
    {
    	int num,i,G;
    	printf("请输入您要修改成绩的学生学号:");
    	scanf("%d",&num);
    	printf("请输入修改后的成绩:");
    	scanf("%d",&G);
    	
    	for(i=0;i<n;i++,p5++)//遍历寻找目标 
    	{
    		if(num==p5->num)
    		p5->gread=G;
    	}
    	printf("\n");
    }
    void statistics(S *p6,int n)//统计平均分和不及格人数
    {
    	int i,count=0;
    	double averange,sum=0;
    	for(i=0;i<n;i++,p6++)
    	{
    		sum=sum+(*p6).gread;
    		if((*p6).gread<60)
    		count++;
    	}
    	averange=sum/n;//计算平均分 
    	printf("平均分:%f,不及格人数:%d\n",averange,count);
    	printf("\n");
    }
    
    void save(S *p7,int n)//归档保存
    {
    	FILE*fp;
    	int i;
    	fp=fopen("F://1.txt","w");
    	for(i=0;i<n;i++,p7++)//遍历写入文件 
    	{
    		fprintf(fp,"%d %s %d %c\n",(*p7).num,(*p7).name,(*p7).gread,(*p7).level);
    	}
    	fclose(fp);
    	printf("保存成功\n");
    	printf("\n");
    }
    

    记得修改文件路径哦!!!

    运行结果
    在这里插入图片描述
    程序到这里即完成了,测试也都通过!这个程序还是较为简单的,希望能够帮助到你,欢迎各位读者在评论区留言啊,我会在第一时间回复的。写者不易,留个赞再走呗!

    展开全文
  • C语言数组编写学生管理系统#include#include#include #includestatic int i=0;struct grade{float math;float C;float English;float sum;float ave;};struct student{int num;char name[20];char sex[5];char ...

    C语言数组编写学生管理系统

    #include

    #include

    #include

    #include

    static int i=0;

    struct grade

    {

    float math;

    float C;

    float English;

    float sum;

    float ave;

    };

    struct student

    {

    int num;

    char name[20];

    char sex[5];

    char nation[20];

    struct grade score;

    int age;

    };

    static struct student m[10];

    static struct grade score[10];

    struct student temp;

    struct grade v;

    int main()

    {

    int n;

    void input();

    void del();

    void change();

    void inquire();

    while(1)

    {

    printf("\n 学生信息管理系统\n\n\n 1.添加信息\n 2.删除信息\n 3.修改信息\n 4.查询信息\n 5.退出程序\n");

    printf("\n\n 请输入选项:");

    scanf("%d",&n);

    if(n==5)

    {

    return 0;

    }

    while(1)

    {

    switch(n)

    {

    case 1:

    system("cls");

    input();

    break;

    case 2:

    system("cls");

    del();

    break;

    case 3:

    system("cls");

    change();

    break;

    case 4:

    system("cls");

    inquire();

    break;

    case 5:

    system("cls");

    return 0;

    default :

    system("cls");

    printf("输入有误\n");

    break;

    }

    if(n==4)

    {

    break;

    }

    printf("1.返回主菜单\n2.退出程序\n");

    scanf("%d",&n);

    if(n==1)

    {

    break;

    }

    if(n==2)

    {

    system("cls");

    exit(0);

    }

    else

    {

    printf("输入有误");

    }

    }

    system("cls");

    }

    }

    void input()

    {

    int n,s,sum=0,max=0;

    char c;

    printf("学号为0时退出结束录入\n");

    while(1)

    {

    printf("学号:");

    scanf("%d",&m[i].num);

    getchar();

    if(m[i].num==0)

    {

    system("cls");

    printf("添加成功\n");

    break;

    }

    printf("姓名:");

    gets(m[i].name);

    printf("性别(F/M):");

    scanf("%s",&m[i].sex);

    getchar();

    printf("民族:");

    scanf("%s",&m[i].nation);

    getchar();

    printf("年龄:");

    scanf("%d",&m[i].age);

    printf("数学成绩:");

    scanf("%f",&score[i].math);

    printf("C语言成绩:");

    scanf("%f",&score[i].C);

    printf("英语成绩:");

    scanf("%f",&score[i].English);

    score[i].sum = score[i].C + score[i].math + score[i].English;

    score[i].ave = score[i].sum /3;

    i++;

    }

    }

    void inquire()

    {

    int n,y,k,flag=0;

    char s[10];

    while(1)

    {

    system("cls");

    printf("\n 查询信息\n\n\n 1.显示所有信息\n 2.按学号查询\n 3.按姓名查询\n 4.按年龄查询\n 5.返回\n");

    scanf("%d",&n);

    switch(n)

    {

    case 1:

    system("cls");

    while(1)

    {

    printf("1.按学号显示\n2.按平均成绩显示\n3.返回\n");

    scanf("%d",&n);

    if(n==1)

    {

    system("cls");

    if(i==0)

    {

    printf("没有数据\n");

    printf("按

    展开全文
  • 选择界面②用二维数组和调用函数实现学号、语文、数 学、英语成绩的输入、求每-一个人的总成绩、平均分、显 示、查询、修改和排序(按总分)功能、输出各科最高分、 以及排序后的成绩表(包含表头)。
  • #include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/ . printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/ printf("\t\t\this(.插入一条学生记录,...

    要求:1记录学生班级姓名,性别,职务住址情况,数据输入数据删除排序查。

    #include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/ . printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/ printf("\t\t\this(.

    插入一条学生记录,按学号排好。5。按姓名查找,并删除一条记录。6。查找。

    C 语言学生成绩管理系统 #include #include#include#include typedef struct STUDENT { char studentNumber[20];/*学生学号*/ char .

    #include #define max_num 100 typedef struct studnet{ char name[20]; int chinese; int. student s[max_num]; printf("请输入学生数目:"); scanf("%d",&num); for(i = .

    #include void shuru(FILE *wfp); void tianjia(FILE *cfp); void chazhao(FILE *. case 0: break; } } int choice(void ) { int a; printf("欢迎进入学生基本信息管理系统:\n.

    系统以菜单方式工作(用键盘输入1~4之间的数来选择功能) (1)学生信息。

    #include#include#include#include#include#define LEN sizeof(struct student)#define . elec,stu[i].expe,stu[i].requ,stu[i].sum struct student/*定义学生成绩结构体*/ { int num;/*.

    写了一个,不行可以改一下,,,#include #include struct stu { . case 2: if(n==0) printf("无学生信息!!!"); else { printf("[1]:从系统调用 [2]:.

    系统以菜单方式工作 2. 学生信息录入功能(学生信息保存在文件里,student。

    给你一些提示:建立结构体成员,断student_info.txt是否存在~ 判断文件指针的位置 读取数据给结构体 判断读取到的成员数 (程序主菜单)...学生信息录入功能 按学号排.

    ⑴输入至少10个学生的自然信息(学号、姓名、年龄、所在系、成绩)。 ⑵.

    #include #include #define max 200 struct student { char no[10]; // 学号 char name[. printf("\t\t\t* *\n"); printf("\t\t\t* 健身跑学分管理系统 *\n"); printf("\t\t\t* *\n"); printf(.

    要求添加,修改,删除学生信息 以及按照指定项目对学生进行排序,一简单的。

    #include #include #include #include #define N. printf("查看英语成绩请按 1 :\n查看数分成绩请按 2 :\n查看C语言成绩请按 3 :\n查.

    要求添加,修改,删除学生信息 以及按照指定项目对学生进行排序,一简单的。

    #include #include #include #define LEN sizeof(struct . { printf("不能打开文件!\n"); return 0; } fscanf(fp," 考试成绩管理系统 \n"); fscanf.

    参考如下学生信息管理系统的C源代码吧。#include #include /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float .

    编写学生成绩管理系统的源程序代码;1) 按学生姓名查询成绩2) 分别统计。

    学生成绩管理(c语言版)/*11.3.2 源程序*//***********xuesheng.c***********//******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#.

    列出记录三,电脑维修,平均得分,[20]stud_name等等学生成绩管理系统是。

    #include&quot:\n&quot.h的内容 list *insert(list *h) { list *p,*q; printf("next; } } int main(). =ERROR) {printf("n"); printf(" | 学生成绩管理 |\n"); printf(" |__ _ _ _ _ _ _ _ _ .

    要求有类似wps文字处理系统的背景。 老师要求只能用c语言!

    #ifndef H_STUDENT_HH #define H_STUDENT_HH #include "stdio.h" #include ". printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n"); printf("\t**.

    可以添加,删除,插入信息,可以对成绩进行升序降序排列,信息有姓名,学。

    #include"stdio.h" #define SIZE 100000 #include"string.h" #include"stdlib.h" . printf("请输入要修改学生的学号:"); scanf("%d",&num); for(i=0;i<=SIZE;i++.

    我来回答 以下是平均分 最高分 总分的代码。。。。/* Note:Your choice is C IDE */#. printf("sum=%d\nave=%d\nmost=%d",sum,ave,most); }while(n<=j);}以下是输入学生.

    1系统以菜单方式工作。 2登记学生的学号,姓名,性别,年龄,籍贯,系别.

    好好学学链表章节,程序开始运行从文件读数据到链表,然后对链表进行功能操作,程序结束之前将链表存入文件。这些功能都比较简单,你学好链表应该就可以完成了。

    学校要求用C语言设计的 学生信息管理系统 学生信息包括:学号,姓名,年。

    写了半天,看看吧。#include #include #include #include. printf("\n是否7a64e58685e5aeb931333262346435继续输入另外一个学生信息?(.

    这是运行界面。。。急求啊!!!!!!!!!!!!!!!!!

    #include int main(void) { int num; printf("欢迎使用学生成绩统计系统\n\n"); printf("\t\t:---------------------------------------:\n"); printf("\t\t:\t学生成绩统计系统\t\t:\n.

    学生管理系统设计,每个学生是一条记录,包括姓名,学号,性别,出生年月.

    这个百度搜搜或者找人帮做一个吧 一般不会有人免费给你做的~!

    展开全文
  • 图书管理系统c语言 结构体数组实现

    千次阅读 多人点赞 2017-02-14 17:02:23
    图书管理系统是数据结构常见的课设题,在这里写一个简单的c语言实现代码。没有使用指针,链表。第一次需要写一些内容到程序中,之后注释掉creat(),creat2()两个函数即可从文件中读取。 #include #include #...

    图书管理系统是数据结构常见的课设题,在这里写一个简单的c语言实现代码。没有使用指针,链表。第一次需要写一些内容到程序中,之后注释掉creat(),creat2()两个函数即可从文件中读取。

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<time.h>
    #define M 1
    
    
    typedef struct node//图书信息的结构体
    {
        char bookid[10];
        char bookname[50];
        char author[20];
        int leibie;
        int sum;
        int now;
    }book;
    typedef struct//用于存放所有的图书的结构体
    {
        book book1[1000];
        int len;
    }books;
    
    
    typedef struct xcv
    {
        char book2[10];
    
        char shijian[30];
    }yijie;
    typedef struct node1//借书证信息的结构体
    {
        char cardid[10];
        char studentname[10];
        char studentclass[10];
        yijie yijieshu[10];
        int len3;
    
    }card;
    typedef struct//用于存放所有的借书卡的结构体
    {
        card card1[100];
        int len1;
    }cards;
    
    books s;
    cards p;
    char *t2;
    void fun()//显示系统当前时间函数
    {
    
        time_t t1;
        t1=time(NULL);
        t2=ctime(&t1);
        printf("现在的时间是:%s\n",t2);
        printf("                    自现在起一个月后请归还图书\n");
    
    }
    
    
    void print()//屏幕前空格
    {
        printf("\n");
        printf("\n");
        printf("\n");
        printf("\n");
        printf("\n");
        printf("\n");
        printf("\n");
        printf("\n");
    }
    
    void save()//保存文件用于创建图书
    {
        FILE *fp;
        int i;
        if((fp=fopen("book.dat","wb"))==NULL)
        {
            printf("cannot open this file\n");
            return ;
        }
        for(i=0;i<s.len;i++)
        if(fwrite(&(s.book1[i]),sizeof(book),1,fp)!=1)
        printf("file write error\n");
        fclose(fp);
    }
    
    void creat(int n)//创建图书
    {
        s.len=0;
        int i;
        for(i=0;i<n;i++)
        {
            printf("请输入书号\n");
            scanf("%s",s.book1[i].bookid);
            printf("请输入书名\n");
            scanf("%s",s.book1[i].bookname);
            printf("请输入作者\n");
            scanf("%s",s.book1[i].author);
            printf("请输入书籍类别:1:文学 2:科技 3:历史 4:其他\n");
            scanf("%d",&s.book1[i].leibie);
            printf("请输入书的总数\n");
            scanf("%d",&s.book1[i].sum);
            printf("请输入书的现量\n");
            scanf("%d",&s.book1[i].now);
            s.len++;
        }
        save();
    }
    
    void save1()//保存文件用于创建书卡
    {
        FILE *fp;
        int i;
        if((fp=fopen("card.dat","wb"))==NULL)
        {
            printf("cannot open file\n");
            return ;
        }
        for(i=0;i<p.len1;i++)
        if(fwrite(&(p.card1[i]),sizeof(card),1,fp)!=1)
        printf("file write error!\n");
        fclose(fp);
    }
    
    void creat2(int n)//创建书卡
    {
        p.len1=0;
        int i;
        for(i=0;i<n;i++)
        {
            printf("请输入卡号\n");
            scanf("%s",p.card1[i].cardid);
            printf("请输入姓名\n");
            scanf("%s",p.card1[i].studentname);
            printf("请输入班级\n");
            scanf("%s",p.card1[i].studentclass);
            p.card1[i].len3 = 0;
            p.len1++;
        }
        save1();
    }
    
    int find(char *str)
    {
        int i = 0;
        for( ; i < s.len ; ++i)
        {
            if(!strcmp(str , s.book1[i].bookid))
            {
                return i;
            }
        }
        return i;
    }
    
    int findpeo(char *str)
    {
        int i = 0;
        for( ; i < p.len1 ;++i)
        {
            if(!strcmp(str , p.card1[i].cardid))
            {
                return i;
            }
        }
        return i;
    }
    
    void findbook()//查找图书
    {
        char str[10];
        int a,b,i,c;
        print();
        printf("                    请选择您的查找方式:\n");
        printf("                     ************************\n");
        printf("                      1:按书号查找\n                      2:按类别显示\n");
        printf("                     ************************\n                     ");
        getchar();
        scanf("%d",&b);
        system("cls");
        if(b==2)
        {
            print();
            printf("                   请输入您想查找的图书类别:\n                    ***********************\n                    1:文学   2:科技\n                    3:历史   4:其他\n                    ************************\n");
            printf("                     ");
            getchar();
            scanf("%d",&c);
            system("cls");
            print();
            printf("                    该类别的图书有\n");
            printf("                    ********************************************\n");
            printf("                    书号      书名      作者      总量      现量\n");
            for(i=0;i<s.len;i++)
            {
                if(c==s.book1[i].leibie)
                printf("                    %-7s%-12s%-10s %-10d%d\n",s.book1[i].bookid,s.book1[i].bookname,s.book1[i].author,s.book1[i].sum,s.book1[i].now);
            }
            printf("                    ********************************************\n");
        }
        else if(b==1)
        {
            print();
            printf("                    请输入要查找的书的书号\n");
            printf("                    ");
            scanf("%s",str);
            a=find(str);
            if(a == s.len)
            {
                puts("                    抱歉您查找的图书不存在");
                printf("                    请按任意键返回\n                    ");
                getchar();
                getchar();
                return ;
            }
            if(!s.book1[a].now)
            {
                puts("                    该图书已经借光了");
                printf("                    请按任意键返回\n                    ");
                getchar();
                getchar();
                return ;
            }
            printf("                    该书的名字是<<%s>>,\n                    该书一共有%d本,\n                    现在还有%d本可以借阅.\n",s.book1[a].bookname,s.book1[a].sum,s.book1[a].now);
        }
        else
        {
            print();
            printf("                    输入错误,按任意键返回上一层\n                    ");
            getchar();
            getchar();
            return ;
        }
        printf("                    查询结束.请按任意键返回上一层\n                    ");
        getchar();
        getchar();
    }
    
    void borrow()//借阅图书
    {
    
        char str[10];
        char peo[10];
        char d;
    	print();
        printf("                    请输入要查找的书号\n");
        int t, tpeo ,i;
    	printf("                    ");
        scanf("%s" ,str);
        t = find(str);
        if(t == s.len)
        {
             puts("                    抱歉您要借的图书不存在");
             printf("                    请按任意键返回\n                    ");
             getchar();
             getchar();
             return ;
        }
        if(!(s.book1[t].now))
        {
            puts("                    该图书已经借光了");
            printf("                    请按任意键返回\n                    ");
            getchar();
            getchar();
            return ;
        }
        printf("                    请输入您的卡号\n");
    	printf("                    ");
        scanf("%s",peo);
        tpeo = findpeo(peo);
        if(tpeo==p.len1)
        {
            printf("                    您输入的卡号不存在,按任意键返回上一层\n                    ");
            getchar();
            getchar();
            return ;
        }
        if(p.card1[tpeo].len3>=10)
        {
            printf("                    您的借书证借书数量已经达到上限,不允许再借书.按任意键返回上一层\n                    ");
            getchar();
            getchar();
            return ;
        }
        printf("                    查询成功,确定要借这本书吗?(y/n)\n");
        getchar();
    	printf("                    ");
        scanf("%c",&d);
        if(!(d=='Y'||d=='y'))
        {
            printf("                    操作失败.按任意键返回上一层\n                    ");
            getchar();
            getchar();
            return ;
        }
        printf("                    您借书的开始时间为:\n                    ");
        fun();
    
        strcpy(p.card1[tpeo].yijieshu[p.card1[tpeo].len3].shijian,t2);
        s.book1[t].now--;
        strcpy(p.card1[tpeo].yijieshu[p.card1[tpeo].len3].book2, s.book1[t].bookid);
        p.card1[tpeo].len3++;
        printf("                    借阅成功,库存量减少一,当前书变为:%-d本,\n                    此书的书号为:%s.\n",s.book1[t].now,s.book1[t].bookid);
    
        printf("                    操作成功.按任意键返回上一层\n                    ");
        getchar();
        getchar();
    }
    
    void returnbook()//归还图书
    {
        char str[10];
        char str2[10];
        char c;
        int i,j,k,a,b,flag=0;
    	print();
        printf("                    请输入要归还的书号:\n");
    	printf("                    ");
        scanf("%s",str);
        a=find(str);
        if(a == s.len)
        {
             puts("                    抱歉您要归还的图书不存在");
             printf("                    请按任意键返回\n                    ");
             getchar();
             getchar();
             return ;
        }
        printf("                    请输入您的借书证号:\n");
    	printf("                    ");
        scanf("%s",str2);
        b=findpeo(str2);
        if(b==p.len1)
        {
            printf("                    您输入的卡号不存在.按任意键返回上一层\n                    ");
            getchar();
            getchar();
            return ;
        }
        for(i=0;i<p.card1[b].len3;i++)
        {
            //printf("%s ",p.card1[b].book2[i]);
            if(strcmp(p.card1[b].yijieshu[i].book2,str)==0)
            flag=1;
        }
        if(flag==0)
        {
            printf("                    借书证并没有借这本图书.按任意键返回上一层\n                    ");
            getchar();
            getchar();
            return ;
        }
        printf("                    查询成功,确定要归还这本书吗?(y/n)\n");
        getchar();
        printf("                    ");
        scanf("%c",&c);
        if(!(c=='Y'||c=='y'))
        {
            printf("                    操作失败.按任意键返回上一层\n                    ");
            getchar();
            getchar();
            return ;
        }
        s.book1[a].now++;
        for(j=0;j<p.card1[b].len3;j++)
        if(strcmp(p.card1[b].yijieshu[j].book2,str)==0)
        for(k=j;k<p.card1[b].len3-1;k++)
        {
            strcpy(p.card1[b].yijieshu[k].book2,p.card1[b].yijieshu[k+1].book2);
            strcpy(p.card1[b].yijieshu[k].shijian,p.card1[b].yijieshu[k+1].shijian);
        }
    
    
        p.card1[b].len3--;
        printf("                    还书成功,库存量增加一,当前书变为:%d本,\n                    此书的书号是:%s.\n",s.book1[a].now,s.book1[a].bookid);
        printf("                    操作成功.按任意键返回上一层\n                    ");
        getchar();
        getchar();
    }
    
    void addbook()//添加
    {
        char str[10];
        char c,e='y';
        int a,b;
        do
        {   print();
            printf("                    请输入要添加的图书编号\n");
            getchar();
    		printf("                    ");
            scanf("%s",str);
            a=find(str);
            if(a==s.len)
            {
                printf("                    这本书是新书\n");
                printf("                    请选择书的类型\n");
                printf("                    *********************\n");
                printf("                    1.文学\n                    2.科技\n                    3.历史\n                    4.其他\n");
                printf("                    *********************\n");
                getchar();
    			printf("                    ");
                scanf("%d",&b);
                switch(b)
                {
                    case 1:s.book1[s.len].leibie=1;break;
                    case 2:s.book1[s.len].leibie=2;break;
                    case 3:s.book1[s.len].leibie=3;break;
                    case 4:s.book1[s.len].leibie=4;break;
                    default:printf("                    您输入的类别有误.按任意键返回上一层\n                    ");getchar();return ;
                }
                //printf("请输入这本书的书号\n");
                //scanf("%s",s.book1[s.len].bookid);
    			system("cls");
                strcpy(s.book1[s.len].bookid,str);
    		    print();
                printf("                    请输入这本书的书名:\n");
    			printf("                    ");
                scanf("%s",s.book1[s.len].bookname);
                printf("                    请输入这本书的作者:\n");
    			printf("                    ");
                scanf("%s",s.book1[s.len].author);
                printf("                    请输入要添加的书的总量:\n");
    			printf("                    ");
                scanf("%d",&s.book1[s.len].sum);
                s.book1[s.len].now=s.book1[s.len].sum;
                s.len++;
            }
            else if(a<s.len)
            {
                printf("                    这本书已经有记录了,若添加则其总量加一.\n                    是否要继续添加工作?(y/n)\n");
                getchar();
    			printf("                    ");
                scanf("%c",&c);
                if(!(c=='y'||c=='Y'))
                {
                    printf("                    操作失败.按任意键返回上一层\n                    ");
                    getchar();
                    getchar();
                    return ;
                }
                s.book1[a].sum++;
                s.book1[a].now++;
                printf("                    现在此书的总数为%d.\n",s.book1[a].sum);
            }
            printf("                    请问还要继续添加图书吗?(y/n)\n");
            getchar();
    		printf("                    ");
            scanf("%c",&e);
    
        }while(e=='y'||e=='Y');
        printf("                    操作完毕.按任意键返回上一层\n                    ");
        getchar();
        return ;
    }
    
    void deletebook()//删除图书
    {
        char str[10];
        char b,c,e='y';
        int a,i;
        do
        {   print();
            printf("                    请输入要删除的图书编号\n");
            getchar();
    		printf("                    ");
            scanf("%s",str);
            a=find(str);
            if(a==s.len)
            {
                printf("                    您要删除的书不存在\n");
            }
            else if(s.book1[a].sum!=s.book1[a].now)
            {
                printf("                    该书仍有人借阅未归还,还要继续删除这本书吗?(y/n)\n");
                getchar();
    			printf("                    ");
                scanf("%c",&b);
                if(!(b=='y'||b=='Y'))
                {
                    printf("                    操作失败.按任意键结束返回上一层\n                    ");
                    getchar();
                    return ;
                }
                printf("                    删除成功!\n");
                for(i=a;i<s.len-1;i++)
                s.book1[i]=s.book1[i+1];
                s.len--;
            }
            else
            {
                printf("                    确定要删除这本书吗?(y/n)\n");
                getchar();
    			printf("                    ");
                scanf("%c",&b);
                if(!(b=='y'||b=='Y'))
                {
                    printf("                    操作失败.按任意键结束返回上一层\n                   ");
                    getchar();
                    return ;
                }
                printf("                    删除成功!\n");
                for(i=a;i<s.len-1;i++)
                s.book1[i]=s.book1[i+1];
                s.len--;
            }
            printf("                    请问还要继续删除图书吗?(y/n)\n");
            getchar();
    		printf("                    ");
            scanf("%c",&e);
        }while(e=='y'||e=='Y');
        printf("                    操作完毕.按任意键返回上一层\n                   ");
        getchar();
        return ;
    }
    
    void tongji()//统计图书
    {
        int i;
    	system("cls");
        print();
        printf("         图书输出为:\n");
        printf("         ********************************************************\n");
        printf("          书号      书名      作者      类别      总量      现量\n");
        for(i=0;i<s.len;i++)
        {
            printf("           %-7s%-12s%-10s",s.book1[i].bookid,s.book1[i].bookname,s.book1[i].author);
            switch(s.book1[i].leibie)
            {
                case 1:printf("文学      ");break;
                case 2:printf("科技      ");break;
                case 3:printf("历史      ");break;
                case 4:printf("其它      ");break;
            }
            printf(" %-10d%d\n",s.book1[i].sum,s.book1[i].now);
        }
        printf("         ********************************************************\n");
        printf("          显示完毕.按任意键返回上一层\n                    ");
        getchar();
    }
    
    void tongji2()//统计书卡
    {
        int i,b;
        char h;
        char str2[10];
        system("cls");
    	print();
        printf("         借书卡输出为:\n");
        printf("         ************************************************\n");
        printf("          借书卡id     持卡人姓名     班级       已借总数\n");
        for(i=0;i<p.len1;i++)
        {
            printf("          %-15s%-14s%-12s%-15d\n",p.card1[i].cardid,p.card1[i].studentname,p.card1[i].studentclass,p.card1[i].len3);
        }
        printf("         ************************************************\n");
        printf("         请问要显示某位同学所借书的详细信息吗?(y/n)\n          ");
        getchar();
        scanf("%c",&h);
        if(h=='y'||h=='Y')
        {
             printf("          请输入您要查找的借书证号:\n");
             printf("          ");
             getchar();
             scanf("%s",str2);
             b=findpeo(str2);
             if(b==p.len1)
            {
                printf("                    您输入的卡号不存在.按任意键返回上一层\n                    ");
                getchar();
                getchar();
                return ;
            }
            printf("          卡号为%s的借书内容显示如下:\n",p.card1[b].cardid);
            printf("          *********************************\n");
            printf("           书号          借书日期\n");
            for(i=0;i<p.card1[b].len3;i++)
            {
                printf("          %-10s%s\n",p.card1[b].yijieshu[i].book2,p.card1[b].yijieshu[i].shijian);
            }
            printf("           ********************************\n");
        }
        printf("          显示完毕.按任意键返回上一层\n          ");
        getchar();
    }
    
    int main()
    {
    	system("color F0");
    
        int a,b;
        int i=0,x;
        FILE *fp,*fp1;
        FILE *fq,*fq1;
        //creat(2);
        //creat2(2);
    	system("cls");
    
        s.len=0;
        p.len1=0;
        if((fp=fopen("book.dat","rb"))==NULL)
        {
            printf("cannot open this file\n");
            exit(0);
        }
        while(fread(&(s.book1[i]),sizeof(book),1,fp)!=0)
        {
            s.len++;
            i++;
        }
        fclose(fp);
    	i=0;
        if((fp1=fopen("card.dat","rb"))==NULL)
        {
            printf("cannot open this file\n");
            exit(0);
        }
        while(fread(&(p.card1[i]),sizeof(card),1,fp1)!=0)
        {
            p.len1++;
            i++;
        }
        fclose(fp1);
        do
        {
            print();
            printf("                    您好,欢迎使用图书管理系统\n");
            printf("                   *****************************\n");
            printf("                         1:查找图书\n                         2:借阅图书\n                         3:归还图书\n                         4:管理系统\n                         5:退出系统\n");
            printf("                   *****************************\n");
            printf("                    请选择您想进行的操作是:\n");
    		printf("                    ");
    
            scanf("%d",&a);
    
            while(!(a==1||a==2||a==3||a==4||a==5))
            {
                        printf("                    输入错误,请重新输入\n                    ");
                        getchar();
                        scanf("%d",&a);
    
            }
            system("cls");
            switch(a)
            {
                case 1:findbook();break;
                case 2:borrow();break;
                case 3:returnbook();break;
                case 4:print();
    				   printf("                    请输入六位管理员密码\n");
                       getchar();
    				   printf("                    ");
                       scanf("%d",&x);
                       if(!(x==M))
                       {
                          printf("                    您的密码输入错误.按任意键返回上一层\n                   ");
                          getchar();
                          getchar();
                          break;
                       }
                       do
                       {
                           system("cls");
    					   print();
                            printf("                    欢迎进入管理系统\n");
                            printf("                  **********************\n");
                            printf("                       1:添加图书\n                       2:删除图书\n                       3:图书统计\n                       4:书卡统计\n                       5:返回上层\n");
                            printf("                  **********************\n");
                            printf("                    您想进行的操作是:\n");
    						printf("                    ");
                            scanf("                    %d",&b);
                            while(!(b==1||b==2||b==3||b==4||b==5))
                            {
                                printf("                    输入错误,请重新输入\n                    ");
                                getchar();
                                scanf("%d",&b);
    
                            }
                            switch(b)
                            {
    
                                case 1:system("cls");addbook();getchar();break;
                                case 2:system("cls");deletebook();getchar();break;
                                case 3:system("cls");tongji();getchar();break;
                                case 4:system("cls");tongji2();getchar();break;
                            }
                            system("cls");
                        } while(b!=5);break;
                case 5:break;
                //default:printf("                     输入有误,请重新输入\n                    ");break;
            }
            system("cls");
        }while(a!=5);
        if((fq=fopen("book.dat","wb"))==NULL)
        {
             printf("cannot open this file\n");
             exit(0);
        }
        for(i=0;i<s.len;i++)
        if(fwrite(&(s.book1[i]),sizeof(book),1,fq)!=1)
        printf("file write error!\n");
        fclose(fq);
        if((fq1=fopen("card.dat","wb"))==NULL)
        {
             printf("cannot open this file\n");
             exit(0);
        }
        for(i=0;i<p.len1;i++)
        if(fwrite(&(p.card1[i]),sizeof(card),1,fq1)!=1)
        printf("file write error!\n");
        fclose(fq1);
        print();
         printf("                    谢谢您的使用,再见!\n");
    	 printf("                    ");
        return 0;
    }
    


    展开全文
  • 主要为大家详细介绍了C语言数组实现学生信息管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • JOUKKAL 0T NORTHWKSTZRN POLTTECHHICAL UHMRfiTTT ltDfG Dfe COUXGE《c语言应用》实验报告题目学生成绩管理系统(数组版)专业名称 班 级 学 号 学生姓名 指导教师 完成时间TOC \o "1-5" \h \z \o "Current Document...
  • C语言学生信息管理系统(结构体数组,文件) 这是初学时写的一个程序,比较菜,不喜勿喷。 在一个结构体里定义结构体内所有的信息(如果信息也需要分类则可以再定义一个结构体并在当前结构体内声明,我的这个代码...
  • C语言数组实现学生信息管理系统

    万次阅读 多人点赞 2017-03-14 15:33:37
    单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。
  • 简单的学生管理系统使用C语言编写。 功能 拥有增、删、改、查、打印、文件读写、搜索以及排序功能。 环境 推荐使用VS2015或以上版本(支持C11或以上)的编译器运行代码。 结构 数据结构为结构体数组。 运行效果图...
  • C语言程序设计实训 总结报告【学生通讯录管理系统
  • printf("************欢迎使用系统*************\n"); printf("***********本系统由某某某编写************\n"); printf("***********指导教师:某某某************\n"); printf("******************************...
  • 读文件,添加,删除,排序等,课程设计题目,看不太不懂可以问我
  • C语言学生成绩管理系统 用结构体和数组做的很简单的管理系统 #include<stdio.h> #include<string.h> #include<stdlib.h> #define NAME_NUMBER 10 #define ID_NUMBER 9 #define SEX_NUMBER 3 #...
  • C语言开发简单的学生成绩管理系统(附源码)

    万次阅读 多人点赞 2019-04-15 21:08:22
    学生成绩管理系统 开发语言:C语言 开发工具:Visual Studio 2019 开发时间:2019.4.14 开发者:summer @一、系统使用展示 @二、系统功能 @三、菜单 @四、录入学生信息 @五、打印学生信息 @六、保存学生信息 @七、...
  • 涉及:字符型数组 代码: #include<stdio.h> #include<stdlib.h> #define M 4 #define N 3 #define L 20 long num[M]; char name[M][L]; int project[M][N]; void input(); void check(); void show...
  • C语言 指针与数组,结构体

    千次阅读 2016-01-16 20:02:31
     +一个变量有地址,一个数组包含若干元素,每个数组元素都有相应的地址指针变量可以指向数组元素(把某一元素的地址放到一个指针变量中) 所谓数组元素的指针就是数组元素的地址  printf(“%p %p”, &(a[0]), a); 输出...
  • http://www.cnblogs.com/alaigle/archive/2012/04/27/2473668.html20161. 使用数组的好处要计算某班的平均分数,假设该班只有10个学生。利用前面所学知识,可以有如下两种方法:方法一:利用一个变量存储分数#...
  • C/C++实现,包括源代码,实验报告。源代码有详细注释。实现了文件存取,学生信息的查找,插入,修改,删除,排序等。
  • //以2进制形式写入文件中,一次写入一个数组 p = p->next; } fclose(fp); system("pause"); return 0;//程序正常执行返回0 } int Display() { system("cls"); FILE *fp; int n = 0; int i = 0; ...
  • C语言)利用结构体数组制作学生成绩管理系统

    万次阅读 多人点赞 2017-07-05 13:11:51
    用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。 (1) 录入每个学生的学号、姓名和各科考试成绩。 (2) 计算每门课程的总分和平均分。 (3) 计算每个学生的总分和平均分。
  • 学生管理系统C语言实现

    千次阅读 2017-06-20 13:14:41
    近期做了一个学生管理系统,巩固了下文件io的知识!虽然只是一个小项目,不管对项目开发的认识有了一个小的提升。下面贴出各部分工作的代码。在codeblocks上编译完美运行。 先上图,程序运行后的菜单界面: 有基本...
  • 学生管理系统的编写是我们在学习c语言时候会碰到的一个比较复杂的程序, 但只要我们一步一步去理解,绝对是能够看懂这个程序的。下面是该程序的代码。 此程序功能包括对学生的:年龄,姓名,成绩,进行输出并按成绩...
  • 学生信息管理系统(结构体数组+链表版) 后面还有纯数组
  • 本次实践课的第一个任务便是利用所学的知识,基于动态数组和链表知识设计一个学生信息管理系统。与做单独的一道题不同,设计整个系统就对各模块间的相互配合、人机交互内容等方面提出了更大的要求。 万事开头难,...
  • c语言管理系统 牛~~ /*引用库函数*/ #include<stdio.h> #include<stdlib.h> #include<string.h> /*定义结构体数组*/ typedef struct { char num[12]; /*学号*/ char name[20]; /*姓名*/ ...
  • c语言 学生管理系统数组实现)

    千次阅读 2011-10-10 17:13:37
     printf("\t\t\t\t\t学生成绩管理系统\n ");   loop: printf("\n请输入学号!\n");  scanf("%d",&i);  switch(i){  case 200901:  printf("数学\t英语\t语文\t化学\t生物\t物理\n");  for(k=0;k...
  • 学生成绩管理系统C语言 代码: #include <stdio.h> #include<string.h> #include<stdlib.h> /*主程序*/ void main() { int i; ReadIn(); system("color F0"); while(1) { /...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,900
精华内容 3,160
关键字:

学生管理系统c语言代码使用数组

c语言 订阅