c语言增删改查
实现步骤:1建立自定义结构体,2建立一个结构体指针数组,3实现添加(重新开辟一段内存给新元素,重新指定数组大小,添加元素指针到数组),4实现删除(获取需要删除的项,释放结构体指针,重新指定数组大小,如果删除的是不是最后一个元素还需要移动元素),5修改元素内容 额 前几步都编好了的话 这步应该就没什么问题了 提示***主要函数,malloc,free
㈡ C语言数组 增删改查 删改两个程序怎么写
这行代码:数组=(结构记录*)malloc的(的sizeof(结构记录)* NUM); 是应用的内存结构记录类型,你定义为int *,所以诠释*数组转换成结构记录*数组,另有界定者外Num和我不记录定义放在一起,否则,同一类型和记录,是独立的定义为:整型数,scanf函数(“%c”的,与数组[I]系数);改革为scanf函数(在“%f”,&阵列由[i]系数).
㈢ C语言中数据库的增删改查与链表的增删改查有什么区别
数据库使用来存贮大数据的,链表是一种数据结构二者不是同一个概念,如果你想关闭之后数据能够保存的话请使用数据库或者文件,否则的话就用链表吧
㈣ 谁知道用c语言向数据库做增删改查吗
我曾经写过C语言的数据库系统..
给你部分代码(一个销售函数)以作参考...
void
book_out()
//销售函数
{
char
temp;
EXEC
SQL
BEGIN
DECLARE
SECTION;
/*主变量定义开始.*/
int
Hout_shuliang;
int
Hshuliang;///////////
char
Hbook_id[11];
EXEC
SQL
END
DECLARE
SECTION;
/*主变量定义结束*/
lab3:
printf("请输入图书编号:");
scanf("%s",&Hbook_id);
printf("请输入卖出本数:");
scanf("%d",&Hout_shuliang);
//先将库存量取出到主变量
EXEC
SQL
select
book_shuliang
into
:Hshuliang
from
book_kucun
where
book_id=:Hbook_id;
if(Hshuliang<Hout_shuliang)
//假如库存不足,销售不成功.
{
printf("输入有误.没那么多库存,请重新输入.\n");
goto
lab3;
}
//将销售记录插入到book_out(销售表)数据表.
EXEC
SQL
insert
into
book_out
values(:Hbook_id,:Hout_shuliang,GETDATE());
EXEC
SQL
COMMIT
TRANSACTION;
/*事务提交*/
printf("售出成功,输入Y继续输入其他要售出的书.其他键返回主菜单:");
getchar();//////////////////////////
scanf("%c",&temp);
if(temp=='y'||temp=='Y')
goto
lab3;
}
㈤ C语言一维数组的增,删,改,查的编程例子,要简单点的!会的教一下
有谭浩强那本书么?
看一下数组部分就好了。
数组定义好了,是不能增删的。只能对数组元素赋值,查找之类的操作。定义数组就简单了:
类型说明
数组名
【元素个数】
其中元素个数不能是变量,只能是常量。例如定义一个五个元素的整形arr数组
int
arr【5】。给数组赋值:arr【x】=数值。
其中x只能是0-5,数组第一个元素为0,而不是1。查找你就要首先学会那几个查找的算法。就懂了。
㈥ 用c语言实现对学生信息增删改,怎么做啊
要更详细答案,联系我,这个很难做的,起码要给点悬赏分作为酬劳啊!!!
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
//数据结构的定义
typedef struct node{
int id; //学号
char name[10]; // 姓名
int grade; //成绩
struct node * next; //指向下一节点的指针
}node,*list;
//函数的声明,必须按照声明来定义函数
void showMenu(); //显示菜单
void start(); // 主控程序
void init(list &h);// 初始化链表h
void printAnRecord(node * p);//输出p所指节点的值(id,name,grade)
void printList(list h);// 输出链表h的各节点的值
int del(list h,int n);//删除链表h中id为n的节点,成功删除返回1,若不存在则返回0
int insert(list h,int id,char * name,int grade);//在链表h中,插入节点(n,name,grade),若id重复返回0,否则返回1
node * searchByID(list h, int n);// 在链表h中查找id为n的节点,查找成功返回其指针,否则返回NULL
int update(list h,int n,int grade);// 将链表h中id为n的节点的成绩改为grade,若不存在该节点返回0,否则返回1
float average(list h); //返回链表h中各个节点成绩的平均值
int bulkInsert(list h);//在链表h中批量插入节点,以id=0结束,返回成功插入的节点数
void clearList(list h);//清空链表h(使其成为空链表)
void showMenu()
{ //显示菜单
puts(" 0----Bulk Insert ");
puts(" 1----Insert an Record");
puts(" 2----Delete an Record");
puts(" 3----Update an Record's grade");
puts(" 4--- Search an Record by stu_id");
puts(" 5----Print all Record");
puts(" 6----Average of grade");
puts(" 7----Clear list");
puts(" 9----Exit");
}
//主控程序
void start()
{
list h; //链表
int choice; //功能选择
int id,grade,flag=1,m;
char name[10];
showMenu();
init(h); //初始化链表h,即建立空链表
while(flag){//若未退出程序
puts(" ******** Please input 1...9 ********* ");
scanf("%d",&choice);
switch(choice){ //根据选择的功能号,执行不同的操作
case 0 :
puts("input Stu_ID, Name , Grade (end by 0)");
m=bulkInsert(h);
printf(" %d Record insert successfully\n",m);
break;
case 1:
puts("input Stu_ID, Name , Grade: ");
scanf("%d",&id);
scanf("%s",name);
scanf("%d",&grade);
if( insert(h,id,name,grade) )
puts("Insert an Record successfully!");
else
puts("Sorry, blicate ID ");
break;
case 2:
puts("input Stu_ID to delet");
scanf("%d",&id);
if( del(h,id) )
puts("Delete an Record successfully");
else
puts("Sorry, ID no exit ");
break;
case 3:
puts("input Stu_ID and grade to update");
scanf("%d",&id);
scanf("%d",&grade);
if ( update(h,id,grade) )
puts("Update an Record successfully ");
else
puts("Sorry, ID no exit ");
break;
case 4:
puts("input Stu_ID to search");
scanf("%d",&id);
node *p;
if( p=searchByID(h,id) )
printAnRecord(p);
else
puts("Sorry, ID no exit ");
break;
case 5:
printList(h);
break;
case 6:
printf("The average grade is %6.2f \n ", average(h) );
break;
case 7:
clearList(h);
break;
case 9:
flag=0; //退出循环
break;
default:
puts(" Error ! Must Input (1...9) ");
}
}
}
void main()
{
//编程时要一个一个函数的调试完成后,最后再调用主控程序
start();
}