计算机程序设计漫谈心得.docx
- 文档编号:9486938
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:31
- 大小:341.99KB
计算机程序设计漫谈心得.docx
《计算机程序设计漫谈心得.docx》由会员分享,可在线阅读,更多相关《计算机程序设计漫谈心得.docx(31页珍藏版)》请在冰点文库上搜索。
计算机程序设计漫谈心得
计算机程序漫谈与设计
题目:
序号:
姓名:
学号:
任课教师:
日期:
计算机程序设计漫谈心得
这学期选择了计算机程序设计与漫谈这门课程感觉收获很大。
上过了这个课程之后我不仅对计算机语言的发展过程有了一个大概的了解而且对程序设计有了一个更加深刻的认识,就是算法才是程序的灵魂而语言只不过是完成程序的工具。
要想学好编程的话不仅仅要好好掌握一门编程的语言更要学习好算法,对一些基本的数据结构像表,树,图都要深刻的掌握。
刚开始上课的时候,老师就告述我们让我很深刻的观念就是程序等于数据结构加上算法,而软件等于程序加上文档这让我更加深刻的认识到软件和程序的不同,再后来老师给我们讲解了计算机语言的发展过程,先是比较低级的语言像汇编语言,然后又逐渐产生了像C,c++,java和Pascal等的高级语言,这个历程让我明白了任何东西都是向更加实用,更加方便的方向发展,所以以后我们如果生产或者销售某件东西时一定要从它的实用性以及方便性上入手。
然后老师介绍了很多种程序的执行方法,很多面向对象的程序编写执行起来很方便,直接可以调用相关开发环境中的方法来生成一些组件。
这大大激发了我对编程和好好掌握某种编程工具的的兴趣。
不久我们学习了数据结构相关的知识,老师告述我们数据结构是数据的组成形式,而算法是解决问题的方法。
我们先后学习了链表,树和图等数据结构,在学习这些数据结构的过程中我逐渐明白了数据结构是编程的基础,只有学好数据结构以后才能在编程道路上走得更远,实际问题是很复杂的但是大都可以归结到数据结构中常用的几种类型,而且数据结构在充分使用计算机充分发挥计算机的性能上面有很大的作用。
所以我告诉自己一定要学习好数据结构的相关知识。
总之老师给我们上的数据结构课程对我影响很大。
在短短的几周中我们学习完了计算机程序设计漫谈的课程,虽然上课的时间很短但是我的收获却是巨大的。
我不仅了解到了编程语言的发展过程,而且明白了它们的发展规律,而且老师在思想层面上加深了我对程序,软件,算法的认识。
在数据结构的学习过程中加深了我对数据结构的掌握。
总之上这门课程让我获益匪浅。
图书馆管理系统程序设计
一、需求分析
经过计算机程序设计漫谈的学习,我们了解了顺序表,链表,树和图的数据结构知识,并通过在课下的查询资料我感觉到程序设计给我们的社会带来的巨大方便。
课程结束时我们利用已经学习过的知识,设计一个具有一定功能的图书管理系统。
这个图书管理系统,要求实现的功能有对图书信息的录入,浏览(输出),按某种方式查询(书名或姓名要求至少一种查询方式),按某种方式排序(价格或出版时间要求至少一种排序方式),删除,修改。
当然,我们可以根据自己的能力对系统进行拓展使它更加完善,例如自己加入简单的权限处理,报表打印功能,加入学生信息拓展为图书借阅系统统计功能,模糊查询等,综合查询,统计功能(统计某一类图书的信息)。
通过整个程序的开发过程,会加深我对课堂上学习的知识的理解,最终帮我们掌握利用计算机知识解决实际问题的思想和方法,熟悉程序设计过程,提高灵活应用所学的知识解决实际问题的能力,为以后的程序设计学习打好基础。
二、设计
(一)总体设计
开发一个图书信息管理系统,图书信息包括:
图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。
使之能提供以下基本功能:
1、图书信息录入功能(图书信息用文件保存)--输入
2、图书信息浏览功能--输出
3、查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
4、①按书名查询②按作者名查询
按照价钱排序
按出版时间排序等等
5、图书信息的删除与修改
(1)图书信息及系统总体结构
图书信息:
图书信息包括图书编号、图书书名、作者、出版社、图书类别、出版时间、图书价格。
系统总体结构:
主要采用单链表,文件,结构体实现对图书管理系统的操作。
(2)程序的整体框架
主菜单
1:
图书信息录入
2:
图书信息浏览:
3:
查询图书信息
4:
对图书排序
5:
删除图书信息
6:
修改图书
7:
添加图书
8:
统计图书信息
9:
模糊查询
其他:
退出
(3)总体流程图
(4)详细功能
1:
权限功能:
只有输入正确的密码后才能进入图书管理系统,否则退出
2:
图书信息录入:
(1):
从现有的文件中录入图书的编号,名字,作者名,出版社,类别,出版时间,价格
(2):
现场编写图书的信息录入系统
3:
图书信息浏览:
根据输入的书名查找那本图书,然后输出它的编号,名字、作者名、出版社,类别,出版时间,价格信息
4:
查询图书信息:
根据输入的书名或作者名查询图书的全部信息
5:
对图书排序:
经过选择后,根据图书姓名或价格给图书的信息排序
6:
删除图书信息:
根据输入的编号删除图书信息。
7:
修改图书信息:
根据输入的编号和要修改成的信息改变原来图书的信息
8:
添加图书:
输入一本书的信息后,将它的信息添加到图书管理系统中
9:
统计图书信息:
根据输入的图书类别统计某一类图书的信息
10录入文件功能:
将现有的图书信息直接输入到文件中或者将链表中的信息写入文件
11模糊查询功能:
根据的一个汉字,这个字若被包含在书名中,就输出书的信息
(二)详细设计
程序的主体设计思想是根据结构化程序设计思想分模块进行设计,有一个主函数并在主函数中调用各函数。
主函数先调用权限函数,然后要求使用者输入密码输入正确获得权限可继续,否者跳出,然后输出菜单,再用switch分支结构进行选择进入不同的分支来实现各项功能。
1、权限函数
定义一个标志变量flag让它的初值为0,用它来看输入者输入的密码是否正确,若正确令这个变量为1,并跳出for循环,返回函数值1;若输入3次密码还没对则返回函数值0,表示没有获得权限。
2、建立链表函数:
先让head=tail=NULL,在while循环中将将图书信息保存到p所指向的结点,若head==NULL,让head指针指向p;一个个节点上;若head!
=NULL,将p接在当前尾结点后面去,将图书信息保存到链表上(尾插法)。
3、保存图书信息函数
保存文件函数先以“w”方式,打开文件,并将文件地址赋给一个指针,然后在while循环中从头结点开始,不断将图书信息写到文件中,直至到了链表最后的结点,关闭文件。
4、录入图书信息函数:
调用创建链表函数和将链表的信息保存到文件的函数将链表中的图书信息保存,可以从文件中直接录入信息或者现场编写信息保存。
5、输出图书信息函数:
在链表中操作,先令p指向头结点,并不断后移,直至p所指的内容为空在此过程中不断将p所指向的内容输出。
6、查找图书信息函数:
先利用一个标志变量判断输入的编号是否存在,若不存在,结束这个函数,存在就让p指向头结点,并不断后移,在此过程中将p->num与输入的编号比较,当找到符合条件的图书时,将它的信息全部输出。
7、根据条件将系统中的图书进行排序函数
可以选择根据图书的价格或者图书的名字在链表中对系统中的图书进行排序,利用价格进行排序时利用两个for循环,里面的for循环循环一次找到图书价格最小的图书并用附设的snall指针指向它,外循环中每次将small所指向的图书信息与当前外循环中p所指向的图书信息进行交换,并让p指向下一个节点,外循环结束后就完成了对系统中的图书进行排序,利用书名进行排序时原理差不多只是比较的对象变成了字符串。
8、添加图书信息函数
先让p指针指向head结点,并不断后移直到指向最后一个结点,然后为p分配一个相应的内存空间,将要加入的图书信息存到p结点中,然后将p结点加到链表最后面,然后将新的链表信息保存到文件中。
9、删除图书信息函数
先定义一个标志变量flag,0表示输入的图书编号不正确,1表示输入的编号正确可以进行删除操作,先遍历整个链表将图书的编号存入数组中,然后将输入的编号与存入数组的编号比较,若相等则令flag=1;并跳出循环,然后指针后移查找到满足条件的图书,并将其其前后节点相连,并将它的信息完全删除,输入的编号不存在就输出“输入的编号不正确”,并结束这个函数的运行,最后将链表中的信息保存到文件中去。
10、修改图书信息函数
先判断输入的编号在图书管理系统中是否存在,若不存在就输出“输入的编号不正确”,并结束函数的运行;当编号存在时,先遍历链表找到满足条件的结点,并将它的信息修改为要改成的信息。
最后将链表中的信息保存到文件
11、统计某一类图书的信息函数
将链表中的种类名不断与输入的种类名比较,如果二者相同,就输出这本图书的信息,计数变量count加1,并令标志变量变为1;循环结束后,flag=0(初始时赋为0)表示没有与输入类别相符的图书,flag=1,表示有满足条件的书,count数量表示符合信息的书的本数。
12、根据关键字模糊查询图书信息
先将要查询的关键字保存在字符数组s中,在链表中从头结点开始循环,将每个节点的书名保存在c函数中,调用strstr函数,若数组s中的字符串在数组c中,就输出这本书的信息,否者继续循环。
#include
#include
#include
structbooknode{
intnum;
charbname[20];//书名
charwname[20];//作者
charpname[20];//出版社
charsort[20];//种类
inttime;
intprice;
structbooknode*next;
};
intsize=sizeof(structbooknode);
intquanxian();//权限函数
structbooknode*lurubook();//录入信息
structbooknode*createlist();//创建图书链表
voidsave(structbooknode*head);//保存为文件(覆盖以前信息)
voidsave1(structbooknode*p);//保存为文件(不覆盖以前信息)
structbooknode*save2();//从文件中读取信息并生成链表
structbooknode*deletebook(structbooknode*head,intnum);//删除图书信息
voidxiugaibook(structbooknode*head,intnum);//修改图书信息
voidtianjiabook(structbooknode*head);//添加图书信息
voidprintbook(structbooknode*head);//输出图书信息
voidseekbook(structbooknode*head,charbname[20]);//查找图书信息
voidorderbook(structbooknode*head);//给图书排序
voidtongjibookxinxi(structbooknode*head);//统计某一类图书信息
voidmohucahxun(structbooknode*head);//模糊查询(根据在书中的关键字)
intmain(void){//密码是tushuguan
structbooknode*head,*tail,*p;
head=tail=p=NULL;
intt,choice,num;
charbname[20];
t=quanxian();
if(t==0){
printf("你还没有权限。
\n");
return0;}
printf("*****************欢迎光临图书管理系统!
*******************\n");
printf("**************1:
录入图书2;输出图书信息****************\n");
printf("**************3:
查询图书信息4:
对图书排序******************\n");
printf("**************5:
删除图书6:
修改图书********************\n");
printf("**************7:
添加图书8:
统计图书信息****************\n");
printf("**************0:
退出9模糊**************************************\n");
do{
printf("Enterchoice:
");
scanf("%d",&choice);
switch(choice){
case1:
head=lurubook();break;
case2:
printbook(head);break;
case3:
printf("请输入书的名字:
");
scanf("%s",bname);
seekbook(head,bname);
break;
case4:
orderbook(head);
break;
case5:
printf("请输入要删除的书的编号:
");
scanf("%d",&num);
head=deletebook(head,num);
break;
case6:
printf("请输入要修改的书的编号:
");
scanf("%d",&num);
xiugaibook(head,num);
break;
case7:
tianjiabook(head);
break;
case8:
tongjibookxinxi(head);
break;
case9:
mohucahxun(head);
break;
default:
break;
}
}while(choice!
=0);
printf("谢谢使用!
");
return0;
}
intquanxian(){
inti=1,flag=0;
charmima[20],a[20];
strcpy(a,"tushuguan");
printf("你有三次输入密码的机会,只有输入正确才有权限:
\n");
for(i=1;i<=3;i++){
printf("请输入密码:
");
scanf("%s",mima);
if(strcmp(mima,a)==0){
flag=1;
printf("密码正确:
\n");
break;}
printf("你还有%d次机会\n",3-i);
}
if(flag==1)
return1;
else{
printf("你已连续三次输错密码,你没有获得权限");
return0;}
}
structbooknode*createlist(){
structbooknode*head,*p,*tail;
head=tail=NULL;
intnum,time,price;
charbname[20],wname[20],pname[20],sort[20];
intsize=sizeof(structbooknode);
printf("请输入编号,书名,作者名,出版社名,类别,出版时间,价格\n");
scanf("%d%s%s%s%s%d%d",&num,bname,wname,pname,sort,&time,&price);
while(num!
=0){
p=(structbooknode*)malloc(size);
p->num=num;
strcpy(p->bname,bname);
strcpy(p->wname,wname);
strcpy(p->pname,pname);
strcpy(p->sort,sort);
p->time=time;
p->price=price;
p->next=NULL;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
scanf("%d%s%s%s%s%d%d",&num,bname,wname,pname,sort,&time,&price);
}
returnhead;
}
voidsave(structbooknode*head){
FILE*fp;
structbooknode*p;
p=head;
if((fp=fopen("f1.txt","w"))==NULL){
printf("cannotopenthefile");
exit(0);
}
while(p!
=NULL){
fprintf(fp,"%d%s%s%s%s%d%d\n",p->num,p->bname,p->wname,p->pname,p->sort,p->time,p->price);
p=p->next;}
if(fclose(fp)){
printf("can'tclosethefile");
exit(0);}
}
voidsave1(structbooknode*p){
FILE*fp;
if((fp=fopen("f1.txt","a"))==NULL){
printf("cannotopenthefile");
exit(0);
}
fprintf(fp,"%d%s%s%s%s%d%d\n",p->num,p->bname,p->wname,p->pname,p->sort,p->time,p->price);
if(fclose(fp)){
printf("can'tclosethefile!
");
exit(0);}
}
structbooknode*save2(){
structbooknode*head,*tail,*p;
intnum;
charbname[20];//书名
charwname[20];//作者
charpname[20];//出版社
charsort[20];//种类
inttime;
intprice;
head=tail=NULL;
FILE*fp;
if((fp=fopen("f1.txt","r"))==NULL){
printf("cannotopenthefile");
exit(0);
}
while(!
feof(fp)){
fscanf(fp,"%d%s%s%s%s%d%d\n",&num,bname,wname,pname,sort,&time,&price);
p=(structbooknode*)malloc(size);
p->num=num;
strcpy(p->bname,bname);
strcpy(p->wname,wname);
strcpy(p->pname,pname);
strcpy(p->sort,sort);
p->time=time;
p->price=price;
p->next=NULL;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;}
if(fclose(fp)){
printf("can'tclosethefile!
");
exit(0);}
returnhead;
}
structbooknode*lurubook(){
structbooknode*head;
intchoice;
printf("1从文件中录入信息2现场编写后录入信息。
其他:
退出:
\n");
printf("Enterchoice:
");
scanf("%d",&choice);
switch(choice){
case1:
head=save2();break;
case2:
head=createlist();
save(head);break;
default:
break;}
returnhead;
}
voidprintbook(structbooknode*head){
structbooknode*temp;
for(temp=head;temp!
=NULL;temp=temp->next)
printf("%d%s%s%s%s%d%d\n",temp->num,temp->bname,temp->wname,temp->pname,temp->sort,temp->time,temp->price);
}
voidseekbook(structbooknode*head,char*bname){
structbooknode*temp;
intflag;
flag=0;
temp=head;
while(temp!
=NULL){
if(strcmp(bname,temp->bname)==0){
flag=1;
printf("%d%s%s%s%s%d%d\n",temp->num,temp->bname,temp->wname,temp->pname,temp->sort,temp->time,temp->price);
break;}
temp=temp->next;
}
if(flag==0)
printf("Nobook!
");
}
voidorderbook(structbooknode*head){
structbooknode*p,*q,*small,*a;
intprice,choice;
price=0;
a=(structbooknode*)malloc(size);
printf("1:
按价格排序2:
按书名排序");
scanf("%d",&choice);
switch(choice){
case1:
{for(p=head;p!
=NULL;p=p->next){
small=p;
for(q=p->next;q!
=NULL;q=q->next){
if(small->price>q->price)
small=q;
}
if(p!
=small){
{a->num=p->num;
strcpy(a->bname,p->bname);
strcpy(a->wname,p->wname);
strcpy(a->pname,p->pname);
strcpy(a->sort,p->sort);
a->time=p->time;
a->price=p->price;}
{p->num=small->num;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 程序设计 漫谈 心得