1、沈 阳 航 空 航 天 大 学课 程 设 计学 号 _ 班 级 _ _ 姓 名 _ _ _指导教师 _ _年 月 日沈阳航空航天大学设计用纸I目录一、需求分析 .1二、设计分析 .2三、主要界面截图 .7四、技术要点 .8五、个人总结 10六、参考文献 11七、源程序 11沈阳航空航天大学设计用纸1一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:录入新教材信息,添加已有教材,查找教材信息,保存教材函数。在这些函数当中,前三个函数的实现严格按照题目的要求,而最后一个函数用来将修改的函数保存在 book.txt 中。1.
2、稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。2. 主要功能分析(1)录入教材信息:允许用户输入教材名称、作者、出版社、教材册数、编号、售价。(2)查询教材: 允许按照编号和书名对教材的各项信息进行查询; (3)添加已有教材: 通过添加已有教材的同时对教沈阳航空航天大学设计用纸2材信息的更改;(4)保存教材函数 将执行插入教材信息存入book.txt 中。除上面介绍的功能之外,程序还具有退出功能,可以在输入修改信息之后实现选择退出。每一本教材记录都包含编号、作者、出版社、售价、书名和数量,在程序当中,将教材记录类型定义
3、为结构体类型,添加以及追加的教材信息直接写入 book.txt 文件中,其他函数每次对教材记录的访问,其数据来源都是 book.txt 文件,这样做不但可以保证教材数据的一致性,而且可以对教材数据进行保存,保证每次运行程序都可以采用原来的数据。二、设计分析主要有 5 个功能模块,每个模块对应一个 C 语言自定义函数。这些函数原型及其功能简述如下:1、 教材录入函数说明这个函数用 static 声明局部变量,使函数调用结束后不消沈阳航空航天大学设计用纸3失而保留原值。用只写的方式打开一个文件夹(book.txt)把数据项写入指定文件(book.txt)中。关闭文件。2、教材查询的函数该函数的核心
4、内容是 switch 函数的使用、for 函数的嵌套使用与 strcmp 比较字符串函数的使用。3、已有教材添加函数该函数的核心内容是 if 函数嵌套和 for 函数的使用以及strcmp 比较字符串函数的使用4、教材信息保存函数这个函数先建立一个文件并把具体的信息存入文件中1、程序总体结构图程序结构总图 设置界面函数新教材信息的录入教材信息的保存教材信息的查询教材信息的更改沈阳航空航天大学设计用纸42、具体功能框图(1)录入新教材信息函数沈阳航空航天大学设计用纸5(2)查询教材信息沈阳航空航天大学设计用纸6(3)添加已有教材信息(4)保存教材信息函数沈阳航空航天大学设计用纸7三、主要界面截图
5、图 1 程序主界面图 2 录入界面图 3 查询界面沈阳航空航天大学设计用纸8四、技术要点(对本程序贡献较大的 C 语言知识点;重要算法的设计与实现)1、结构体的应用定义了结构体用来描述教材的名称、作者、出版社、编号、册数和售价,具体的定义如下:#define B 1000 typedef struct Book char num20;char name20; char author20; char press20; int count; float shoujia;bookB;struct Book booksB;所定义的结构体主要用于定义数组。2、文件操作包括了文件的写入、读取和保存三个方面
6、。例如如下程序段用于保存教材信息:void save() int i = 0; FILE *fp;fp = fopen(“e:book.txt“, “wr“); while(booksi.count 0) 沈阳航空航天大学设计用纸9fprintf(fp, “教材名称:%s 教材作者:%s 出版社: %s 册数:%d编号:%s 售价:%fn“, booksi.name, booksi.author,booksi.press,booksi.count,booksi.num,booksi.shoujia); i+; fclose(fp); 3、关于查询函数实现从系统中查询某教材的相关信息的查询函数稍
7、微复杂一些,需要先进行选择是通过名称查询还是编号查询。如下是通过教材名称查询的函数:void chaxun() /*教材查询*/ FILE *fp;int i,flag=0; int a; char x32; char y32;if(fp=fopen(“e:book.txt“,“r“)=NULL)printf(“此文件无法打开!n“);return;printf(“请选择查询方式:1. 教材名 2.编号n“);scanf(“%d“,switch(a) case 1: printf(“输入教材名:n“);scanf(“%s“,x);for(i=0;i#include #include #defi
8、ne B 1000 typedef struct Book /*定义教材结构体*/ char num20;char name20; char author20; char press20; int count; float shoujia;bookB;struct Book booksB; void luru() /*录入教材信息*/static int i = 0; printf(“n 请输入教材名称:“);scanf(“%s“, booksi.name);printf(“请输入作者:“);scanf(“%s“, booksi.author);printf(“请输入出版社:“);scanf(
9、“%s“, booksi.press);printf(“请输入教材册数:“);沈阳航空航天大学设计用纸12scanf(“%d“, printf(“请输入编号:“);scanf(“%s“, booksi.num);printf(“请输入售价:“);scanf(“%f“, printf(“教材录入结束.n“);i+;void tianjia() /*教材添加*/ int i,count;char name10;printf(“n 请输入教材名称:“);scanf(“%s“,name);for(i=0;i 0) fprintf(fp, “教材名称: %s 教材作者:%s 出版社:%s 册数:%d 编
10、号:%s 售价:%fn“, 沈阳航空航天大学设计用纸13booksi.name, booksi.author,booksi.press,booksi.count,booksi.num,booksi.shoujia); i+; fclose(fp); void chaxun() /*教材查询*/ FILE *fp;int i,flag=0; int a; char x32; char y32;if(fp=fopen(“e:book.txt“,“r“)=NULL)printf(“此文件无法打开!n“);return;printf(“请选择查询方式:1.教材名 2.编号n“);scanf(“%d“,
11、switch(a) case 1: printf(“输入教材名:n“);scanf(“%s“,x);for(i=0;i1000;i+) if (strcmp(booksi.name,x)=0) /*比较输入名与存储名的字符串大小*/printf(“教材名:%s 教材作者:%s 出版社:%s 册数: %d 编号:%s 售价:%fn“,booksi.name,booksi.author,booksi.press,booksi.count,booksi.num,booksi.shoujia);flag=1;if(flag=0) printf(“此教材不存在n“);break;case 2: prin
12、tf(“输入编号:n“);scanf(“%s“,y);for(i=0;i1000;i+)if (strcmp(booksi.num,y)=0)printf(“教材名称:%s 教材作者:%s 出版社:%s 册数: %d 编号:%s 售价:%fn“,booksi.name,booksi.author,booksi.press,booksi.count,booksi.num,booksi.shoujia);沈阳航空航天大学设计用纸14flag=1;if(flag=0) printf(“此教材不存在n“);break;default:break;fclose(fp);void show() /*显示操
13、作界面*/printf(“n *沈阳航空航天大学教材管理系统* “);printf(“n * 1 录入教材信息 *“);printf(“n * 2 查询教材信息 *“);printf(“n * 3 更改教材信息 *“);printf(“n * 4 保存教材信息 *“);printf(“n * 5 退出系统 *n“);printf(“n 请输入您要选择的操作序号,按回车键确认:“);void main()int n;show(); scanf(“%d“,while (1)switch(n) case 1: luru(); break;case 2: chaxun(); break;case 3: tianjia(); break;case 4: save(); break;case 5: exit(0); break;default: break;show();scanf(“%d“, 沈阳航空航天大学设计用纸15FILE *fp;fp = fopen(“e:book.txt“, “r+“); if(fp=0) printf(“无法打开文件n“);fclose(fp);