C语言课程设计——教材管理系统

  • 格式:doc
  • 大小:161.00 KB
  • 文档页数:17

下载文档原格式

  / 17
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

一、需求分析 (1)

二、设计分析 (2)

三、主要界面截图 (7)

四、技术要点 (8)

五、个人总结 (10)

六、参考文献 (11)

七、源程序 (11)

一、需求分析

经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:录入新教材信息,添加已有教材,查找教材信息,保存教材函数。在这些函数当中,前三个函数的实现严格按照题目的要求,而最后一个函数用来将修改的函数保存在book.txt中。

1. 稳定性分析

指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。

2. 主要功能分析

(1)录入教材信息:允许用户输入教材名称、作者、出版社、教材册数、编号、售价。

(2)查询教材:允许按照编号和书名对教材的各项信息进行查询;

(3)添加已有教材: 通过添加已有教材的同时对教

材信息的更改;

(4)保存教材函数将执行插入教材信息存入book.txt中。

除上面介绍的功能之外,程序还具有退出功能,可以在输入修改信息之后实现选择退出。

每一本教材记录都包含编号、作者、出版社、售价、书名和数量,在程序当中,将教材记录类型定义为结构体类型,添加以及追加的教材信息直接写入book.txt文件中,其他函数每次对教材记录的访问,其数据来源都是book.txt文件,这样做不但可以保证教材数据的一致性,而且可以对教材数据进行保存,保证每次运行程序都可以采用原来的数据。

二、设计分析

主要有5个功能模块,每个模块对应一个C语言自定义函数。这些函数原型及其功能简述如下:

1、教材录入函数说明

这个函数用static声明局部变量,使函数调用结束后不消

失而保留原值。用只写的方式打开一个文件夹(book.txt)把数据项写入指定文件(book.txt)中。关闭文件。

2、教材查询的函数

该函数的核心内容是switch函数的使用、for函数的嵌套使用与strcmp比较字符串函数的使用。

3、已有教材添加函数

该函数的核心内容是if函数嵌套和for函数的使用以及strcmp比较字符串函数的使用

4、教材信息保存函数

这个函数先建立一个文件并把具体的信息存入文件中

1、程序总体结构图

2、具体功能框图

(1)录入新教材信息函数

(2)查询教材信息

(3)添加已有教材信息(4)保存教材信息函数

三、主要界面截图

图1 程序主界面

图2 录入界面

图3 查询界面

四、技术要点

(对本程序贡献较大的C语言知识点;重要算法的设计与实现)

1、结构体的应用

定义了结构体用来描述教材的名称、作者、出版社、编号、册数和售价,具体的定义如下:

#define B 1000

typedef struct Book

{ char num[20];

char name[20];

char author[20];

char press[20];

int count;

float shoujia;

}book[B];

struct Book books[B];

所定义的结构体主要用于定义数组。

2、文件操作

包括了文件的写入、读取和保存三个方面。例如如下程序段用于保存教材信息:

void save()

{

int i = 0;

FILE *fp;

fp = fopen("e:\\book.txt", "wr");

while(books[i].count > 0)

{

fprintf(fp, "教材名称:%s 教材作者:%s 出版社:%s 册数:%d 编号:%s 售价:%f\n", books[i].name, books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);

i++;

}

fclose(fp);

}

3、关于查询函数

实现从系统中查询某教材的相关信息的查询函数稍微复杂一些,需要先进行选择是通过名称查询还是编号查询。如下是通过教材名称查询的函数:

void chaxun() /*教材查询*/

{ FILE *fp;

int i,flag=0;

int a;

char x[32];

char y[32];

if((fp=fopen("e:\\book.txt","r"))==NULL)

{

printf("此文件无法打开!\n");

return;

}

printf("请选择查询方式:1.教材名 2.编号\n");

scanf("%d",&a);

switch(a)

{

case 1: printf("输入教材名:\n");scanf("%s",x);

for(i=0;i<1000;i++)

if (strcmp(books[i].name,x)==0) /*比较输入名与存储名的字符串大小*/

{printf("教材名:%s 教材作者:%s 出版社:%s 册数:%d 编号:%s 售