软件工程导论之编码设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*输出
/*p1不 /*p1后移 /*找到了 /*若p1为 /*否则将 /*输出删
getchar(); /*接收回车*/ p=Query(head,name); if(p==NULL) printf("Cannot Find %s\n",name); /*找不到结点*/ else {printf("Delete %s, Y/N?\n",name); ch=getchar(); system("pause"); if(ch=='y'||ch=='Y') while(p!=NULL) {head=Delete(head,name); /*删除所有与输入相同的记录*/ p=Query(head,name); } } return(head); } ·测试要求:运行正常。 M5查询模块 ·功能: 查询功能 ·性能: ·输入项:查询书名 ·输出项:相应书籍信息 ·算法: Book *Query(Book *head,char *name) { Book *p; p=head; while(strcmp(name,p->Name)!=0&&p->next!=NULL) p=p->next; if(strcmp(name,p->Name)==0) /*找到了,返回结点地址*/ return(p); else /*找不到返回空指针*/ return(NULL); } void Query_a_record(Book *head) { char name[20]; Book *p; scanf("%s",name); p=Query(head,name); if(p!=NULL) /*找到了*/
p1=head; while(strcmp(p1->Name,name)!=0&&p1->next!=NULL) /*p1不是 要找的结点,且后面还有结点*/ {p1=p1->next;} /*p1后移一个结 点*/ if(strcmp(p1->Name,name)==0) /*找到了 */ p1->borrow=p1->borrow-sum; p1->left=p1->left+sum; return(head); } ·测试要求:运行正常。 M9读入模块 ·功能:从文件读入信息 ·性能: ·输入项:文件名 ·输出项:成功提示 ·算法: Book *AddfromText(Book *head,char *filename) { FILE *fp; int n,i; if((fp=fopen(filename,"r"))==NULL) {printf("Cannot find file:%s\n",filename); /*打不开所指定 文件*/ return(head);} fscanf(fp,"%d",&n); /*待插入记录个数*/ for(i=0;i<n;i++) {Book *p; p=(Book *)malloc(LEN); fgetc(fp); /*读取换行符*/ fscanf(fp,"%s%d%d%d",p->Name,&p->all,&p->left,&p->borrow); head=Insert(head,p); /*插入结点*/ } printf("Add from %s successfully\n",filename); fclose(fp); return(head); }
{ printf("Find successfully\n%s total:%d left:%d borrow:%d\n", p->Name,p->all,p->left,p->borrow); } else printf("Can't find the records of %s\n",name); /*找不到*/ } ·测试要求:运行正常。 M6显示功能 ·功能: 显示所有信息 ·性能: ·输入项:相应的菜单序号 ·输出项:所有书籍信息 ·算法: void Display(Book *head) { Book *p; int i; p=head; printf("Num BookName Total Left Borrow\n"); for(i=1;p!=NULL;i++) { printf("%-5d%-14s%-10d%-10d%-5d\n", i,p->Name,p->all,p->left,p->borrow); p=p->next; if(i%10==0) {system("pause"); /*按回车翻页显示*/ printf("Num BookName total left borrow\n"); } } ·测试要求:运行正常。 M7借出模块 ·功能:借出书籍 ·性能: ·输入项:所借书名 数量 ·输出项:成功信息 ·算法: Book *Borrow_a_Book(Book *head) { char name[20],ch;
} ·测试要求:运行正常。 M3插入模块 ·功能:插入新信息 ·性能: ·输入项:书名 数量 ·输出项:成功提示 ·算法: Book *Insert(Book *head,Book *s) /*插入 结点的函数*/ { Book *p0,*p1,*p2; p1=head;p0=s; /*使p1指向第 一个结点,p0指向要插入的结点*/ if(head==NULL) /*原来的链表 是空表*/ {head=p0;p0->next=NULL;} /*使p0作为首 结点*/ while(strcmp(p0->Name,p1->Name)>0&&(p1->next!=NULL)) {p2=p1; p1=p1->next; } if(strcmp(p0->Name,p1->Name)<=0) {p0->next=p1; if(head==p1) head=p0; else p2->next=p0; } else {p1->next=p0; p0->next=NULL; } return(head); } Book *Insert_a_record(Book *head) { Book *newrecord; newrecord=(Book *)malloc(LEN); /*动态分配存 储空间*/ scanf("%s%d",newrecord->Name,&newrecord->all); newrecord->borrow=0;
软件工程导论 题目:图书管理系统 文档名称:编码设计
班级:科技0801 项目组长:唐子龙 项目成员: 唐子龙(05082019) 朱磊(05082025) 赵欣(05082023) 刘华琛(05082004) 编码设计
1.根本任务
依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具 体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出 对目标系统的精确描述,具体来说就是把经过总体设计得到的各个模块 详细的加以描述。 2、总体设计 需求概述 录入功能: 输入相关数据 浏览功能: 以列表方式列出所有记录信息 信息查询功能: 根据书名匹配查询,并将查询结果列出 借出归还功能: 根据借出与归还的书籍信息修改相应数据 插入与删除功能:插入一条新的图书信息,删除某图书的信息 与读入功能:将输入文件进行备份和从指定文件读入数据 设置访问权限功能:只有输入正确密码才可以进行操作 否则无权操作 系统结构图
newrecord->left=newrecord->all; head=Insert(head,newrecord); printf("Insert successfully\n"); 插入成功的信息*/ return(head); } ·测试要求:运行正常。 删除模块 ·功能:删除信息 ·性能: ·输入项:所删书名 ·输出项:成功提示 ·算法: Book *Delete(Book *head,char *name) { Book *p1,*p2; if(head==NULL) printf("Sorry No record!\n"); p1=head; while(strcmp(p1->Name,name)!=0&&p1->next!=NULL) 是要找的结点,且后面还有结点*/ {p2=p1;p1=p1->next;} 一个结点*/ if(strcmp(p1->Name,name)==0) */ {if(p1==head)head=p1->next; 首指针,使下一结点为首指针*/ else {p2->next=p1->next; 下一结点地址赋给前一结点地址*/ printf("delete %s successfully\n",name);} 除成功的信息*/ } return(head); } Book *Delete_a_record(Book *head) { char name[20],ch; Book *p; scanf("%s",name);
int n; Book *p; scanf("%s%d",name,&n); getc百度文库ar(); /*接收回车*/ p=Query(head,name); if(p==NULL) printf("Cannot Find %s\n",name); /*找不到结点*/ else printf("Are you sure to borrow? %s, Y/N?\n",name); ch=getchar(); system("pause"); if(ch=='y'||ch=='Y') head=Borrow(head,name,n); return(head); } ·测试要求:运行正常。 M8归还模块 ·功能:归还书籍 ·性能: ·输入项:所换书名 数量 ·输出项:成功提示 ·算法: Book *Return_a_Book(Book *head) { char name[20],ch; int n; Book *p; scanf("%s%d",name,&n); getchar(); /*接收回车*/ p=Query(head,name); if(p==NULL) printf("Cannot Find %s\n",name); /*找不到结点*/ else printf("Are you sure to return? %s, Y/N?\n",name); ch=getchar(); system("pause"); if(ch=='y'||ch=='Y') head=Return(head,name,n); return(head); } Book *Return(Book *head,char *name,int sum) { Book *p1;
3、程序描述 M1身份验证
·功能:验证身份 ·性能: ·输入项:预设密码 ·输出项:欢迎语句 ·算法: int keyword=111,a; printf("Please input keyword:"); scanf("%d",&a); if(a!=keyword) exit(0); else printf("Welcome!"); ·测试要求:运行正常。 M2主菜单模块 ·功能:选择功能 ·性能: ·输入项:数字0-9 ·输出项:对应功能项 ·算法: int Display_MainMenu() /*显示菜单的函数*/ {char x; do{ system("cls"); printf("************************\n"); printf("1.Create BookList\n"); printf("2.Display All Books\n"); printf("3.Insert a BookInformation\n"); printf("4.Delete a Book\n"); printf("5.Borrow a Book\n"); printf("6.Return a Book\n"); printf("7.Query\n"); printf("8.Add Records From a File\n"); printf("9.Write to a File\n"); printf("0.Goodbye\n"); printf("************************\n"); printf("Please choose from 0-9:"); printf("\n"); x=getchar(); }while(x<'0'||x>'9'); return(x-'0');