动态顺序表下标法.docx

上传人:b****7 文档编号:25037850 上传时间:2023-06-04 格式:DOCX 页数:68 大小:26.11KB
下载 相关 举报
动态顺序表下标法.docx_第1页
第1页 / 共68页
动态顺序表下标法.docx_第2页
第2页 / 共68页
动态顺序表下标法.docx_第3页
第3页 / 共68页
动态顺序表下标法.docx_第4页
第4页 / 共68页
动态顺序表下标法.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

动态顺序表下标法.docx

《动态顺序表下标法.docx》由会员分享,可在线阅读,更多相关《动态顺序表下标法.docx(68页珍藏版)》请在冰豆网上搜索。

动态顺序表下标法.docx

动态顺序表下标法

动态顺序表(下标法)

/*说明:

不同类型的结构在定义和存盘及装载时算法不同*/

#include

#include

#include

#defineMAX4

#defineMAXIN2

/*结构定义*/

typedefstructnode

{

charnumb[15];/*学生证号*/

charname[15];/*姓名*/

intage;/*年龄*/

charsex[2];/*性别*/

chartimf[4][12];/*缴费时间*/

floatyesf[4][5];/*四年学杂费*/

chartims[4][6];/*确定是否缴费*/

floatyzzf;/*四年总费*/

}Elemtype;

typedefstructlist

{

Elemtype*s;/*顺序表首地址*/

intlen;/*顺序表长度*/

intlistsize;/*顺序表容量*/

}SqList;

/*变量定义*/

SqListv;intk;

charchs,ch,sname[15];

/*函数说明*/

intmenu_select();/*主程序选择菜单*/

intmenu_delselect();/*删除选择菜单*/

intmenu_inselect();/*插入选择菜单*/

intmenu_findselect();/*查找选择菜单*/

voidmenu_prog(SqListv);/*主程序执行菜单*/

voidmenu_delprog(SqList*v);/*删除执行菜单*/

voidmenu_inprog(SqList*v);/*插入执行菜单*/

voidmenu_findprog(SqListv);/*查找执行菜单*/

voidplaypasword(char*s);/*密码采用*号表示*/

voidsetpasword();/*建立密码*/

voidmadpasword();/*修改密码*/

voidsave(SqListv);/*保存文件*/

voidload(SqList*v);/*装载文件*/

voidinilist(SqList*v);/*初始化*/

voidsetlist(SqList*v);/*建立动态顺序表*/

voidprintlist(SqListv);/*显示祥细数据算法*/

voidprintlists(SqListv);/*输出顺序表*/

voiddistroylist(SqList*v);/*消顺序表*/

voidinsert(SqList*v);/*插入数据*/

voidinserts(SqList*v);/*插入任意位置数据*/

voiddelnumb(SqList*v);/*删除编号*/

voiddelname(SqList*v);/*删除姓名*/

intfindnumb(SqListv);/*查找编号*/

intfindname(SqListv,charstrname[],intk);/*查找姓名*/

voidsortdata(SqList*v);/*数据排序*/

voidmadedata(SqList*v);/*修改数据*/

voidsortsdata(SqListv);/*数据统计*/

intflagint(charstrnum[]);/*判字串中是否均为数字*/

intflagints(charstrnum[]);/*判字串中是否为数字或小数点

*/

voidscandata(SqList*v,inti);/*输入缴费信息*/

main()

