1、数据结构课程设计报告有代码C语言仓库管理系统第一章 系统目标 (三号楷体加粗)仓库管理应用程序 系统能够实现信息多次追加入录、信息显示、删除信息、修改信息、查询信息、价格升序等基本功能,这些功能模块都用函数的形式来实现。学生信息保存在文件中,需要时能够随时从文件中读取出来。方便用户随时可查询。进行仓库管理。 第二章 系统分析 (三号楷体加粗) 正文(四号楷体) 明确用户的需求,如操作界面需求,系统功能需求,数据的具体流程等。开始运行时界面如下:你能够根据所对应的信息提示进行操作便可对其进行数据的记录与查询。 第三章 系统设计 开始提示”输入错误”按任意键能够继续数据插入选择3输出操作界面选择1
2、选择2初始化清空记录输入数据提示按任意键,便可返回界面选择4数据删除选择5数据更新选择6数据查询选择7单价升序其余输入输入W/w输入R/r读取文件保存文件选择0结 束 第四章 系统实现 正文(四号楷体) 给出具体的实现环境(如用什么语言?在什么操作系统?)用C语言编程,用cokeblock编译器,在windows xp操作系统下编译成功。给出主函数和每个算法的实现代码。#include#include#include#include#include#define SIZE 100typedef struct char name10; char fam10; int pay; int num;
3、Store;typedef struct node Store elem; struct node *next; In;In *head=NULL;void appendInfo();void List();void menu(void);In*Init();void Start();void Insert();void Del();void renew();void Wsave();void Read();void SortUp();void PreFile();int main() char select; PreFile(); menu(); while(select=toupper(g
4、etch()!=0) system(cls); switch (select) case 1 : Start();system(pause);menu(); break; case 2: appendInfo();system(pause);menu(); break; case 3: Insert();system(pause);menu(); break; case 4: Del();system(pause);menu(); break; case 5: renew();system(pause);menu(); break; case 6: List();system(pause);m
5、enu(); break; case 7: SortUp();system(pause);menu(); break; case W: Wsave(); system(pause); menu(); break; case R: Read(); system(pause); menu(); break; default:printf(Input error!n); system(pause); menu(); break; return 0; In*Init() In*L; L=(In*)malloc(sizeof(In); L-next=NULL; return L; void append
6、Info() int i,j; In*p,*s;A1:printf(请输入要存放的记录数:); scanf(%d,&j); if(jnext; while(p-next!=NULL) p=p-next; for(i=0;ielem.name); scanf(%s,&s-elem.fam); scanf(%d,&s-elem.pay); scanf(%d,&s-elem.num); p-next=s; p=s; void List() In *p; if(head=NULL) printf(None of information about products.n); return; else p
7、=head-next; printf(名称 品牌 单价 数量n); while(p!=NULL) printf(%st%st%dt%dn,p-elem.name,p-elem.fam,p-elem.pay,p-elem.num); p=p-next; void menu() system(cls); printf( |-|n); printf( |-家电仓库管理-|n); printf( | 请输入选项编号 |n); printf( |-|n); printf( | 1-数据初始化 |n); printf( | 2-创立数据表 |n); printf( | 3-数据插入 |n); printf
8、( | 4-数据删除 |n); printf( | 5-数据更新 |n); printf( | 6-数据查询 |n); printf( | 7-单价升序 |n); printf( | w-数据保存 |n); printf( | r-数据读出 |n); printf( | 0-系统退出 (exit) |n); printf( |-|n); printf(请输入你的选择:);void Start() char com; printf(你想清空所有资料吗?(Y/N):); fflush(stdin); com=getchar(); if(com=Y|com=y) printf(已经初始化了、n);
9、head=NULL; return; else printf(资料仍在、n); return ; void Insert() In*pi,*p; char str10; printf(请问要在哪个学生后面插入(输入姓名):); fflush(stdin); gets(str); pi=Init(); printf(名称 品牌 单价 数量n); scanf(%s,&pi-elem.name); scanf(%s,&pi-elem.fam); scanf(%d,&pi-elem.pay); scanf(%d,&pi-elem.num); if(head=NULL) printf(前面没有数据,默认
10、接在表头。n); p=Init(); head=p; p-next=pi; else p=head-next; while(strcmp(p-elem.name,str)!=0)&p-next!=NULL) p=p-next; if(p-next!=NULL) pi-next=p-next; p-next=pi; else p-next=pi; void Del() In*pi,*p,*s; char str10; if(head=NULL) printf(没有商品资料。n); return; printf(请输入要删除产品的名称:); fflush(stdin); gets(str); p=
11、head-next; while(strcmp(p-elem.name,str)!=0)&p-next!=NULL) pi=p; p=p-next; if(strcmp(p-elem.name,str)=0) printf(所删除的记录为:n); printf(%st%st%dt%dn,p-elem.name,p-elem.fam,p-elem.pay,p-elem.num); if(p=head-next) s=Init(); head=s; s-next=p-next; else pi-next=p-next; free(p); else printf(找不到相应的商品资料。n); voi
12、d renew() In*pi,*p,*s; char str10; if(head=NULL) printf(没有商品资料。n); return; List(); printf(请输入要更新产品的名称:); fflush(stdin); gets(str); p=head-next; while(strcmp(p-elem.name,str)!=0)&p-next!=NULL) pi=p; p=p-next; if(strcmp(p-elem.name,str)=0) printf(所要更新的记录为:n); printf(%st%st%dt%dn,p-elem.name,p-elem.fam
13、,p-elem.pay,p-elem.num); printf(品牌 单价 数量n); scanf(%s,&p-elem.fam); scanf(%d,&p-elem.pay); scanf(%d,&p-elem.num); printf(更新后的记录为:n); printf(%st%st%dt%dn,p-elem.name,p-elem.fam,p-elem.pay,p-elem.num); else printf(找不到相应的商品资料。n); void Wsave() FILE*fp; In*p; if(head=NULL) printf(你还未有资料。); return; if(fp=f
14、open(store.dat,wb)=NULL) printf(Cannot open file!n); else for(p=head-next;p!=NULL;p=p-next) if(fwrite(p,sizeof(In),1,fp)!=1) printf(File write error!n); printf(ttt保存成功。nn); fclose(fp); void Read() In*p; FILE*fp; if(head=NULL) printf(你还未有资料。); return; if(fp=fopen(store.dat,rb)=NULL) printf(Cannot Ope
15、n.); return; for(p=head-next;p!=NULL;p=p-next) p=Init(); fread(p,sizeof(In),1,fp); printf(%st%st%dt%dn,p-elem.name,p-elem.fam,p-elem.pay,p-elem.num); printf(nttt读取成功n); fclose(fp); void SortUp() In*p1,*p2,*p3; p3=(In*)malloc(sizeof(In); if(head=NULL) printf(没有记录,无法排序。); return; for(p1=head-next;p1-n
16、ext!=NULL;p1=p1-next) for(p2=p1-next;p2!=NULL;p2=p2-next) if(p1-elem.payp2-elem.pay) p3-elem=p1-elem; p1-elem=p2-elem; p2-elem=p3-elem; printf(n已经排序好了。n); List(); void PreFile() int Flag=0; In *he,*p,*q; FILE *fp; if(fp=fopen(store.dat,ab+)=NULL) printf(Open file error!n); exit(0); he=Init(); q=he;
17、p=Init(); he-next=p; for(;fread(p,sizeof(In),1,fp)!=0;p=Init() he-next=p; he=p; p-next=NULL; Flag=1; if(Flag) head=q; else head=NULL ; fclose(fp); 第五章 系统测试 正文(四号楷体) 模拟一组数据,经过多次运行,测试系统的每一个功能,给出测试运行结果例如:1. 先输入:6 就会读出原本已保存的文件的记录。2. 按任意键后,就会弹出原有界面。3. 输入:3 后按提示做插入操作。4. 再按任意键后,会弹出原有界面。5. 再输入:6 后界面就变为如下:6.
18、 再输入:7后界面就变为7. 再输入:2,即再在后面添加数据。8. 再输入:6 后界面就变为如下:即添加到了数据后面。这也已经默认了添加时是接在原有文件的后面。9. 再输入:w或W时,10. 关闭界面,重新运行时。输入:6或R或r时,运行结果为: 第六章 设计心得 正文(四号楷体) 对整个设计过程进行总结,自己经过这个课程设计收获了什么?一一列举,还有什么问题有待提高?收获:经过专周的训练,已经想起了很多有关的C语言的知识,比如toupper 是包含在”ctype.h”的头文件中。同时对文件的读与写有了更全面的了解与应用。疑问:读文件时有用到while(!feof(fp)会多出乱码。不知道会是哪里衔接不够好。 第七章 参考文献 1. 作者,参考文献名称,出版社,年代杨升,数据结构,厦门出版社, 教师评语和成绩 年 1 月