C语言课程设计 读者信息管理系统.doc

上传人:精*** 文档编号:865383 上传时间:2023-10-05 格式:DOC 页数:24 大小:288.26KB
下载 相关 举报
C语言课程设计 读者信息管理系统.doc_第1页
第1页 / 共24页
C语言课程设计 读者信息管理系统.doc_第2页
第2页 / 共24页
C语言课程设计 读者信息管理系统.doc_第3页
第3页 / 共24页
C语言课程设计 读者信息管理系统.doc_第4页
第4页 / 共24页
C语言课程设计 读者信息管理系统.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、通信工程C语言强化训练实验报告目录读者信息管理程序11、 强化训练目的12、 设计题目功能13、 设计题目要求14、 程序流程图25、主要代码106、 强化训练心得体会23读者信息管理程序1、 强化训练目的a) C语言基本知识的巩固和综合运用。基本数据类型、基本控制结构、数组、指针、函数、结构体和共用体。b) C语言高级编程。链表基本操作、文件的基本操作、图形和声音制作。c) 程序的结构化设计。d) 编辑、设置、编译、调试、执行。e) C语言结合实际问题的综合设计。2、 设计题目功能通过计算机对数据文件的存储和读取,实现对读者信息进行存储和管理,以及完成读者信息的增、删、改、查找等功能。3、

2、设计题目要求 读者信息至少包括学号、姓名、读者等级、借阅书刊编号、到期日期等基本信息。要求: 1有主界面和主菜单 2用链表存放读者信息 3可以实现按学号、姓名查询和统计并在屏幕上输出查询结果 4友好的界面和操作提示A信息录入 D信息删除F信息查询Q退出4、 程序流程图传统流程图:菜单函数录入信息显示信息查找信息删除信息存储信息读取信息 录入信息 显示信息 查询信息 删除信息5、主要代码#include StdAfx.h#include /*头文件*/#include#include /*其它说明*/#include /*字符串函数*/#include /*内存操作函数*/#include /*

3、字符操作函数*/#include /*动态地址分配函数*/#include #define LEN sizeof(STUDENT)FILE *fp;typedef struct Dayint year;int mon;int day; DAY;typedef struct stu /*定义结构体数组用于缓存数据*/ char num9; char name9; char sex3; char level2;char serialnum9; DAY lendnum; struct stu *next;STUDENT;STUDENT *p;STUDENT *init(); /*初始化函数*/int