{/*主程序*/

FILE*fp;

charcha[20],chb[20];

inti=0;

fp=fopen("pasword.exe","rb");

if(fp==NULL)setpasword();

elsefclose(fp);

v.s=NULL;/*基址指针初值为空*/

clrscr();/*清屏*/

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("************************************

\n");

printf("**

\n");

printf("*数据结构课程设计实例*

\n");

printf("**

\n");

printf("*学生缴费管理系统*

\n");

printf("*(动态顺序表)*

\n");

printf("*(采用下标法)*

\n");

printf("**

\n");

printf("*作者:

孙俊杰*

\n");

printf("**

\n");

printf("*2008年1月1日*

\n");

printf("**

\n");

printf("*初始密码:

1234*

\n");

printf("**

\n");

printf("*数据库名:

ii.dat*

\n");

printf("**

\n");

printf("************************************

\n");

printf("\n");

printf("\n");

fp=fopen("pasword.exe","rb");

fgets(cha,81,fp);

printf("请输入密码:

");

playpasword(chb);

while(strcmp(cha,chb)<0||strcmp(cha,chb)>0)

{

i++;

if(i==3)

{

printf("\n");

printf("\n");

printf("\n");

printf("\n");

printf("

************************************\n");

printf("*

*\n");

printf("*密码错误无权使用!

!

!

*\n");

printf("*

*\n");

printf("*谢谢

*\n");

printf("*

*\n");

printf("*

*\n");

printf("*如想使用本软件请与作者联系

*\n");

printf("*

*\n");

printf("*2007年1月1日

*\n");

printf("*

*\n");

printf("

************************************\n");

printf("\n");

printf("\n");

scanf("%*c");

exit(0);

}

printf("密码错误!

!

!

\n");

printf("请输入密码:

");

playpasword(chb);

}

menu_prog(v);

}

voidmenu_prog(SqListv)

{/*选项菜单执行系统*/

charch;

for(;;)

{

switch(menu_select())

{

case1:

if(v.s!

=NULL)

{

printf("\n系统中已经存在数据库!

不能新建立数据

库!

!

!

");

printf("\n请退出系统后重新操作!

!

!

");

printf("\n");

printf("按任意键继续.........");

getch();

break;

}

else{

inilist(&v);/*初始化顺序表算法*/

setlist(&v);/*建立顺序表算法*/

if(v.s!

=NULL&&v.len!

=0)printlist(v);/*输

出顺序表算法*/

elseif(v.len==0)

{

free(v.s);v.s=NULL;

}

printf("\n");

printf("按任意键继续.........");

getch();

break;

}

case2:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

printf("是否输出祥细信息?

(y/n):

");

scanf("%c%*c",&ch);

if(ch=='y')printlist(v);/*显示祥细数据算法

*/

elseprintlists(v);/*显示数据算法*/

printf("\n");

}

printf("按任意键继续.........");

getch();

break;

case3:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

menu_delprog(&v);/*调用删除窗口*/

}

printf("按任意键继续.........");

getch();

break;

case4:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

menu_inprog(&v);/*调用插入窗口*/

}

printf("按任意键继续.........");

getch();

break;

case5:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

menu_findprog(v);/*调用查找窗口*/

}

printf("按任意键继续.........");

getch();

break;

case6:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

madedata(&v);/*修改算法*/

}

printf("按任意键继续.........");

getch();

break;

case7:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

sortdata(&v);/*排序算法*/

}

printf("按任意键继续.........");

getch();

break;

case8:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

sortsdata(v);/*统计算法*/

}

printf("按任意键继续.........");

getch();

break;

case9:

madpasword();/*修改密码*/

printf("按任意键继续.........");

getch();

break;

case10:

save(v);/*将程序中数据保存到磁盘文件中*/

printf("按任意键继续.........");

getch();

break;

case11:

if(v.s!

=NULL)

{

printf("\n系统中已经存在数据库!

不能打开新数据

库!

!

!

");

printf("\n请退出系统后重新操作!

!

!

");

printf("\n");

printf("按任意键继续.........");

getch();

break;

}

else{

inilist(&v);

load(&v);/*将磁盘文件内容装载到内存中*/

printf("按任意键继续.........");

getch();

break;

}

case12:

if(v.s!

=NULL)

{

printf("\n是否保存内存中的数据?

(y/n):

");

scanf("%c%*c",&ch);

if(ch=='y')save(v);/*将程序中数据保存到磁盘

文件中*/

distroylist(&v);

}

exit(0);

}

}

}

voidmenu_delprog(SqList*v)

{/*选项菜单执行系统*/

inti;

for(;;)

{

i=menu_delselect();

switch(i)

{

case1:

if(v->s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

delnumb(v);/*删除编号算法*/

}

printf("按任意键继续.........");

getch();

break;

case2:

if(v->s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

delname(v);/*删除姓名算法*/

}

printf("按任意键继续.........");

getch();

break;

case3:

break;

}

if(i==3)break;

}

}

voidmenu_inprog(SqList*v)

{/*选项菜单执行系统*/

inti;

for(;;)

{

i=menu_inselect();

switch(i)

{

case1:

if(v->s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

insert(v);/*插入数据算法*/

}

printf("按任意键继续.........");

getch();

break;

case2:

if(v->s==NULL)printf("请先建立顺序表后再进行操作!

");

else{

inserts(v);/*插入数据算法*/

}

printf("按任意键继续.........");

getch();

break;

case3:

break;

}

if(i==3)break;

}

}

voidmenu_findprog(SqListv)

{/*选项菜单执行系统*/

inti;

for(;;)

{

i=menu_findselect();

switch(i)

{

case1:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{/*编号查找算法*/

ch='y';

while(ch=='y')

{

k=findnumb(v);

if(k!

=0)

{

printf("学生证号姓名年龄

性别第一学期第二学期第三学期第四学期缴费总计\n");

printf("%s%8s%6d%6s%9s%9s%9s%9s%

10.2f\n\n",v.s[k].numb,v.s[k].name,v.s[k].age,v.s[k].sex,v.s[k].tims

[0],v.s[k].tims[1],v.s[k].tims[2],v.s[k].tims[3],v.s[k].yzzf);

printf("收费项目:

学杂费

教材费住宿费总计缴费日期\n");

printf("第1学年:

%11.2f%11.2f%

11.2f%11.2f%15s\n",v.s[k].yesf[0][1],v.s[k].yesf[0][2],v.s[k].yesf[0]

[3],v.s[k].yesf[0][4],v.s[k].timf[0]);

printf("第2学年:

%11.2f%11.2f%

11.2f%11.2f%15s\n",v.s[k].yesf[1][1],v.s[k].yesf[1][2],v.s[k].yesf[1]

[3],v.s[k].yesf[1][4],v.s[k].timf[1]);

printf("第3学年:

%11.2f%11.2f%

11.2f%11.2f%15s\n",v.s[k].yesf[2][1],v.s[k].yesf[2][2],v.s[k].yesf[2]

[3],v.s[k].yesf[2][4],v.s[k].timf[2]);

printf("第4学年:

%11.2f%11.2f%

11.2f%11.2f%15s\n",v.s[k].yesf[3][1],v.s[k].yesf[3][2],v.s[k].yesf[3]

[3],v.s[k].yesf[3][4],v.s[k].timf[3]);

}

elseprintf("数据库中无此编号的数

据!

!

!

");

printf("\n是否重新查找另一个编号的记录?

(y/n):

");

scanf("%c%*c",&ch);

}

}

printf("按任意键继续.........");

getch();

break;

case2:

if(v.s==NULL)printf("请先建立顺序表后再进行操作!

");

else{/*姓名查找算法*/

printlists(v);

chs='y';ch='y';

while(chs=='y')

{

printf("请输入要查找记录的姓名:

");

gets(sname);

k=1;

while(ch=='y')

{

k=findname(v,sname,k);

if(k!

=0)

{

printf("学生证号姓名年龄

性别第一学期第二学期第三学期第四学期缴费总计\n");

printf("%s%8s%6d%6s%9s%9s%9s%9s%

10.2f\n\n",v.s[k].numb,v.s[k].name,v.s[k].age,v.s[k].sex,v.s[k].tims

[0],v.s[k].tims[1],v.s[k].tims[2],v.s[k].tims[3],v.s[k].yzzf);

printf("收费项目:

学杂费

教材费住宿费总计缴费日期\n");

printf("第1学年:

%11.2f%11.2f%

11.2f%11.2f%15s\n",v.s[k].yesf[0][1],v.s[k].yesf[0][2],v.s[k].yesf[0]

[3],v.s[k].yesf[0][4],v.s[k].timf[0]);

printf("第2学年:

%11.2f%11.2f%

11.2f%11.2f%15s\n",v.s[k].yesf[1][1],v.s[k].yesf[1][2],v.s[k].yesf[1]

[3],v.s[k].yesf[1][4],v.s[k].timf[1]);

printf("第3学年:

%11.2f%11.2f%

11.2f%11.2f%15s\n",v.s[k].yesf[2][1],v.s[k].yesf[2][2],v.s[k].yesf[2]

[3],v.s[k].yesf[2][4],v.s[k].timf[2]);

printf("第4学年:

%11.2f%11.2f%

11.2f%11.2f%15s\n",v.s[k].yesf[3][1],v.s[k].yesf[3][2],v.s[k].yesf[3]

[3],v.s[k].yesf[3][4],v.s[k].timf[3]);

printf("\n是否继续查找相同姓名的

记录?

(y/n):

");

scanf("%c%*c",&ch);

if(ch=='y')k++;

elsebreak;

}

else{

printf("查找结束或该数据库中无

此姓名的记录!

!

!

");

break;

}

}

printf("\n是否重新进行查找操作?

(y/n):

");

scanf("%c%*c",&chs);

}

}

printf("按任意键继续.........");

getch();

break;

case3:

break;

}

if(i==3)break;

}

}

intmenu_select()

{/*选项菜单系统*/

chars[8];

intc;

clrscr();/*清屏*/

printf("\n");

printf("\n");

printf("************************************

\n");

printf("**

\n");

printf("**

\n");

printf("*动态顺序表基本操作窗口*

\n");

printf("*(采用下标法)*

\n");

printf("**

\n");

printf("**

\n");

printf("************************************

\n");

printf("\n");

printf("01:

学生缴费系统的建立操作

\n");

printf("02:

学生缴费系统的显示操作

\n");

printf("03:

学生缴费系统的删除操作

\n");

printf("04:

学生缴费系统的插入操作

\n");

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1