ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:24.43KB ,
资源ID:10615522      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10615522.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计例程.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计例程.docx

1、课程设计例程/*下面是一个在VC+中调试通过的用结构体数组实现的信息管理程序,调试过程中,对TC下运行的程序主要进行了如下修改:1. clrscr(); 函数不被VC识别,将其替换为system(cls); 同时需要在前面增加 #include 2. gotoxy();函数不被VC识别,在程序最后增加了一个VC下写的自定义函数 void gotoxy(int x,int y),同时将其函数声明放在程序前面的自定义函数声明部分3. getch();函数不被VC识别,改为getchar();*/*头文件(.h)*/#include stdio.h /*I/O函数*/#include stdlib.

2、h /*标准库函数*/#include string.h/*字符串函数*/#include ctype.h /*字符操作函数*/#include #define M 50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/ char name20; /*姓名*/ char units30; /*单位*/ char tele10; /*电话*/ADDRESS;int enter(ADDRESS t); /*输入记录*/void list(ADDRESS t,int n); /*显示记录*/void search(ADDRESS t,int n); /*按姓名查找显示记录

3、*/int dele(ADDRESS t,int n); /*删除记录*/int add(ADDRESS t,int n); /*插入记录*/void save(ADDRESS t,int n); /*记录保存为文件*/int load(ADDRESS t); /*从文件中读记录*/void display(ADDRESS t); /*按序号查找显示记录*/void sort(ADDRESS t,int n); /*按姓名排序*/void qseek(ADDRESS t,int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADDRESS temp

4、); /*显示单条记录*/int find(ADDRESS t,int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*/void gotoxy(int x,int y);/*主函数开始*/void main() ADDRESS adrM; /*定义结构体数组*/ int length; /*保存记录长度*/ system(cls); /*清屏*/ for(;)/*无限循环*/ switch(menu_select() /*调用主菜单函数,返回值整数作开关语句的条件*/ case 0:length=enter(adr);break;/*输入记录*

5、/ case 1:list(adr,length);break; /*显示全部记录*/ case 2:search(adr,length);break; /*查找记录*/ case 3:length=dele(adr,length);break; /*删除记录*/ case 4:length=add(adr,length); break; /*插入记录*/ case 5:save(adr,length);break; /*保存文件*/ case 6:length=load(adr); break; /*读文件*/ case 7:display(adr);break; /*按序号显示记录*/ c

6、ase 8:sort(adr,length);break; /*按姓名排序*/ case 9:qseek(adr,length);break; /*快速查找记录*/ case 10:copy();break; /*复制文件*/ case 11:exit(0); /*如返回值为11则程序结束*/ menu_select() char s80; int c; gotoxy(1,25);/*将光标定为在第25行,第1列*/ printf(press any key enter menu.n);/*提示压任意键继续*/ getchar(); /*读入任意字符*/ system(cls); /*清屏*/

7、 gotoxy(1,1);printf(*MENU*nn); printf( 0. Enter recordn); printf( 1. List the filen); printf( 2. Search record on namen); printf( 3. Delete a recordn); printf( 4. add record n); printf( 5. Save the filen); printf( 6. Load the filen); printf( 7. display record on ordern); printf( 8. sort to make new

8、filen); printf( 9. Quick seek recordn); printf( 10. copy the file to new filen); printf( 11. Quitn);printf(*n); do printf(n Enter you choice(011):); /*提示输入选项*/ scanf(%s,s); /*输入选择项*/ c=atoi(s); /*将输入的字符串转化为整型数*/ while(c11); /*选择项不在011之间重输*/ return c; /*返回选择项,主程序根据该数调用相应的函数*/*输入记录,形参为结构体数组,函数值返回类型为整型

9、表示记录长度*/int enter(ADDRESS t) int i,n; system(cls); /*清屏*/ printf(nplease input num n); /*提示信息*/ scanf(%d,&n); /*输入记录数*/ printf(please input record n); /*提示输入记录*/ printf(name unit telephonen); printf(-n); for(i=0;in;i+) scanf(%s%s%s,ti.name,ti.units,ti.tele); /*输入记录*/ printf(-n); return n; /*返回记录条数*/

10、*显示记录,参数为记录数组和记录条数*/void list(ADDRESS t,int n) int i; system(cls); printf(nn*ADDRESS*n); printf(name unit telephonen); printf(-n); for(i=0;in-1) /*如果整数i值大于n-1,说明没找到*/ printf(not foundn); else print(ti); /*找到,调用显示函数显示记录*/*显示指定的一条记录*/void print(ADDRESS temp) system(cls); printf(nn*n); printf(name unit

11、 telephonen); printf(-n); printf(%-20s%-30s%-10sn,temp.name,temp.units,temp.tele);printf(*end*n);/*查找函数,参数为记录数组和记录条数以及姓名s */int find(ADDRESS t,int n,char *s) int i; for(i=0;in-1) /*如果in-1超过了数组的长度*/ printf(no found not deletedn); /*显示没找到要删除的记录*/ else print(ti); /*调用输出函数显示该条记录信息*/ printf(Are you sure

12、delete it(1/0)n); /*确认是否要删除*/ scanf(%d,&ch); /*输入一个整数0或1*/ if(ch=1) /*如果确认删除整数为1*/ for(j=i+1;j=i;j-) /*从最后一个结点开始向后移动一条*/ strcpy(tj+1.name,tj.name); /*当前记录的姓名拷贝到后一条*/ strcpy(tj+1.units,tj.units); /*当前记录的单位拷贝到后一条*/ strcpy(tj+1.tele,tj.tele); /*当前记录的电话拷贝到后一条*/ strcpy(ti.name,temp.name); /*将新插入记录的姓名拷贝到第

13、i个位置*/ strcpy(ti.units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/ strcpy(ti.tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/ n+; /*记录数加1*/ return n; /*返回记录数*/ /*保存函数,参数为结构体数组和记录数*/void save(ADDRESS t,int n) int i; FILE *fp; /*指向文件的指针*/、if(fp=fopen(record.txt,wb)=NULL) /*打开文件*/ printf(can not open filen);/*没打开*/ exit(

14、1); /*退出*/ printf(nSaving filen); /*输出提示信息*/ fprintf(fp,%d,n); /*将记录数写入文件*/ fprintf(fp,rn); /*将换行符号写入文件*/ for(i=0;in;i+) fprintf(fp,%-20s%-30s%-10s,ti.name,ti.units,ti.tele); fprintf(fp,rn); /*将换行符号写入文件*/ fclose(fp);/*关闭文件*/ printf(*save success*n); /*显示保存成功*/*读入函数,参数为结构体数组*/int load(ADDRESS t) int

15、i,n; FILE *fp; /*指向文件的指针*/ if(fp=fopen(record.txt,rb)=NULL)/*打开文件*/ printf(can not open filen); /*不能打开*/ exit(1); /*退出*/ fscanf(fp,%d,&n); /*读入记录数*/ for(i=0;i=0&idn) /*判断序号是否在记录范围内*/ fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/ print(tid); /*调用输出函数显示该记录*/ printf(rn); else printf(no %d number

16、 record!n ,id); /*如果序号不合理显示信息*/ fclose(fp); /*关闭文件*/*排序函数,参数为结构体数组和记录数*/void sort(ADDRESS t, int n) int i,j,flag; ADDRESS temp; /*临时变量做交换数据用*/ for(i=0;in;i+) flag=0; /*设标志判断是否发生过交换*/ for(j=0;j0) /*比较大小*/ flag=1; strcpy(temp.name,tj.name); /*交换记录*/ strcpy(temp.units,tj.units); strcpy(temp.tele,tj.tel

17、e); strcpy(tj.name,tj+1.name); strcpy(tj.units,tj+1.units); strcpy(tj.tele,tj+1.tele); strcpy(tj+1.name,temp.name); strcpy(tj+1.units,temp.units); strcpy(tj+1.tele,temp.tele); if(flag=0)break; /*如果标志为0,说明没有发生过交换循环结束*/ printf(sort sucess!n); /*显示排序成功*/*快速查找,参数为结构体数组和记录数*/void qseek(ADDRESS t,int n) c

18、har s20; int l,r,m; printf(nPlease sort before qseek!n); /*提示确认在查找之前,记录是否已排序*/ printf(please enter name for qseekn); /*提示输入*/ scanf(%s,s); /*输入待查找的姓名*/ l=0;r=n-1; /*设置左边界与右边界的初值*/ while(l=r) /*当左边界=右边界时*/ m=(l+r)/2; /*计算中间位置*/ if(strcmp(tm.name,s)=0) /*与中间结点姓名字段做比较判是否相等*/ print(tm); /*如果相等,则调用print函

19、数显示记录信息*/ return ; /*返回*/ if(strcmp(tm.name,s)r) /*如果左边界大于右边界时*/ printf(not foundn); /*显示没找到*/*复制文件*/void copy() char outfile20; /*目标文件名*/ int i,n; ADDRESS tempM; /*定义临时变量*/ FILE *sfp,*tfp; /*定义指向文件的指针*/ system(cls); /*清屏*/ if(sfp=fopen(record.txt,rb)=NULL) /*打开记录文件*/ printf(can not open filen); /*显

20、示不能打开文件信息*/ exit(1); /*退出*/ printf(Enter outfile name,for example c:f1te.txt:n); /*提示信息*/ scanf(%s,outfile); /*输入目标文件名*/ if(tfp=fopen(outfile,wb)=NULL) /*打开目标文件*/ printf(can not open filen); /*显示不能打开文件信息*/ exit(1); /*退出*/ fscanf(sfp,%d,&n); /*读出文件记录数*/ fprintf(tfp,%d,n);/*写入目标文件数*/ fprintf(tfp,rn); /*写入换行符*/ for(i=0;in;i+) fscanf(sfp,%20s%30s%10sn,tempi.name,tempi.units, tempi.tele); /*读入记录*/ fprintf(tfp,%-20s%-30s%-10sn,tempi.name, tempi.units,tempi.tele); /*写入记录*/ fprintf(tfp,rn); /*写入换行符*/

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

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