C语言程序设计报告(菜单+源码+测试).docx_第1页
C语言程序设计报告(菜单+源码+测试).docx_第2页
C语言程序设计报告(菜单+源码+测试).docx_第3页
C语言程序设计报告(菜单+源码+测试).docx_第4页
C语言程序设计报告(菜单+源码+测试).docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一:系统功能基本功能:图书的录入,删除,查找,和导入导出等。图书属性:书号,书名,第一作者,版次,出版年等。菜单功能:1. Input Records(输入若干条记录)从键盘一次输入一本书的信息,存放到结构体数组中,然后显示。提示信息,确认是否输入下一条记录。2. Display All Records(显示所有记录)按顺序显示所有记录,每屏显示10条记录,按键继续显示下一屏。3. Delete a Record(按书名查找,删除一本书)输入待删除书的书名,显示该书名的所有书目,提示输入待删除书目的书号,提示是否删除,确认后,删除该书。4. Sort(排序)以书名为升序排列数组5. Insert a record(插入一条记录)以书名为序排列的数组中插入一条记录,插入后,数组仍然有序。输出插入成功后的信息。6. Query(查找并显示一个记录)输入书名,查找并显示包含该书名的所有图书信息7. Add Records from a Text File(从文件读入图书信息到结构体数组中)用户可事先建立一个文本文件Dictory.txt。存放所有图书信息,文件格式如下:21182高等数学刘浩荣 5 同济大学出版社 20137300 物理化学王德明 2 化学工业出版社 20158. Write to a Text File将数组中的全部记录写入文件Records.txt中,要求格式与Dictory.txt相同。0. Quit(退出图书管理系统)新增加菜单功能:9. Change a record修改某一条记录的值a. Menu显示菜单b. Clear Screen清屏c. Pause按暂停,按任意键继续二:数据结构Typedef structchar ISBN10;/书号char book30;/书名char author20;/作者Int edition;/版本号char press50;/出版社名int year;/出版年Bookinfo;三:函数调用关系Write_to_Text()Display_main_menu()Change_a_record()Delete()Sort_by_name()Insert()Insert_a_record()AddfromText()Delete_a_record()Display()Query()Query_a_record()Input()main四:主要算法及实现i=0语句Bn+1是是是否否否b=strcmp(*s).book,dictListi.book)=0c=strcmp(*s).book,dictListi+1.book)i+1j=nb&cin-1i=0插入算法排序算法结束否否是否否是是是p=j语句Ai+j+j0P!=ip=ij=i+1in-1i=0开始b=strcmp(dictListp.book,dictListj.book)语句A:t = dictListp; dictListp = dictListi; dictListi = t;五:源程序(含注释)#include#include#include#define NUM 100typedef struct /定义结构体数组 char ISBN10; /书号 char book30; /书名 char author20; /作者 int edition; /版本号 char press50; /出版社名 int year; /出版年Bookinfo;int Input(Bookinfo dictList,int n) /从键盘输入数据,存入结构体数组dictList char c1,c2; do c1=getchar(); printf(Please input ISBN:n); gets(dictListn.ISBN); printf(Please input book:n); gets(dictListn.book); printf(Please input author:n); gets(dictListn.author); printf(Please input press:n); gets(dictListn.press); printf(Please input edition:n); scanf(%d,&dictListn.edition); printf(Please input year:n); scanf(%d,&dictListn.year); n+=1; printf(是否输入下一条?确认(y)|取消(n)n);/提示信息 c1=getchar(); while(c2=getchar()=y); return(n); /返回值为新的记录数量void Display(Bookinfo dictList,int n) /显示所有记录,每10个暂停一次,输入回车继续显示 int i=0,j; char input,c;printf(%-10s%-23s%-18s%-8s%-15s%-4sn,ISBN,book,author,edition,press,year); c=getchar(); do j=10; /每10个循环一次 do printf(%-10s%-23s%-18s%-8d%-15s%-4dn,dictListi.ISBN,dictListi.book,dictListi.author,dictListi.edition,dictListi.press,dictListi.year); i+; j-; while(j & in); if(i=n) break; /若数据全部输出,则跳出循环, scanf(%c,&input); while(input=n); /输入回车,执行循环int delete(Bookinfo dictList,int n,char *ISBN) /只删除书号为ISBN的第一条记录 int i,j; for(i=0;in;i+) if(!strcmp(dictListi.ISBN,ISBN) /strcmp()函数判断两个字符串是否相等 for(j=i;jn-1;j+) dictListj=dictListj+1; /将目标值右面的数据全部左移一位 return(n-1);/删除后记录数减少1 return(n);int Delete_a_record(Bookinfo dictList,int n)/删除某一条记录 int i,j=0; char book30,isbn10,s,c; c=getchar(); printf(请输入待删除的书目的书名n); gets(book); /获取书名字符串 printf(%-10s%-23s%-18s%-8s%-15s%-4sn,ISBN,book,author,edition,press,year); for(i=0;i0) printf(请输入待删除的书目的书号n); gets(isbn); /获取要删除的数据的书号 printf(确实要删除该记录?是(y)|否(n)n); /提示删除 if(s=getchar()=y) for(i=0;in;i+) if(!strcmp(dictListi.ISBN,isbn) /调用delete函数删除 printf(删除成功!n); return(delete(dictList,n,dictListi.ISBN); printf(未找到待删除记录!n); /删除成功后记录减1 else printf(已取消删除!n); /取消删除后记录数不变 return n; else printf(未找到待删除记录!n);void Sort_by_name(Bookinfo dictList,int n)/选择法按书名升序排列 int i,j,p; Bookinfo t; for(i = 0;in-1;i+) p=i; for(j=i+1;j0) p=j; if(p!=i) t = dictListp; dictListp = dictListi; dictListi = t; int insert(Bookinfo dictList,int n,Bookinfo *s)/按书名顺序插入记录 int i,j; Sort_by_name(dictList,n); for(i=0;in-1;i+) if(strcmp(*s).book,dictList0.book)0;j-) dictListj=dictListj-1; dictList0=*s; return(n+1); else if(strcmp(*s).book,dictListi.book)=0 & strcmp(*s).book,dictListi+1.book)i+1;j-) dictListj=dictListj-1; dictListi+1=*s; /放在i和i+1之间或者放在最后一个 return(n+1); dictListn=*s; return(n+1);int Insert_a_record(Bookinfo dictList,int n)/出现问题,调用该函数时总是全部显示记录? int k; char c; Bookinfo s; /输入数据 c=getchar(); printf(Please input ISBN:n); gets(s.ISBN); printf(Please input book:n); gets(s.book); printf(Please input author:n); gets(s.author); printf(Please input press:n); gets(s.press); printf(Please input edition:n); scanf(%d,&s.edition); printf(Please input year:n); scanf(%d,&s.year); k=insert(dictList,n,&s); /根据insert的返回值是否大于n判断插入成功与否 if(kn) printf(插入成功!n); return(k); else printf(插入失败!n); return(n); int Query(Bookinfo dictList,int n,char *book)/查询并显示书名为book的记录 int i,count=0; printf(%-10s%-23s%-18s%-8s%-15s%-4sn,ISBN,book,author,edition,press,year); for(i=0;i0) printf(共找到%d条记录n,i); /若查到数据,Query函数的返回值为正数 else printf(未找到所查找的记录n);int AddfromText(Bookinfo dictList,int n,char *filename)int i; Bookinfo s;FILE *p; p=fopen(filename,r); fscanf(p,%d,&i); /先读取文件第一行的记录数 while(i-) fscanf(p,%s%s%s%d%s%dn,s.ISBN,s.book,s.author,&s.edition,s.press,&s.year); /读取记录的具体值 n=insert(dictList,n,&s); /插入到dictList数组中 fclose(p); printf(读取成功!n); return(n);void WritetoText(Bookinfo dictList,int n,char *filename) FILE *p2;int i; p2=fopen(filename,w); for(i=0;i0)/确认找到待修改记录 printf(共找到%d条记录n请输入待修改图书的书号n,i); gets(ISBN); for(i=0;in;i+) if(!strcmp(dictListi.ISBN,ISBN) printf(请更新书号为%s的图书数据n,ISBN);/开始修改 printf(Please input ISBN:n); gets(dictListi.ISBN); printf(Please input book:n); gets(dictListi.book); printf(Please input author:n); gets(dictListi.author); printf(Please input press:n); gets(dictListi.press); printf(Please input edition:n); scanf(%d,&dictListi.edition); printf(Please input year:n); scanf(%d,&dictListi.year); printf(修改完成!n); else printf(未找到相关记录n);main() static int n=12; char filename130,filename230,c; /创建初始结构体数组,应不少于十个 Bookinfo booksNUM= 97814842,python Language,gnus Lie land,2,Berkeley,2014, 97871190,history of Chinese,Goa qua,2,Beijing,2009, 97814129,public communication,Ronald E.Rice,3,London,2013, 97836422,cultural composition,Yang Pan,2,pardon,2012, 97801240,analyzing the social,Jennifer beck,1,Walt,2013, 78016958,recored servicing,Scottish Qua,1,Chinese,2004, 01354851,management guide,Ferdinand K. Levy,1,Englewood,1969, 1096-424,macroeconomics,Dusk ,2,Gog,1977, 04448649,competitive economics,Ki Hang Kim,2,Amsterdam,1983, 08531419,guide to banking,Robin Pr,7,London,1973, 01311606,guide to banking,Jerry S.Rosen,2,Englewood,1972, 97875100,dirt pricing dynamic,Pamela La,1,World book,2013; Display_main_menu(); /显示菜单 while(c=getchar() /持续获取输入,并用switch语句调用相应函数 switch(c) case 0:exit(1);break; case 1:n=Input(books,n);break; case 2:Display(books,n);break; case 3:n=Delete_a_record(books,n);break; case 4:Sort_by_name(books,n);break; case 5:n=Insert_a_record(books,n);break; case 6:Query_a_record(books,n);break; case 7: printf(请输入文件名n); scanf(%s,filename1); n=AddfromText(books,n,filename1); break; case 8: printf(请输入文件名n); scanf(%s,filename2); WritetoText(books,n,filename2); break; case 9:Change_a_record(books,n);break; case a:Display_main_menu();break; case b:system(cls);break; case c:system(pause);break; 六:程序执行(包含典型测试数据)-1.Input records2.Display All Records3.Delete a Record4.sort5.Insert a Record6.Query7.Add Records from a Text File8.Write to a Text File9.Change a record0.QuitTIPS a.Menu b.Clear Screen c.Pause-Give your choice:1Please input ISBN:4296Please input book:明朝那些事Please input author:当年明月Please input press:浙江出版社Please input edition:2Please input year:2011是否输入下一条?确认(y)|取消(n)n2ISBN book author edition press year97814842 python Language gnus Lie land 2 Berkeley 201497871190 history of Chinese Goa qua 2 Beijing 200997814129 public communication Ronald E.Rice 3 London 201397836422 cultural composition Yang Pan 2 pardon 201297801240 analyzing the social Jennifer beck 1 Walt 201378016958 recored servicing Scottish Qua 1 Chinese 200401354851 management guide Ferdinand K. Levy 1 Englewood 19691096-424 macroeconomics Dusk 2 Gog 197704448649 competitive economics Ki Hang Kim 2 Amsterdam 198308531419 guide to banking Robin Pr 7 London 197301311606 guide to banking Jerry S.Rosen 2 Englewood 197297875100 dirt pricing dynamic Pamela La 1 World book 20134296 明朝那些事当年明月 2 浙江出版社 20113请输入待删除的书目的书名明朝那些事ISBN book author edition press year4296 明朝那些事当年明月 2 浙江出版社 2011请输入待删除的书目的书号4296确实要删除该记录?是(y)|否(n)y删除成功!42ISBN book author edition press year97801240 analyzing the social Jennifer beck 1 Walt 201304448649 competitive economics Ki Hang Kim 2 Amsterdam 198397836422 cultural composition Yang Pan 2 pardon 201297875100 dirt pricing dynamic Pamela La 1 World book 201308531419 guide to banking Robin Pr 7 London 197301311606 guide to banking Jerry S.Rosen 2 Englewood 197297871190 history of Chinese Goa qua 2 Beijing 20091096-424 macroeconomics Dusk 2 Gog 197701354851 management guide Ferdinand K. Levy 1 Englewood 196997814129 public communication Ronald E.Rice 3 London 201397814842 python Language gnus Lie land 2 Berkeley 201478016958 recored servicing Scottish Qua 1 Chinese 20045Please input ISBN:84772281Please input book:english learningPlease input author:tomPlease input press:AllaPlease input edition:2Please input year:2016插入成功!6请输入待查找的书名recored servicingISBN book author edition press year78016958 recored servicing Scottish Qua 1 Chinese 2004共找到1条记录7请输入文件名Dictory.txt读取成功!2ISBN book author edition press year97801240 analyzing the social Jennifer beck 1 Walt 201304448649 competitive ec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论