精华内容
下载资源
问答
  • /*将文件位置标记向后退一个struct book锁占的长度*/ strcpy(BOOK.title,new_title); strcpy(BOOK.author_name,author_name); strcpy(BOOK.class_num,class_num); strcpy(BOOK.publisher,publisher...
  • c语言编写图书管理系统例子

    千次阅读 2021-04-08 20:37:59
    #关于用C语言(c++类似)编写一个在控制台展示的图书管理系统(帮朋友写的课程作业) #其中只有图书增加 删除 借书 还书 查找图书 5个功能(小试牛刀) #工具:visual studio2019 #设计图 #思路是:打算用链表操作...

    #关于用C语言(c++类似)编写一个在控制台展示的图书管理系统(帮朋友写的课程作业)
    #其中只有图书增加 删除 借书 还书 查找图书 5个功能(小试牛刀)
    #工具:visual studio2019
    #设计图
    在这里插入图片描述
    #思路是:打算用链表操作数据 然后把数据写入到txt文件 每次执行数据操作前从txt文件把数据读取到链表

    下面先看看功能展示图

    图书馆里主界面样子
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    #下面贴代码,因为只是小作业,所以没有用良好的编写习惯,只用了一个.c文件就把所有代码写完了(无自定义头文件)

    1.include要用的头文件,定义struck结构体,定义函数

    #define _CRT_SECURE_NO_WARNINGS//只会在该文件里起作用,下面会用到一些不安全函数(版本问题)strcpy,scanf
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #pragma warning(disable:4996)
    struct book {
    	int bid; //书本号
    	char bname[100]; //书名
    	char wname[100]; //作者
    	char publish[100]; //出版社
    	int present_count; //当前在架册数
    	int old_count; //馆藏册数
    	char show[100]; //书本简介
    	struct book* next; //结构体内指针变量
    	};
    	
    
    //定义函数
    struct book* creatbook();                          //创建链表
    struct book* addbook(struct book* head);           //添加图书
    int yanzheng(struct book* head, int m);             //验证新添加的图书编码是否已存在
    void deletebook(struct book* head);                //删除图书
    void fprint(struct book* head);                    //将链表写入文件
    struct book* load();                               //从文件中读取信息并建成链表
    void num_chaxun(struct book* head);                //按图书编号查询图书
    void xiugai(struct book* head);  //借阅书本
    void xiugai2(struct book* head); //归还书本
    

    2.编写程序入口main函数

    int main()
    {
    	int choice, x;
    	
    	struct book* head = NULL;//初始化头指针
    	
    				x = 1;
    				
    				while (x) {
    					system("cls");
    					printf("*******************************************************\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("*                                                     *\n");
    					printf("*                  请选择菜单项:(1^6)              *\n");
    					printf("*******************************************************\n");
    					printf("请输入所选择的序号:");
    					scanf("%d", &choice);
    					getchar();//获得键盘输入
    					system("cls");
    					switch (choice)
    					{
    					case 6:
    						x = 0; break;
    					case 1:
    						head = load();//从文件中读取数据到链表
    						if (head == NULL) {
    							head = creatbook();录入实例到txt文件。其实这个方法很蠢 写的时候没想到,可以直接在txt手动加实例就好了
    							head = addbook(head);
    							fprint(head);
    							printf("上架成功!\n");
    							getchar();
    							break;
    						}
    						else {
    							head = addbook(head);
    							fprint(head);
    							printf("上架成功!\n");
    							getchar();
    							break;
    						}
    
    					case 2:
    						head = load();
    						if (head == NULL) {
    							printf("书库为空,请先上架书本!\n");
    							getchar();
    							break;
    						}
    
    						else {
    							deletebook(head);
    							getchar();
    							break;
    						}
    						break;
    					
    					
    					case 3:
    						head = load();
    						if (head == NULL) {
    							printf("书库为空,请先上架书本!\n");
    							getchar();
    							break;
    						}
    						else {
    							num_chaxun(head);
    							getchar();
    							break;
    						}
    						break;
    					case 4:
    						head = load();
    						if (head == NULL) {
    							printf("书库为空,请先上架书本!\n");
    							getchar();
    							break;
    						}
    						else {
    							
    							xiugai(head);
    							getchar();
    							break;
    						}
    						break;
    
    
    					case 5:
    						head = load();
    						if (head == NULL) {
    							printf("书库为空,请先上架书本!\n");
    							getchar();
    							break;
    						}
    						else {
    							
    							xiugai2(head);
    							getchar();
    							break;
    						}
    						break;
    					
    					}
    
    				}
    			}
    

    3.函数编写

    //录入数据并形成链表
    struct book* creatbook()
    {
    	struct book* head, * tail, * p;
    	//初始时给txt文件添加一个实例先 免得报空指针错误,排错时间更多 不如提前堵住可能报错的问题
    	int num=1, num2=1, num3=1;
    	char bname[100]="实例", wname[100]= "实例", press[100]= "实例", sort[100]= "实例";
    	//sizeof操作符以字节形式给出了其操作数的存储大小
    	int size = sizeof(struct book);
    	head = tail = NULL;
    	
    	//malloc函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返回 NULL。
    		p = (struct book*)malloc(size);
    		p->bid = num;
    		//strcpy函数对字符串进行复制拷贝之类的操作
    		strcpy(p->bname, bname);
    		strcpy(p->wname, wname);
    		strcpy(p->publish, press);
    		strcpy(p->show, sort);
    		p->present_count = num2;
    		p->old_count = num3;
    		p->next = NULL;
    		if (head == NULL)
    			head = p;
    		else
    			tail->next = p;
    
    		tail = p;
    		fprint(head);//调用写入数据到txt文件函数
    	    return head;
    }
    
    //将链表写入文件
    void fprint(struct book* head)
    {
    	FILE* fp;//文件指针
    	char ch = '1';
    	struct book* p1;
    	if ((fp = fopen("f1.txt", "w")) == NULL) {//打开文件
    		printf("File open error!\n");
    		exit(0);
    	}
    	fputc(ch, fp);//返回值:在正常调用情况下,函数返回写入文件的字符的ASCII码值,出错时,返回EOF(-1)。当正确写入一个字符或一个字节的数据后,文件内部写指针会自动后移一个字节的位置。EOF是在头文件 stdio.h中定义的宏。
    	for (p1 = head; p1; p1 = p1->next) {
    		fprintf(fp, "%d %s %s %s %d %d %s\n", p1->bid, p1->bname, p1->wname, p1->publish, p1->present_count, p1->old_count, p1->show);
    	}
    	fclose(fp);
    }
    
    从txt文件中读取数据并建成链表
    struct book* load()
    {
    	FILE* fp;
    	char ch;
    	struct book* head, * tail, * p1;
    	head = tail = NULL;
    	if ((fp = fopen("f1.txt", "r")) == NULL) {
    		printf("File open error!\n");
    		exit(0);
    	}
    	//从文件指针指定的文件中读入一个字符,该字符的ASCII值作为函数的返回值,若返回值为EOF,说明文件结束,EOF是文件结束标志,值为-1。
    	ch = fgetc(fp);
    	if (ch == '1') {
    
    		while (!feof(fp)) {
    			p1 = (struct book*)malloc(sizeof(struct book));
    			fscanf(fp, "%d%s%s%s%d%d%s\n", &p1->bid, p1->bname, p1->wname, p1->publish, &p1->present_count, &p1->old_count, p1->show);
    			if (head == NULL)
    				head = p1;
    			else
    				tail->next = p1;
    			tail = p1;
    		}
    		tail->next = NULL;
    		fclose(fp);
    		return head;//返回值可用来确定文件中是否有数据(图书馆中是否有书)
    	}
    	else
    		return NULL;
    
    }
    
    
    //插入结点,并且插入后仍按一定顺序存储
    struct book* addbook(struct book* head)
    {
    
    	struct book* ptr, * p1, * p2, * p;
    	p1 = NULL;
    	char bname[100], wname[100], press[100], sort[100];
    	int size = sizeof(struct book);
    	int bid, present_count, old_count ,n ;
    	
    	do {
    		printf("请输入图书编号:");
    		scanf("%d", &bid);
    		n = yanzheng(head, bid);//调用函数判断该编号是否存在
    		if (n == 0)
    			break;
    		else
    			printf("您输入的编号已存在,请重新输入!\n");
    	} while (1);
    	printf("请输入图书名:");
    	scanf("%s", bname);
    	getchar();
    	printf("请输入作者名:");
    	scanf("%s", wname);
    	getchar();
    	printf("请输入出版社:");
    	scanf("%s", press);
    	getchar();
    	printf("请输入当前在架册数:");
    	scanf("%d", &present_count);
    	getchar();
    	printf("请输入管藏册数:");
    	scanf("%d", &old_count);
    	getchar();
    	printf("请输入书本简介:");
    	scanf("%s", sort);
    	getchar();
    	p = (struct book*)malloc(size);
    	p->bid = bid;
    	strcpy(p->bname, bname);
    	strcpy(p->wname, wname);
    	strcpy(p->publish, press);
    	strcpy(p->show, sort);
    	p->present_count = present_count;
    	p->old_count = old_count;
    	p2 = head;
    	ptr = p;
    	while ((ptr->bid > p2->bid) && (p2->next != NULL)) {
    		p1 = p2;
    		p2 = p2->next;
    	}//1,2,3,4,插入5 要把p2头指到4 此时p1指到3 ;1,2,5 插入4 要把p2指到5 此时p1指到2
    	if (ptr->bid <= p2->bid) {
    		if (head == p2)
    			head = ptr;
    		else {
    			p1->next = ptr;
    			p->next = p2;
    		}
    	}
    	else {
    		p2->next = ptr;
    		p->next = NULL;
    	}
    	return head;
    }
    
    //验证添加的图书编号是否已存在
    int yanzheng(struct book* head, int m)
    {
    	struct book* p;
    	p = head;
    	while (p != NULL) {
    		if (p->bid == m)
    			break;
    		p = p->next;
    	}
    	if (p == NULL)
    		return 0;
    	else
    		return 1;
    }
    
    //删除图书信息
    void deletebook(struct book* head)
    {
    	int a;
    	char b, ch = '1';
    	struct book* p1, * p2;
    	FILE* fp;
    	printf("请输入要删除的图书编号:");
    	scanf("%d", &a);
    	p1 = head;
    	p2 = NULL;
    	if (p1->bid == a && p1->next == NULL) {  //假如txt里只有最初添加的实例一组数据时       
    		printf("是否下架唯一的书!(y/n)\n");
    		getchar();
    		scanf("%c", &b);
    		getchar();
    		switch (b) {
    		case 'n':
    			break;
    		case 'y':
    
    			if ((fp = fopen("f1.txt", "w")) == NULL) {
    				printf("File open error!\n");
    				exit(0);
    			}
    			fclose(fp);
    			printf("文件已清空!\n");
    		}
    	}
    	else {
    		while (p1->bid != a && p1->next != NULL) {//不止一组数据,要删除节点也不是头节点时,寻找到对应编号对应的数据
    			p2 = p1;
    			p1 = p1->next;
    		}
    
    		if (p1->next == NULL) {
    			if (p1->bid == a) {
    				p2->next = NULL;
    				printf("是否确定从书架中彻底删除该图书?(y/n)\n");
    				getchar();
    				scanf("%c", &b);
    
    				switch (b) {
    				case 'n':
    					break;
    				case 'y':
    					fprint(head);
    					printf("删除成功!\n");
    					getchar();
    					break;
    				}
    			}
    
    			else {
    				printf("没有找到要删除的数据!\n");
    				getchar();
    			}
    		}
    		else if (p1 == head) {//删除节点时头结点时
    			head = p1->next;
    			printf("是否确定从书架中彻底删除该图书?(y/n)\n");
    			getchar();
    			scanf("%c", &b);
    
    			switch (b) {
    			case 'n':
    				break;
    			case 'y':
    				fprint(head);
    				printf("删除成功!\n");
    				getchar();
    				break;
    			}
    
    		}
    		else {
    			p2->next = p1->next;
    			printf("是否确定从书架中彻底删除该图书?(y/n)\n");
    			getchar();
    			scanf("%c", &b);
    
    			switch (b) {
    			case 'n':
    				break;
    			case 'y':
    				fprint(head);
    				printf("删除成功!\n");
    				getchar();
    				break;
    			}
    		}
    	}
    
    }
    
    //按编号查询图书信息
    void num_chaxun(struct book* head)
    {
    	int a;
    	struct book* p;
    	printf("请选择您要查询的图书编号:");
    	scanf("%d", &a);
    	getchar();
    	p = head;
    	while (p != NULL) {
    		if (p->bid == a)
    			break;
    		p = p->next;
    	}
    
    	if (p == NULL) {
    		printf("没有找到该编号的图书!\n");
    	}
    	else {
    		printf("书本信息:\n");
    		printf("书名:%s\n", p->bname);
    		printf("作者:%s\n", p->wname);
    		printf("当前在架册数:%d\n", p->present_count);
    		printf("馆藏册数:%d\n", p->old_count);
    		printf("本书简介:%s\n", p->show);
    
    	}
    }
    
    //借阅书本 更改txt内对应书本编号的数量
    void xiugai(struct book* head)
    {
    	int a;
    	
    	
    	struct book* p;
    
    	
    		printf("请输入要借的书本号:");
    		scanf("%d", &a);
    
    		p = head;
    
    
    		while (p != NULL) {
    			if (p->bid == a)
    				break;
    			p = p->next;
    		}
    
    
    		if (p == NULL) {
    			printf("没有找到该编号的图书!\n");
    			getchar();
    		}
    
    
    		else {
    			
    			printf("书名:%s\n", p->bname);
    			printf("作者:%s\n", p->wname);
    			printf("当前在架册数:%d\n", p->present_count);
    			printf("馆藏册数:%d\n", p->old_count);
    			printf("本书简介:%s\n", p->show);
    			getchar();
    				p->old_count = p->old_count - 1;
    				p->present_count = p->present_count - 1;
    				fprint(head);//修改后写入文件
    				printf("借阅成功\n");
    				getchar();
    	
    		}
    	}
    
    //归还书籍,改变数量
    void xiugai2(struct book* head){
    	int a;
    	
    	
    	struct book* p;
    	
    		printf("请输入要还的书本号:");
    		scanf("%d", &a);
    		
    		p = head;
    		while (p != NULL) {
    			if (p->bid == a)
    				break;
    			p = p->next;
    		}
    
    		if (p == NULL) {
    			printf("没有找到该编号的图书!\n");
    			getchar();
    		}
    		else {
    			
    			printf("书名:%s\n", p->bname);
    			printf("作者:%s\n", p->wname);
    			printf("当前在架册数:%d\n", p->present_count);
    			printf("馆藏册数:%d\n", p->old_count);
    			printf("本书简介:%s\n", p->show);
    			
    			getchar();
    			
    				p->old_count = p->old_count + 1;
    				p->present_count = p->present_count + 1;
    				fprint(head);
    				printf("归还成功\n");
    				getchar();
    				
    			}
    		}
    	
    
    展开全文
  • printf("***************学生档案管理系统***************\n"); printf(" 1.学生基本信息录入\n"); printf(" 2.学生基本信息显示\n"); printf(" 3.学生基本信息保存\n"); printf(" 4.学生基本信息删除\n");...
  • 这是一个有关飞机订票的系统,采用C语言进行编写,里面有 功能需求:1、录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)  2、查询: 可以查询某个航线的情况(如,输入航班号...
  • 这是一个只可以在黑框框里跑的学生成绩管理系统,只需要C语言编译器就可以运行(几乎适配所有的编译器,且只有一个.c文件和三个作为数据库的txt文件),能够实现录入基础数据、显示奖学金获奖名单、显示成绩排名、...
  • (1) 记录每个学生的各科成绩; (2) 计算每个学生的总分和平均分; (3) 按总分成绩由高到低排出成绩的名次; (4) 打印出名次表,表格内...(5) 任意输入一个学号,能够查找出该学生的各科考试成绩及其在班级中的排名;
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。 4. 当开发一个较复杂而又开发时间短的项目时,用C还是用汇编开发好? 答:对于复杂而开发时间紧的项目时,...
  • 编写一个小型学生管理系统,包括成绩管理和信息管理两部分功能。 主菜单包括: (1)成绩管理 (2)信息管理 (3)退出系统 成绩管理菜单包括: (1)单科成绩录入 (2)查找最高分 (3)成绩查询 (4...

    任务:

    请编写一个小型学生管理系统,包括成绩管理和信息管理两部分功能。

    主菜单包括:

    1)成绩管理 (2)信息管理 (3)退出系统

    成绩管理菜单包括:

    1)单科成绩录入 (2)查找最高分 (3)成绩查询 (4)两科成绩录入 (5)返回

    信息管理菜单包括:

    1)信息查询:显示学生学号、姓名、性别、专业、联系方式、家庭住址等信息

    2)删除学生信息记录

    3)添加学生信息记录

    4)修改学生信息记录

    5)文件的使用

    设计报告要求:

    1)报告首页:设计题目、专业、姓名、学号

    2功能描述 

    对系统要实现的功能进行确切的描述。 

    3概要设计 

    根据功能分析,建立系统的体系结构,即将整个系统分解成若干子模块,用框图表示各功能模块之间的接口关系。 

    3详细设计 

    详细说明各功能模块的实现过程,所用到的知识、算法、技巧等(附上代码)。 

    4效果及存在问题 

    说明系统的运行效果(附上界面图形),存在哪些不足以及预期的解决办法。 

    5心得 

    谈谈在课程设计过程中的心得体会。

    6)主要参考文献

      罗列出主要参考文献

    设计报告用word书写,A4纸打印。

    展开全文
  • 编写一个简单的工资管理系统系统要完成的功能如下:(假定只处理实际工资,员工人数不超过100人) (1) 工资输入(输入 -1 标志输入结束) (2) 工资输出 (3) 查找最高工资 (4) 查找最低工资 (5) 求平均工资 ...
  • 、项目要求 设计款会员卡管理系统,管理会员卡的编号、会员姓名、会员电话、本次消费、会员 卡余额、会员积分等信息。 二、数据结构 1. 需要定义结构体存储会员卡的编号、会员姓名、会员电话、本次消费、...
  • 9.31④ 试写一个判别给定二叉树是否为二叉排序树 的算法,设此二叉树以二叉链表作存储结构。且树中 结点的关键字均不同。 9.33③ 编写递归算法,从大到小输出给定二叉排序树 中所有关键字不小于x的数据元素。要求你...
  • 设计数据结构完成一个学院学生相关信息的存储,并在此基础上编写算法实现学生成绩管理。 【基本要求】 ① 一个学院由若干个班组成;所有学生修相同的考试课和考查课。 ② 管理系统能够实现:学生加入,学生毕业,...
  • 目的:在已学C语言的基础上,编写一个具有实际功能的程序,掌握实际应用程序开发的基本流程——构思,设计框架,所用知识,程序编写,编译测试,程序完成。 要求:编写一个通讯录,完成显示、添加、查找和修改等...
  • 首先此程序需要实现输入、增加、删除、查询、输出的五大功能,则首先需要设置一个菜单键,让用户可以选择不同的功能,完成不同的操作,然后编写不同的函数实现不同的功能,在这个过程中注意要人性化,让用户方便,...
  • <p>1、采用一个包含 N 个数据的结构体数组,每个数据的结构应当包括: 起飞地、目的地、 航班号、座次号码、座次订出与否标记、订座者 的姓名和订座者的身份证号码。 <p>2、系统显示菜单如下:...
  • c语言简易学生管理系统

    千次阅读 2017-10-29 21:04:34
    整体需求:编写一个学生管理系统,实现对学生信息的,新建,输出,修改,查询,按平均成绩排序等功能 1、学生信息包括:学号,姓名,计算机成绩,英语成绩,数学成绩,平均成绩。 2、查询按学号查找

    刚刚写好了一个c语言简易学生管理系统,写个博客,来整理一下自己的收获,话不多说,直接来先写一下这个管理系统的整体需求。
    整体需求:编写一个学生管理系统,实现对学生信息的,新建,输出,修改,查询,按平均成绩排序等功能
    1、学生信息包括:学号,姓名,计算机成绩,英语成绩,数学成绩,平均成绩。
    2、查询按学号查找。
    我是分成4个头文件,和一个主函数来写的。下面是第一个头文件:

    #include<stdio.h>
    #include<string.h>
    typedef struct
    {
       int number;
        char name[10];
        int computer,english,math;
        double average;
    }Student;
    

    这是第一个头文件只是简单的定义了一个学生的结构体包含需要的学生信息。

    extern Count;
    //创建学生
    void CreateStudent(Student S[])
    {
        int i=0;
        //这里添加一个do while循环判断输入的数据是否正确。
        do
        {
            if(i>0)
            {
                printf("输入数据有误,请重新输入\n");
            }
        printf("请输入学号:");
        scanf("%d",&S[Count].number);
        printf("请输入名字:");
        getchar();
        scanf("%s",&S[Count].name);
        printf("请输入计算机成绩:");
        scanf("%d",&S[Count].computer);
        printf("请输入英语成绩:");
        scanf("%d",&S[Count].english);
        printf("请输入数学成绩:");
        scanf("%d",&S[Count].math);
        i++;
        }while(S[Count].english>100||S[Count].computer>100||S[Count].math>100||S[Count].english<0||S[Count].computer<0||S[Count].math<0); 
        //注意这里要除以3.0不然得到的是整数,不是小数
        S[Count].average=(S[Count].computer+S[Count].english+S[Count].math)/3.0;
        printf("添加成功\n");
        printf("\n");
    }
    
    //输出学生
    void OutStudent(Student  S[])
    {
        int i;
        if(Count==0)
        {
            /*这里如果不这么写,没有添加学生时输出结构体数组的第一个结构体
            并不会不输出而是会随机赋值,输出的全部为随机值。
            */
            printf("未找到学生,请先添加。\n");
        }
        else
        for(i=0;i<=Count;i++)
        {
            printf("第%d名学生的学号为:%d\n",i+1,S[i].number);
            printf("第%d名学生的名字为:%s\n",i+1,S[i].name);
            printf("第%d名学生的计算机成绩为%d\n",i+1,S[i].computer);
            printf("第%d名学生的英语成绩为:%d\n",i+1,S[i].english);
            printf("第%d名学生的数学成绩为:%d\n",i+1,S[i].math);
            printf("第%d名学生的平均成绩为:%f\n",i+1,S[i].average);
            printf("\n");
    
        }
    }

    这里是实现了创建学生和输出学生信息的函数操作,其实这里我最初陷入一个误区,误以为数组作为形参是写需要传入指针才能影响到实参,后来才知道数组名作为参数传递的话,传递的是数组的首地址,也就是说这里的形参的值是会改变是实参的值的。

    extern Count;
    //按照平均成绩排序
    void Sort(Student S[])
    {
        int i,j;
        Student temp;
        if(Count<0)
        {
            printf("没有学生,排序失败。");
            printf("\n");
        }
    
        if(Count==0)
        {
            printf("排序成功\n");
            printf("\n");
        }
        else
        {
             for( i=0;i<Count;i++)
        {
            for(j=1;j<=Count;j++)
            {
            if(S[i].average>S[j].average)
            {
                temp=S[j];
                S[j]=S[i];
               S[i]=temp;
            }
            }
        }
        printf("排序成功\n");
        printf("\n");
        }
    
    
    }

    这里是实现了按照平均成绩排序的操作,就是简单地比较然后排序。

    extern Count;
    //查找学生
    void Search(Student S[])
    {
        int id;
        printf("请输入要查找学生的学号:");
        scanf("%d",&id);
        int i=0;
        for(;i<=Count;i++)
        {
            if(S[i].number==id)
            {
                 printf("查找的第%d名学生的学号为:%d\n",i+1,S[i].number);
                 printf("查找的第%d名学生的名字为:%s\n",i+1,S[i].name);
                 printf("查找的第%d名学生的计算机成绩为:%d\n",i+1,S[i].computer);
                 printf("查找的第%d名学生的英语成绩为:%d\n",i+1,S[i].english);
                 printf("查找的第%d名学生的数学成绩为:%d\n",i+1,S[i].math);
                 printf("查找的第%d名学生的平均成绩为:%f\n",i+1,S[i].average);
                 printf("\n");
            }
            else
            {
                printf("查找的学生不存在,请检查是否输入错误?\n");
                printf("\n");
            }
        }
    }
    //修改学生
    void modify(Student S[])
    {
         int id;
        printf("请输入要修改学生的学号:");
        scanf("%d",&id);
        int i=0;
        int n;
        for(;i<=Count;i++)
        {
            if(S[i].number==id)
            {
                 printf("查找的第%d名学生的学号为:%d\n",i+1,S[i].number);
                 printf("查找的第%d名学生的名字为:%s\n",i+1,S[i].name);
                 printf("查找的第%d名学生的计算机成绩为:%d\n",i+1,S[i].computer);
                 printf("查找的第%d名学生的英语成绩为:%d\n",i+1,S[i].english);
                 printf("查找的第%d名学生的数学成绩为:%d\n",i+1,S[i].math);
                 printf("查找的第%d名学生的平均成绩为:%f\n",i+1,S[i].average);
                 while(1)
        {
            int m=0;
            printf("输入1:修改计算机成绩\n");
            printf("输入2:修改英语成绩\n");
            printf("输入3:修改数学成绩\n");
            printf("输入0:退出\n");
            printf("请输入要执行的操作:\n");
            scanf("%d",&n);
            switch(n)
            {
                case 1:
                    do
                    {
                        if(m>0)
                            printf("输入数据有误,请重新输入\n");
                         printf("请输入计算机成绩:\n");
                   scanf("%d",&S[i].computer);
                   m++;
                    }while(S[i].computer>100||S[i].computer<0);
                   break;
    
                case 2:
                      do
                    {
                        if(m>0)
                            printf("输入数据有误,请重新输入\n");
                     printf("请输入英语成绩:\n");
                   scanf("%d",&S[i].english);
                     m++;
                    }while(S[i].english>100||S[i].english<0);
                   break;
    
                case 3:
                     do
                    {
                        if(m>0)
                            printf("输入数据有误,请重新输入\n");
                     printf("请输入数学成绩:\n");
                   scanf("%d",&S[i].math);
                     m++;
                    }while(S[i].math>100||S[i].math<0);
                   break;
    
                case 0:
                    break;
            }
            if(n==0)
                break;
        }
        S[i].average=(S[i].computer+S[i].english+S[i].math)/3.0;
        printf("修改成功。\n");
        printf("\n");
    
            }
            else
            {
                printf("查找的学生不存在,请检查是否输入错误?\n");
                printf("\n");
            }
        }
    }

    这里实现的是队学生的查找和修改操作,也是这个管理程序算是最复杂的操作,这里修改学生先查找到学生,然后运用菜单的方式选择要修改的成绩,同时运用了do while 循环判断输入的数据是否合理。

    #include <student.h>
    #include <createstudent.h>
    #include<sort.h>
    #include<serch_modify.h>
    int Count=0;
    int main(void)
    {
        Student S[50];
        int n;
          while(1)
        {
            printf("输入1:添加学生\n");
            printf("输入2:显示学生信息\n");
            printf("输入3:查找学生\n");
            printf("输入4:修改学生成绩\n");
            printf("输入5:学生按照平均成绩排序\n");
            printf("输入0:退出\n");
            printf("请输入要执行的操作:\n");
            scanf("%d",&n);
            switch(n)
            {
                case 1:
                   CreateStudent(S);
                   Count++;
                   break;
    
                case 2:
                    OutStudent(S);
                   break;
    
                case 3:
                    Search(S);
                   break;
    
                case 4:
                    modify(S);
                    break;
    
                    case 5:
                    Sort(S);
                    break;
    
                    case 0:
                    break;
            }
            if(n==0)
                break;
        }
        return 1;
    }

    最后是整个程序的主函数,前面的头文件顺序是与上面的代码顺序对应的,这里就是简单地运用了一个菜单选择的方式,也没有什么东西。

      **至此,这个程序大概花了4,5个小时终于写了出来,写的还有很多不足,也算是对自己这段时间的学习的一个检测,这个程序我学到了以下几点:
      1、数组名作为参数传递的话,传递的是数组的首地址,形参的值是会改变是实参的值的。
      2、可以运用do while循环来判断输入的数据是否合理
      3、因为是第一次使用code:blocks对这个软件的使用也算是有了一个初步的认识。**
    
    展开全文
  • 简单的【通讯录管理系统】 通讯录包括:姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统, 可以对通讯录进行输入(添加)、显示、查找,,通讯录保存到一个文件中。
  • 基于C语言的学生成绩管理系统

    千次阅读 2019-07-17 23:19:11
    编写一个学生成绩管理系统,实现对班级学生成绩的录入、修改、查找、删除、显示、排序、统计、保存等操作的管理。 二 程序设计 2.1 功能设计 系统功能如下: 录入每个同学的学号、姓名、性别和各科的考试成绩 ...

    一 需求分析

    假设某班有不超过40人(具体人数在程序运行时由键盘录入)参加本学期的期末考试,考试科目为语文(CN),数学(MT),英语(EN),科学(SC)。编写一个学生成绩管理系统,实现对班级学生成绩的录入、修改、查找、删除、显示、排序、统计、保存等操作的管理。

    二 程序设计

    2.1 功能设计

    系统功能如下:

    • 录入每个同学的学号、姓名、性别和各科的考试成绩

    • 成绩修改:可以根据输入的学号修改成绩;在修改之前需要用户进一步确认,确认无误后再进行操作

    • 计算每门课程的总分和平均分

    • 计算每个学生所有课程的总分和平均分

    • 按每个学生的总分进行排序

    • 按学号排出成绩表

    • 按姓名的字典顺序排出成绩表

    • 按姓名查询学生的各科成绩、总分、平均分及在班级的排名

    • 按学号查询学生的各科成绩、总分、平均分及在班级的排名

    • 对每门课程按优(90~100)、良(80~89)、中(70~79)、及格(60~69)、不及格(0~59)统计人数,及所占的百分比

    • 输出每个学生的姓名、学号、性别、各门课程的考试成绩、总分、平均分及在班级内的排名

    • 输出班级每门课程的统计数据:包括每门课程的平均分、每门课程优、良、中、及格、不及格的人数及所占百分比

    • 将每个学生的相关信息写入文件保存

    • 从文件中读出相关信息并进行处理

    • 退出系统

    点击此处下载文档和源码

     

    展开全文
  • 编写一个电影院选座管理系统程序。 问题描述: 自行设计一个电影院放映厅(容积不小于5排,每排不少于10人), 通过该“电影院选座管理系统”实现为顾客选座位的功能。 实现如下功能: 1.给出座位分布图形; 2.可...
  • 嵌入式系统第一次作业 1.在windows环境下通过虚拟机软件(比如Vmware、VirtualBox)安装Ubuntu 16.04/18.04 Desktop,并设置网络参数保证系统能上网;熟练掌握Ubuntu常用命令,并...3.在Ubuntu系统下用C语言编写一个
  • ubuntu系统下的c语言

    2020-09-24 21:14:13
    标题嵌入式第一次作业 在windows环境下通过虚拟机软件(比如Vmware、VirtualBox)安装Ubuntu 16.04/18.04 Desktop,并设置网络参数保证系统能上网;熟练掌握Ubuntu常用命令...在Ubuntu系统下用C语言编写一个简单的输出
  • C语言——宿舍管理查询系统设计

    千次阅读 多人点赞 2018-04-17 12:38:05
    数据结构——宿舍管理查询系统设计算法实现:宿舍管理查询系统设计1) 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求: A. 采用交互工作方式 B. 建立数据文件 ,数据文件按关键字(姓名、学号...
  • 经过上次的飞机游戏制作,使我感觉到C语言程序设计,更加的有趣,也使我对这门... 这次要做的是一个关于书本的管理系统。可以让我们更加方便的去利用程序查找书本存放的位置和一些基本的信息。一、C语言文件的操作1...
  • 通讯录管理系统C语言课程设计

    万次阅读 多人点赞 2017-02-27 08:53:49
    目的:在已学C语言的基础上,编写一个具有实际功能的程序,掌握实际应用程序开发的基本流程——构思,设计框架,所用知识,程序编写,编译测试,程序完成。 要求:编写一个通讯录,完成显示、添加、查找和修改等操作...
  • 2. 突出C语言的函数特征,以多个函数实现每一个子功能; 3. 画出功能模块图; 4. 具有清晰的程序流程图和数据结构的详细定义; 5. 熟练掌握C语言对文件的各种操作。 创新要求: 在基本要求达到后,可进行创新...
  • C语言学生信息管理系统

    万次阅读 多人点赞 2012-09-17 12:58:15
    大一上学期学习了C,学的不好,对C的理解仅限于编写一些简单的小程序,下学期刚开学,老师就要求我们用C编写一个学生信息管理系统,当时就蒙了,后来讲到需要文件操作,更傻了,当时就没怎么学,后来到处查找资料,...
  • 在我的程序中,有一个例子,可以很好地说明这个问题:在编写score_research()函数的时候,有一个地方可以用排序算法实现,也可以用一个标志变量加101然后在函数的末尾处再减101,这样大大地简化了程序,但是运算量也...
  • 编写一个学生成绩管理系统,实现对班级学生成绩的录入、修改、查找、删除、显示、排序、统计、保存等操作的管理。二 程序设计2.1 功能设计系统功能如下:录入每个同学的学号、姓名、性别和各科的考试成绩成绩修改:...
  • 程序使用说明:本程序是使用C语言编写的学生成绩管理系统,使用VS2013进行代码的编写,其中file1.dat是实验数据,file2.dat是 排序后的数据。 实习题目:学生成绩管理系统 要求: 1、增加记录:要求可以连续增加...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 286
精华内容 114
关键字:

c语言编写一个查找系统

c语言 订阅