4、 menu_select(); /*菜单函数*/STUDENT *create(); /*创建链表*/void print(STUDENT *head); /* 显示全部记录*/void search(STUDENT *head); /*查找记录*/STUDENT *del(STUDENT *head); /*删除记录*/STUDENT *sort(STUDENT *head); /*排序*/void save(STUDENT *head); /*保存文件*/STUDENT *load(); /*读文件*/void main() STUDENT *head; head=init(); /*链表

5、初始化,使head的值为NULL*/ for(;) /*循环无限次*/ switch(menu_select() case 1:head=create();break; case 2:print(head);break; case 3:search(head);break; case 4:head=del(head);break; case 5:save(head);break; case 6:head=load(); break; case 7:exit(0); /*如菜单返回值为7则程序结束*/ STUDENT *init() /*初始化函数*/ return NULL; /*返回空指针*

6、/menu_select() /*菜单选择函数*/int n; printf(n); printf( n); printf( n); printf( * * 读 者 信 息 管 理 * * n); printf( n); printf( made by ChengTingTing n); printf( n); printf( n); printf( n); printf( 1、录入读者信息 2、显示读者信息 n); printf( n); printf( 3、查询读者信息 4、删除读者信息 n); printf( n); printf( 5、保存读者信息 6、读取读者信息 n); print

7、f( n); printf( 7退出系统 n); printf( n); printf( n); /用户界面 printf(n); printf( 请选择您需要的操作序号(1-7)并按回车确认:); do scanf(%d,&n); while(n7); /*如果选择项不在17之间则重输*/ return(n); /*返回选择项,主函数根据该数调用相应的函数*/ STUDENT *create()STUDENT *head=NULL,*p; /* 定义函数.此函数带回一个指向链表头的指针*/ char ch; system(cls); for(;) p=(STUDENT *)malloc(LE

8、N); /*开辟一个新的单元*/ fp=fopen(40906.dat,ab); fwrite(&p,sizeof(struct stu),1,fp); if(!p) /*如果指针p为空*/ printf(n内存溢出.); /*输出内存溢出*/ return (head); /*返回头指针,下同*/ printf(请输入学号(0:list end):); /*提示输入学号*/ scanf(%s,&p-num); printf(请输入姓名:); scanf(%s,&p-name); printf(请输入性别:); /*提示开始输入性别*/ scanf(%s,&p-sex); printf(请输入

9、读者等级:); scanf(%s,&p-level); printf(请输入借阅书刊编号:); scanf(%s,&p-serialnum); printf(请输入借阅书刊到期时间(YYYY-MM-DD):); scanf(%d-%d-%d,&p-lendnum.year,&p-lendnum.mon,&p-lendnum.day); p-next=head; /*将头结点做为新输入结点的后继结点*/ head=p; /*新输入结点为新的头结点*/ printf(n是否继续输入?Y/Nn); scanf(%s,&ch); if(ch=N|ch=n) return(head); getchar(

10、); fclose(fp);/*显示函数*/void print(STUDENT *head)fp=fopen(40906.dat,r);fread(&p,sizeof(struct stu),1,fp);int i=0; /* 统计记录条数*/ STUDENT *p; /*移动指针*/ system(cls); p=head; /*初值为头指针*/ printf(n*STUDENT*n); printf(-n); printf(| 序号 | 学号 | 姓名 | 性别 | 等级 | 书刊编号 | 到期日期|n); printf(-n); while(p!=NULL) i+; printf(|

11、%3d | %4s | %-4s | %3s | %3s | %-4s | %4d-%2d-%2d|n, i, p-num,p-name,p-sex,p-level,p-serialnum,p-lendnum.year,p-lendnum.mon,p-lendnum.day); p=p-next; printf(-n); printf(*END*n); getchar();/*等待用户输入回车显示返回菜单命令*/printf(按回车键返回主菜单!);getchar();/*等待用户查看命令,按回车键返回*/fclose(fp);/*关闭文件*/void search(STUDENT *head

12、) fp=fopen(40906.dat,r); fread(&p,sizeof(struct stu),1,fp);char type;char *no; char s9=0; system(cls); STUDENT *p; /* 移动指针*/ p=head;if (p=NULL)printf(请先录入学生信息n);return;printf(请选择查询方式(1、按学号n2、按姓名):);scanf(%d,&type);if (type=1)printf(请输入学号:); scanf(%s,&no);while (p)if (strcmp(p-num,no)=0)print(p);retu

13、rn;p=p-next;printf(没有找到该学号学生信息n);return;else if (type=2)printf(请输入学生姓名:);fflush(stdin);gets(s);while (p)if (strcmp(p-name,s)=0)print(p);return;p=p-next;printf(没有找到该学生信息n);return;STUDENT *del(STUDENT *head) fp=fopen(40906.dat,r); fread(&p,sizeof(struct stu),1,fp); int n; STUDENT *p,*p2; /*p为查找到要删除的结点

14、指针,p2为其前驱指针*/ char c,s9; /*s9用来存放学号*/p=head-next;/*给p和p2赋初值头指针*/p2=head; system(cls); printf(请输入要删除的学号: ); scanf(%s,s);while(p&p-num!=s) p2=p; p=p-next; if(p-num=s) /*学号找到了*/ printf(*FOUND*n); printf(-n); printf(| 学号 | 姓名 | 性别 | 等级 | 书刊编号 | 到期日期|n); printf(-n); printf(-n); printf(|%4s | %-4s | %3s |

15、 %3s | %-4s | %4d-%2d-%2d|n, p-num,p-name,p-sex,p-level,p-serialnum,p-lendnum.year,p-lendnum.mon,p-lendnum.day); printf(-n); printf(确定删除该读者吗 Y/N ?); /*提示是否要删除,输入Y删除,N则退出*/ for(;) scanf(%c,&c); if(c=n|c=N) break; /*如果不删除,则跳出本循环*/ if(c=y|c=Y) if(p=head) /*若p=head,说明被删结点是首结点*/ head=p-next; /*把第二个结点地址赋予

16、head*/ else p2-next=p-next; /*否则将一下结点地址赋给前一结点地址*/ n=n-1; printf(n该读者已被删除.n); printf(不要忘记储存.n);break; /*删除后就跳出循环*/ else printf(n信息表中没有该读者.n); /*找不到该结点*/ return(head); getchar(); printf(按回车键返回主菜单!); getchar(); fclose(fp);void save(STUDENT *head) FILE *fp; /*定义指向文件的指针*/ STUDENT *p; /* 定义移动指针*/ if(fp=fo

17、pen(40906.dat,wb)=NULL) /*为输出打开一个二进制文件,为只写方式*/ printf(Cannot open the filen); return; /*若打不开则返回菜单*/ printf(nSaving the file.n); p=head; /*移动指针从头指针开始*/ while(p!=NULL) /*如p不为空*/ fwrite(&p,LEN,1,fp); /*写入一条记录*/ p=p-next; /*指针后移*/ fclose(fp); /*关闭文件*/ printf(Save the file successfully!n); getchar();/*等待

18、用户输入回车显示返回菜单命令*/ printf(按回车键返回主菜单!); getchar();/*等待用户查看命令,按回车键返回*/STUDENT *load() STUDENT *p1,*p2,*head=NULL; /*定义记录指针变量*/ FILE *fp; /* 定义指向文件的指针*/ if(fp=fopen(40906.dat,rb)=NULL) /*打开一个二进制文件,为只读方式*/ printf(Can not open the file.n); return(head); printf(nLoading the file!n); p1=(STUDENT *)malloc(LEN

19、); /*开辟一个新单元*/ if(!p1) printf(Out of memory!n); return(head); head=p1; /*申请到空间,将其作为头指针*/ while(!feof(fp) /*循环读数据直到文件尾结束*/ if(fread(p1,LEN,1,fp)!=1) break; /*如果没读到数据,跳出循环*/ p1-next=(STUDENT *)malloc(LEN); /*为下一个结点开辟空间*/ if(!p1-next) printf(Out of memory!n); return (head); p2=p1; /*使p2指向刚才p1指向的结点*/ p1

20、=p1-next; /*指针后移,新读入数据链到当前表尾*/ p2-next=NULL; /*最后一个结点的后继指针为空*/ fclose(fp); printf(You have success to read data from the file!n); return (head); getchar(); printf(按回车键返回主菜单!); getchar();6、 强化训练心得体会 通过此次的课程设计,我对C语言又有了更加全面、更加系统、更加深刻的认识特别是对于链表,结构体,结构体数组,结构体数组指针,switch语句,strcmp函数,文件的创建,打开及使用,main函数对于其它函数的调用,main函数的主体作用以及统筹功能,都有了一个比较较直观,比较形象的认识,以前思维中的模糊地代码一下子变得清晰和形象了。并且我还充分体会到了从事软件的开发工作需要特别严谨认真的态度,一点都马虎不得。对待每一个细节都需高度的认真,否则会使后面的程序接连错误,对后面的工作影响很大,甚至可能会重新来做。在设计程序的工程中,还要能够解决一些问题,当我不能独自解决时,我会先寻找资料或与组员讨论,再向他人寻求解决方法。 系统的最终测试达到了良好的效果,编程思路清晰,界面操作简单,功能较为完善。这次的C语言的课程设计,是我能更好地运用自己已学过的知识,为我将来的学习打下了坚实的基础。 24

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922