
等很久并不是因为权限,是网速造成的,或者是数据库系统内存不足造成。 从本地备份不可行,不过如果你查询的仅有几张表的数据,可在本地建一个数据库,然后和总数据库建立数据库连接,这几张表的数据发生修改时,总数据库把数据同步到你本地数据库。这个方法仅限于你访问的表不多情况下,如果表很多,那数据库同步更影响总库的速度。注意这样做有一个重要的区别,你查询的仅为本地数据库数据,和主库没什么关系,只不过数据库同步让两个库的数据是一样的。
//户籍管理系统, 应该能满足你的要求。
//多给点财富吧
#include<stdioh>
#include<stdlibh>
typedef struct tagHuJiXinXi
{
char shfzhh[64]; //身份z号
char xm[16]; //姓名
char xb[8]; //性别
int nl; //年龄
char xl[64]; //学历
char zhzh[64]; //住址
char dh[32]; //电话
}HuJiXinXi,PtHuJiXinXi;
void readfromfile();
void writetofile();
void tuichu();
void add();
void outputone();
void outputall();
void sortbyage();
void myrealloc();
void findbyagerange();
void del();
void alter();
void find();
void showmenu();
void processmenu(int m);
PtHuJiXinXi pt;
int count=0,capacity=16;
int main()
{
int m;
pt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
readfromfile();
while(1)
{
showmenu();
scanf("%d",&m);
processmenu(m);
}
system("PAUSE");
return EXIT_SUCCESS;
}
void processmenu(int m)
{
switch(m)
{
case 0:
tuichu();
break;
case 1:
add();
break;
case 2:
del();
break;
case 3:
alter();
break;
case 4:
outputall();
break;
case 5:
sortbyage();
break;
case 6:
findbyagerange();
break;
case 7:
writetofile();
break;
case 8:
find();
break;
default:
printf("不可识别的命令。\n");
}
}
//实现存储空间的自动扩充
void myrealloc()
{
if(count+1>=capacity)
{
int i;
capacity=2;
PtHuJiXinXi temppt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
for(i=0;i<count;i++)
{
temppt[i]=pt[i];
}
free(pt);
pt=temppt;
}
}
void readfromfile()
{
char f[128];
FILE inf;
HuJiXinXi hjxx;
printf("请输入包含户籍信息的文件的文件名,如果还没有文件,请输入omit(文件中每行一条户籍信息,");
printf("格式:身份z号 姓名 性别 年龄 学历 住址 电话)\n");
gets(f);
if(!strcmp(f,"omit"))
{
return;
}
inf=fopen(f,"r");
if(NULL!=inf)
{
do
{
fscanf(inf,"%s %s %s %d %s %s %s",hjxxshfzhh,hjxxxm,hjxxxb,&hjxxnl,hjxxxl,hjxxzhzh,hjxxdh);
myrealloc();
pt[count++]=hjxx;
}while(!feof(inf));
fclose(inf);
printf("信息已成功加载。\n");
}
else
{
printf("文件名无效或文件无数据。\n");
}
}
void writetofile()
{
char f[128]={'\0'};
FILE outf;
int i;
printf("请输入保存户籍信息的文件的文件名:\n");
scanf("%s",f);
outf=fopen(f,"w");
if(NULL!=outf)
{
for(i=0;i<count;i++)
{
fprintf(outf,"%s %s %s %d %s %s %s",pt[i]shfzhh,pt[i]xm,pt[i]xb,pt[i]nl,pt[i]xl,pt[i]zhzh,pt[i]dh);
if(count-1!=i)
{
fprintf(outf,"%s","\n");
}
}
fclose(outf);
printf("文件保存成功。\n");
}
else
{
printf("文件名无效。\n");
}
}
void showmenu()
{
char menu[]="菜单:\n0、退出\n1、添加一条信息\n2、删除一条信息\n3、批量修改\n4、浏览全部信息\n5、按年龄排序 \n6、按年龄区间查询\n7、保存到文件\n8、随意查询\n请选择一个菜单:";
puts(menu);
}
void tuichu()
{
if(NULL==pt)
{
free(pt);
}
exit(0);
}
//判断身份z号是否重复
int isshfzhhchf(char s[64])
{
int i,r=0;
for(i=0;i<count;i++)
{
if(!strcmp(pt[i]shfzhh,s))
{
r=1;
break;
}
}
return r;
}
void add()
{
myrealloc();
printf("添加一条户籍信息。\n");
printf("请输入身份z号 姓名 性别 年龄 学历 住址 电话:\n");
scanf("%s %s %s %d %s %s %s",pt[count]shfzhh,pt[count]xm,pt[count]xb,&pt[count]nl,
pt[count]xl,pt[count]zhzh,pt[count]dh);
if(!isshfzhhchf(pt[count]shfzhh))
{
count++;
printf("添加成功。\n");
}
else
{
printf("身份z号重复,添加失败。\n");
}
}
//输出下标为n的一条户籍信息
void outputone(int n)
{
if(n>=0 && n<count)
{
printf("第%d条户籍信息:\n",n+1);
printf("%s %s %s %d %s %s %s。\n",pt[n]shfzhh,pt[n]xm,pt[n]xb,pt[n]nl,pt[n]xl,pt[n]zhzh,pt[n]dh);
}
else
{
printf("没有第%d条户籍信息存在。\n",n+1);
}
}
void outputall()
{
if(0==count)
{
printf("系统已空。\n");
}
else
{
int i;
for(i=0;i<count;i++)
{
outputone(i);
}
}
}
void sortbyage()
{
int i,j,px;
HuJiXinXi hjxx;
printf("子菜单:\n1、升序\n2、降序\n请选择:");
scanf("%d",&px);
if(1==px || 2==px)
{
for(i=0;i<count-1;i++)
{
for(j=0;j<count-i-1;j++)
{
if(1==px)
{
if(pt[j]nl>pt[j+1]nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
else
{
if(pt[j]nl<pt[j+1]nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
}
}
printf("排序完成。\n");
}
else
{
printf("无法处理的子菜单命令。\n");
}
}
void findbyagerange()
{
int i,min,max,c=0;
printf("请输入要查找的户籍信息的最小年龄和最大年龄:");
scanf("%d %d",&min,&max);
printf("查询结果如下:\n");
for(i=0;i<count;i++)
{
if(pt[i]nl>=min && pt[i]nl<=max)
{
outputone(i);
printf("符合你的要求。\n");
c++;
}
}
if(0==c)
{
printf("没有符合你的要求的户籍信息。\n");
}
}
//删除一条户籍信息
void del()
{
int i,n;
HuJiXinXi hjxx;
printf("请输入要删除的是第几条户籍信息:");
scanf("%d",&n);
if(n-1>=0 && n-1<count)
{
hjxx=pt[n-1];
for(i=n;i<count;i++)
{
pt[i-1]=pt[i];
}
printf("删除成功。\n第%d条户籍信息:\n",n);
printf("%s %s %s %d %s %s %s。",hjxxshfzhh,hjxxxm,hjxxxb,hjxxnl,hjxxxl,hjxxzhzh,hjxxdh);
printf(",已删除。\n");
count--;
}
else
{
printf("删除失败。\n不存在第%d条户籍信息。\n",n);
}
}
//根据hjxx的值修改下标为n的户籍信息
//对于pt[n]的对应字段,如果在hjxx中是用表示的,则不修改
void change(HuJiXinXi hjxx,int n)
{
//返回非0值,意味着hjxxshfzhh(身份z号)不等于,即需要修改pt[n]shfzhh字段,以下都类似
if(strcmp(hjxxshfzhh,""))
{
strcpy(pt[n]shfzhh,hjxxshfzhh);
}
if(strcmp(hjxxxm,""))
{
strcpy(pt[n]xm,hjxxxm);
}
if(strcmp(hjxxxb,""))
{
strcpy(pt[n]xb,hjxxxb);
}
//不等于-1表示需要修改pt[n]nl(年龄)
if(-1!=hjxxnl)
{
pt[n]nl=hjxxnl;
}
if(strcmp(hjxxxl,""))
{
strcpy(pt[n]xl,hjxxxl);
}
if(strcmp(hjxxzhzh,""))
{
strcpy(pt[n]zhzh,hjxxzhzh);
}
if(strcmp(hjxxdh,""))
{
strcpy(pt[n]dh,hjxxdh);
}
}
//对户籍信息进行批量修改
void alter()
{
int n;
HuJiXinXi hjxx;
char nl[16];
while(1)
{
printf("请输入要修改第几条户籍信息(-1退出循环):");
scanf("%d",&n);
if(-1==n)
{
break;
}
else if(n-1>=0 && n-1<count)
{
printf("修改\n");
outputone(n-1);
printf("请输入将此户籍信息修改后的新的姓名 性别 年龄 学历 住址 电话(保持原值的用代替):\n");
scanf("%s %s %s %s %s %s",hjxxxm,hjxxxb,nl,hjxxxl,hjxxzhzh,hjxxdh);
//因为只有nl(年龄)是int型,故对nl作特殊处理,-1表示修改时年龄保持原值不变(不修改)
hjxxnl=(strcmp(nl,"") atoi(nl) : -1);
strcpy(hjxxshfzhh,"");
change(hjxx,n-1);
printf("修改完成。\n");
}
else
{
printf("无法修改,不存在第%d条户籍信息。\n",n);
}
}
}
//用于判断pt[n]是否匹配hjxx的模式
int ismatch(HuJiXinXi hjxx,int n)
{
int r=1;
if(strcmp(hjxxshfzhh,"") && strcmp(hjxxshfzhh,pt[n]shfzhh))
{
r=0;
}
if(r && strcmp(hjxxxm,"") && strcmp(hjxxxm,pt[n]xm))
{
r=0;
}
if(r && strcmp(hjxxxb,"") && strcmp(hjxxxb,pt[n]xb))
{
r=0;
}
if(r && -1!=hjxxnl && hjxxnl!=pt[n]nl)
{
r=0;
}
if(r && strcmp(hjxxxl,"") && strcmp(hjxxxl,pt[n]xl))
{
r=0;
}
if(r && strcmp(hjxxzhzh,"") && strcmp(hjxxzhzh,pt[n]zhzh))
{
r=0;
}
if(r && strcmp(hjxxdh,"") && strcmp(hjxxdh,pt[n]dh))
{
r=0;
}
return r;
}
//按模式查询户籍信息
void find()
{
int i,c=0;
char nl[16];
HuJiXinXi hjxx;
printf("请输入要查询的户籍信息的身份z号 姓名 性别 年龄 学历 住址 电话(只需提供关键信息以用于查询,不提供的信息请用代替):\n");
scanf("%s %s %s %s %s %s %s",hjxxshfzhh,hjxxxm,hjxxxb,nl,hjxxxl,hjxxzhzh,hjxxdh);
//因为只有nl(年龄)是int型,故对nl作特殊处理,-1表示查询时不需比较年龄
hjxxnl=(strcmp(nl,"") atoi(nl) : -1);
for(i=0;i<count;i++)
{
if(ismatch(hjxx,i))
{
printf("找到第%d条满足你的模式要求的户籍信息如下:\n",c+1);
printf("%s %s %s %d %s %s %s。\n",pt[i]shfzhh,pt[i]xm,pt[i]xb,pt[i]nl,pt[i]xl,pt[i]zhzh,pt[i]dh);
c++;
}
}
if(!c)
{
printf("系统中没有满足你的模式要求的户籍信息。\n");
}
}
随便写了些
不满意你自己在改改吧
#include <stdioh>
#include <malloch>
#include <memoryh>
#include <stringh>
typedef struct student{
int Num;
char name[12];
int age;
struct student pNext;
}STUDENT,PSTUDENT;
#define LEN sizeof(STUDENT)
PSTUDENT pHeader,pNail;
int n=0;
void PrintMenu();
bool ExistStudent(int Num);
void InsertInfo();
bool DeleteInfo(int Num);
bool UpdateInfo(int Num,PSTUDENT pNewInfo);
void PrintInfo();
int main()
{
PrintMenu();
int iSel=0;
while(1)
{
printf("输入 *** 作选择:");
scanf("%d",&iSel);
switch(iSel)
{
case 0:
return 0;
case 1:
PrintInfo();
continue;
case 2:
InsertInfo();
continue;
case 3:
{
int num=0;
printf("输入要删除的学生学号:");
scanf("%d",&num);
if(DeleteInfo(num))
printf("删除成功!\n");
else
printf("删除失败!\n");
continue;
}
case 4:
{
int num=0;
printf("输入要修改的学生学号:");
scanf("%d",&num);
STUDENT stu={0};
printf("输入该学生的新信息(空格分隔):");
scanf("%d%s%d",&stuNum,&stuname,&stuage);
if(UpdateInfo(num,&stu))
printf("修改成功!\n");
else
printf("修改失败!\n");
continue;
}
continue;
default:
continue;
}
}
return 0;
}
void PrintMenu()
{
printf(" *** 作菜单\n");
printf(" 1 打印学生信息\n");
printf(" 2 添加学生信息\n");
printf(" 3 删除学生信息\n");
printf(" 4 修改学生信息\n");
printf(" 0 退出系统\n");
printf("\n");
}
void InsertInfo()
{
PSTUDENT pCur;
printf("请输入学生记录(各元素用空格分隔,输入学号为0时停止)\n");
while(true)
{
pCur = (PSTUDENT)malloc(LEN);
memset(pCur,NULL,LEN);
printf("==>:");
scanf("%d%s%d",&pCur->Num,pCur->name,&pCur->age);
if(pCur->Num==0)
break;
if(ExistStudent(pCur->Num))
{
printf("该学生信息已经存在!\n");
break;
}
if(n==0)
{
pNail=pHeader=pCur;
pHeader->pNext=NULL;
}
else
{
pNail->pNext=pCur;
pNail=pCur;
pCur->pNext=NULL;
}
n++;
}
}
bool DeleteInfo(int Num)
{
PSTUDENT pStu=pHeader;
if(!pStu)
return false;
for(pStu;pStu!=NULL;pStu=pStu->pNext)
{
if(Num==pStu->Num)
{
pHeader=pStu->pNext;
return true;
}
else if(pStu->pNext&&Num==pStu->pNext->Num)
{
pStu->pNext=pStu->pNext->pNext;
return true;
}
}
return false;
}
bool UpdateInfo(int Num,PSTUDENT pNewInfo)
{
PSTUDENT pStu=pHeader;
if(!pStu)
return false;
if(Num!=pNewInfo->Num&&ExistStudent(pNewInfo->Num))
return false;
for(pStu;pStu!=NULL;pStu=pStu->pNext)
{
if(Num==pStu->Num)
{
pStu->Num=pNewInfo->Num;
memset(pStu->name,0,sizeof(pStu->name));
strcpy(pStu->name,pNewInfo->name);
pStu->age=pNewInfo->age;
return true;
}
}
return true;
}
void PrintInfo()
{
PSTUDENT pStu=pHeader;
if(!pStu)
{
printf("没有学生信息!\n");
return;
}
for(pStu;pStu!=NULL;pStu=pStu->pNext)
printf("学号:%d 姓名:%s 年龄:%d\n",pStu->Num,pStu->name,pStu->age);
}
bool ExistStudent(int Num)
{
PSTUDENT pStu=pHeader;
if(!pStu)
return false;
for(pStu;pStu!=NULL;pStu=pStu->pNext)
{
if(Num==pStu->Num)
return true;
}
return false;
}
以上就是关于用汇编语言求“数列极差”问题。程序大约要有500行,要有输入有输出。高人救命啊。。。。全部的内容,包括:用汇编语言求“数列极差”问题。程序大约要有500行,要有输入有输出。高人救命啊。。。。、学了一学期的C语言,要做大作业。 求一个500行C语言程序代码。 可以在VC++6.0上运行的。、C语言程序设计学生成绩管理系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)