C语言课程设计--商品信息管理系统
*******************
实践教学
*******************
软件学院(本科)
2014年秋季学期
计算机应用基础课程设计说明书
题目:公司产品管理系统
专业班级:2014级软件4班
姓名:苏旺春
学号:1417700221
指导教师:马威
成绩:
目录
1系统分析 (1)
1.1课程设计内容 (1)
1.2系统功能需求分析 (1)
1.3数据结构设计 (2)
2系统设计 (3)
2.1总体设计 (3)
2.2详细设计 (4)
2.2.1界面设
计 (4)
2.2.2各功能模块的设
计 (5)
3系统编码设计 (11)
3.1main 函数 (11)
3.2load 函数 (12)
3.3creat 创建链表函数 (13)
3.4search 函数 (16)
3.5add 数 (20)
3.6amend 函数 (22)
3.7del 函数 (25)
3.8purchase 函数 (26)
3.9 sales 函数 ........................................................................................................ 28 3.10 print 函数 ...................................................................................................... 29 3.11 save 函数 ....................................................................................................... 33 3.12 menu 函数 ..................................................................................................... 34 4 系统运行.................................................................................................................. 36 5 总结.. (41)
1 系统分析
1.1 课程设计内容
1 设计一商场商品信息管理系统,功能包括:
1. 文件操作:可建立、打开、保存、关闭数据文件。
2. 输入商品信息数据:数据包括商品编号、商品名、商品类别、商品数量、
商品价格等。
3. 编辑数据:可添加、删除、修改数据。
4. 输入进货、销售信息:输入商品编号、数量完成进货或销售操作。
5. 计算:应在输入进货及销售信息时,自动更改商品数量。
6. 查询:可按商品编号、商品名或类别查询;还可查询需进货的商品。
7. 排序:可按编号、名称或类型排序。
8. 浏览:可浏览输入、查询或排序后的数据。
1.2 系统功能需求分析
本系统应具有以下功能:
1、文件操作功能:可建立、打开、保存、关闭数据文件。
2、数据输入功能: 数据包括商品编号、商品名、商品类别、商品数量、
商品价格等。以及输入商品编号、数量完成进货或销售操作。
3、数据添加、修改、删除功能
4、计算功能:在输入进货及销售信息时,自动更改商品数量。
5、查询功能:可按商品编号、商品名或类别查询;还可查询需进货的商品。
6、排序功能:可按编号、名称或类型排序。
7、数据显示功能:可浏览输入、查询或排序后的数据。
1.3 数据结构设计
struct shangpingxinxi /*结构体,用于存放主要数据*/
{
long number; /*商品编号*/ 2 char name[100]; /*商品名*/ char leibie[100];
/*商品类别*/ int kucun; /*库存量*/ float jiage;
/*商品价格*/ struct shangpingxinxi *next; /*指向下一个结构体
的指针*/
} int n,k; /*全局变量*/
struct shangpingxinxi *head; /*局部变量*/
struct shangpingxinxi *p1,*p2,*p3; /*局部变量*/
char temp[20]; /*局部变量*/
int/long/char/float a,b,c,d,e,f,i,j; /*局部变量*/
FILE *fp; /*局部变量,用于指向文件*/
2 系统设计
2.1 总体设计
3按系统分析的功能要求将系统划分为以下几个主要功能模块:
2.2 详细设计
2.2.1 界面设计
1、
菜单设计
4
2、
输入界面的设计
输入商品编号:提示输入7位商品编号。编号应为首位不为0的数字编号,当输
入字符和非7位数字时提示错误;添加商品时,还应检查是否有重复编号,如有重新输入。
输入商品名称: 提示输入商品名称。可输入任意字符串,但为了对齐最好不超过
八个字符,以回车为输入结束。
输入商品类型:提示输入商品类型。可输入任意字符串,但为了对齐最好不超过
八个字符,以回车为输入结束。
主菜单
读取文件 创建数据 查询信息 按编号查询 按名称查询 按类别查询 查询须进货商品
修改信息
删除信息 添加信息 进货信息
销售信息 浏览信息
按编号顺序浏览 按名称顺序浏览 按类别顺序浏览
保存文件
输入商品库存:提示输入大于零的商品库存(大于 0)。可输入 0~32767 的任意数字,当输入为字符和小于0的数字时提示错误,重新输入。
输入商品价格:提示输入大于零的商品价格(大于 0)。可输入 0~3.4×
1038的任意浮点数,当输入为字符和小于0的数字时提示错误,重新输入。 3
显示界面的设计
◆菜单信息显示:在页面中央以阶梯状加半框形式显示,页面底部显示提示信息。
◆商品信息显示:应显示商品编号、商品名称、商品类别、库存数量、商品
价格五种信息,并以表格形式显示。5 2.2.2 各功能模块的设计
根据划分的功能模块,定义以下函数实现各功能:(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)
1、主函数main()
2、 读取文件函数
struct shangpingxinxi *load(struct shangpingxinxi *head)
3、 创建链表函数(输入数据函数)struct shangpingxinxi *creat(void) 6
struct shangpingxinxi *search(struct shangpingxinxi *head)
7
5、添加函数
struct shangpingxinxi *add(information *head,information
*newgoods)
6、修改函数
struct shangpingxinxi *amend(struct shangpingxinxi *head)
struct shangpingxinxi *del(struct shangpingxinxi *head)
8、 进货函数
struct shangpingxinxi *purchase(struct shangpingxinxi *head)
9、 销售函数
struct shangpingxinxi *sales(struct shangpingxinxi *head) 9
10、排序函数(输出函数)
void print(struct shangpingxinxi *head)
10
11、保存函数
void save(struct shangpingxinxi *p1)
3 系统代码设计
3.1 main 函数
#include
#include
#include
#include
#define LEN sizeof(struct shangpingxinxi) struct
shangpingxinxi
{
long number;/*7位商品编号*/
char name[100];/*商品名*/ char
leibie[100];/*商品类别*/ int
kucun;/*库存量*/ float jiage;/*商
品价格*/ struct shangpingxinxi
*next;
};
typedef struct shangpingxinxi information;
int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/
void main() /*主函数main,功能:通过调用各函数,实现商品信息管理系统的功能*/
{
information *head=0,*newgoods=0;
int k=0; char a[10]; int j;
char ch; pp:system("cls");/*
清屏*/ printf("请输入密码:
"); j=0;
while((ch=getch())!=13)
{ putchar('*');
a[j]=ch; j++;
} a[j]='\0';
if(strcmp(a,"zeus880825")!=0)
{
printf("\n\n密码错误!");
getch();
goto pp; }
system("cls");/*清屏*/
{ lp: k=menu(k);
switch(k)/*用switch语句实现功能选择*/ 12 {
case 1: head=load(head);break;/*从文件调入记录函数*/ case 2:
head=creat();break;/*调用创建链表函数*/ case 3:
head=search(head);break;/*调用信息查询函数*/ case 4:
head=amend(head);break;/*调用修改信息的函数*/ case 5:
head=del(head); break;/*调用删除信息函数*/ case 6:
head=add(head,newgoods);break;/*调用追加信息资料函数*/ case 7:
head=purchase(head);break;/*调用输入进货信息的函数*/ case 8:
head=sales(head);break;/*调用输入销售信息的函数*/ case 9:
print(head); break;/*调用显示信息资料函数*/ case
10:save(head);break;/*调用保存函数*/ case 0: exit(0);/*退出系统,返
回主界面*/ default: printf("输入错误,请重试!\n");
} goto
lp;
}
}
3.2 load 函数
information *load(information *head)/*函数load,功能:从文件读入商品
信息*/
{
information *p1,*p2;
char filepn[10]; FILE *fp;
system("cls");/*清屏*/
printf("请输入文件路径及文件名:"); scanf("%s",filepn);/*输入文件路径及名称*/ if((fp=fopen(filepn,"r+"))==NULL)
{
printf("不能打开文件!\n"); getch();
system("cls");/*清屏*/
return 0;
}
fp=fopen(filepn,"r+"); fscanf(fp,"\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格
\n"); n=0;
p1=p2=(information *)malloc(LEN); /*开辟一个新单元*/
fscanf(fp,"%ld\t\t%s\t\t%s\t\t%d\t\t%f\n",&p1->number,&p1->name,&p1-
>leibie,&p1->kucun,&p1->jiage);
head=p1; 13ll:n=n+1; p2=p1;
p1=(information *)malloc(LEN); /*开辟一个新单元*/
fscanf(fp,"%ld\t\t%s\t\t%s\t\t%d\t\t%f\n",&p1->number,&p1->name,&p1-
>leibie,&p1->kucun,&p1->jiage);
p2->next=p1; if(p1-
>number!=0) goto ll;
p2->next=NULL;
fclose(fp);/*结束读入,关闭文件*/
printf("\n总有%d种商品的信息:\n",n);
printf("\n 商品编号\t 商品名称\t 商品类别\t 库存数量\t 商品价格
\n");
p2=p1=head;
do
{
printf("%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\n",p1->number,p1->name,p1->lei
bie,
p1->kucun,p1->jiage); p1=p1-
>next;
}
while(p1!=NULL);
getch();
system("cls");/*清屏*/
return (head);
}
3.3 creat 创建链表函数
information *creat(void)/*函数creat,功能:创建链表,此函数带回一个指向链表头的指针*/ {
information *head;
information *p1,*p2,*p3;
int i;
system("cls");/*清屏*/
n=0;
p1=p2=p3=(information
*)malloc(LEN); head=p3; /*
开辟一个新单元*/
repeat1: printf("请输入7 位商品编号(退出请按“0”):");/*输入编号,编号应大于
0*/
scanf("%d",&p1->number);
if(p1->number==0)
goto end; 14 else
{
while(p1->number<1000000||p1->number>=10000000)
{ printf("输入错误!");
goto repeat1;
} p3=head; if(n>0)
{ for(i=0;i { if(p1->number!=p3->number) p3=p3->next; else { printf("编号重复,请重输!\n"); goto repeat1; /*当输入的编号已经存在,程序报错,返回前面重新输入*/ } } } } printf("请输入商品名:"); scanf("%s",&p1->name);/*输入商品商品名*/ printf("请输入商品类别:");/*输入商品类别*/ scanf("%s",&p1->leibie); printf("请输入商品库存(大于0):");/*输入商品库存*/ scanf("%d",&p1->kucun); while(p1->kucun<0) { printf("输入错误,请重新输入商品数量");/*输入错误,重新输入商品库存直到正确为止*/ scanf("%d",&p1->kucun); } printf("请输入商品价格(大于0):");/*输入商品价格*/ scanf("%f",&p1->jiage); while(p1->jiage<0) { printf("输入错误,请重新输入商品价格"); scanf("%f",&p1->jiage); }/*输入错误,重新输入商品价格直到正确为止*/ head=NULL; while(p1->number!=0) 15 { n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(information *)malloc(LEN); 1 设计目的 机房机位预定系统 2 任务概述 20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求: (1)系统以菜单方式工作 (2)查询,根据输入时间,输出机位信息。 (3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。 (4)退出预定,根据输入的时间,机器号撤销该事件的预定! (5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。 ......... 3 模块划分 4 主要函数说明及其N-S图 1.主函数: int main() { Menu(); /*当前状态函数*/ } void Menu() /*主界面*/ { int n,w; do { puts("\t\t****************机房机位预约系统*******************\n"); puts("\t\t*************************菜单 ***************************\n"); puts("\t\t\t 1.查询某时间段机位状态"); /*查询某时间段机位状态*/ puts("\t\t\t 2.预定空机位"); /*预定空机位*/ puts("\t\t\t 3.取消预订"); /*取消预订*/ puts("\t\t\t 4.查询等待信息"); /*查询等待信息*/ puts("\t\t\t 5.退出"); /*退出*/ puts("\t\t********************************************************\n"); printf("选择菜单号(1-5):"); scanf("%d",&n); if(n<1||n>5) {w=1;getchar();} else w=0; }while(w==1); switch(n) { case 1:Situation();break; case 2:Book();break; case 3:Cancel();break; case 4:SearchWaiting();break; case 5:exit(0);break; } getch(); } 2.机位查询: void Situation() { int time; printf("输在 (8-20)范围内的时间:"); scanf("%d",&time); if(time<8||time>20) {printf("\t时间输入错误!\n"); printf("输入在 (8-20)范围内的时间:"); scanf("%d",&time); } detail(time); /*函数调用*/ getchar(); Menu();} 3.机位预定: C 语言课程设计(小游戏贪吃蛇的程序设计报告) 设计人: 班级: 201 年月号 目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献 一. 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1、1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正就是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的与那个发,技术与工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习与将来实际软件开发打下坚实的基础。 1、2 设计的任务与需要的知识点 1、2、1 课程设计主要完成的任务 1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解与掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题与解决问题的能力。 1、2、2需要掌握与运用的知识点 1、2、3本次课程设计需要掌握与运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐与动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。 1、新建“.h”头文件,将“头文件” 代码粘贴至其中, 2、新建“.c”源文件,将“源代码” 代码粘贴到其中。 3、新建空白工程,将头文件和源代码 添加进去,调试使用。 //头文件 //1.自定义枚举类型,定义7种形态的游戏方块 typedef enum tetris_shape { ZShape=0, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape }shape; //2.函数声明 //(1)操作方块函数 int maxX();//取得当前方块的最大x坐标 int minX();//取得当前方块的最小x坐标 void turn_left();//当前方块逆时针旋转90度 void turn_right(); int out_of_table(); void transform(); int leftable(); int rightable(); int downable(); void move_left(); void move_right(); //(2)操作游戏桌面的函数 int add_to_table(); void remove_full(); //(3)控制游戏函数 void new_game(); void run_game(); void next_shape(); int random(int seed); //(4)绘图函数 void paint(); void draw_table(); //(5)其他功能函数 void key_down(WPARAM wParam); void resize(); void initialize(); void finalize(); //(6)回调函数,用来处理Windows消息 LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM); //源代码 //1.文件包含 #include 实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图: 1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数 C程序设计课程设计 题目:学生选课系统专业班级:通信工程1班姓名: 学号: 指导教师: 成绩: 摘要 学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的决策者、管理者管理、查看课程来说都有至关重要,所以学生选课管理系统应该能够为广大学、师生提供充足的信息和快捷的课程选择过程,有助于学生选好每一门课程,此系统系统选课方便、快捷,用简单的界面来展示学生的选课信息,应用简单明了、存储量大、可靠性高、保密性好、寿命长、成本低等优点,可以极大的提高对学生信息管理的效率。利用C语言开发,实现了简单的学生课程信息的录入、修改、查询、删除等操作,并且能够利用文件系统长久的保留原始数据。 目录 一、需求分析 (1) 二、总体设计 (1) 三、详细设计 (2) 1、数据定义...................................................... 错误!未定义书签。 2、算法流程图 (2) 四、编码 (6) 五、调试 (7) 六、设计总结 (10) 致谢 (11) 参考文献 (12) 附录 (13) 一、需求分析 语言文字描述系统要做什么 数据结构可用结构体,包括课程和选修两个结构体,其中课程结构体成员结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期。选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。 二、总体设计 系统由哪几个功能模块构成,给出功能模块图。C 中模块化的工具是函数 根据上面的需求分析,可以将这个系统的设计分为如下七大模块: 选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。 菜单选择模块 录入学生信息 学生选课 系统信息查看及储存 退出系统 完成选择模块 学生信息 管 理 录入课程信息 课程 管理 C语言课程设计题目 选题一(起评分100分) 高考招生录取程序 已知文本文件f1.txt中存放了某个省当年参加高考的1000个考生的数据(考号、姓名、性别和考试成绩),存放格式是每行存放一个考生的数据,每个数据之间用空格隔开。 假定当年该省的招生计划是:一类本科招生计划为10%;二类本科招生计划为15%;三类本科招生计划为20%;四类高职高专招生计划为25%。 请编写程序,实现以下功能: (1)划定各批次录取分数线,结果可屏幕显示,也可存入文件。 (2)能够统计各批次中男生,女生的录取比例。统计结果可屏幕显示,也可存入文件。 (3)确定每名学生的录取情况及录取批次。 (4)考生可以根据考号或姓名(支持重名)查询自己的成绩及录取情况; 说明: ①系统程序要有界面 ②存入文件的数据,每行存一种数据,每行之间的不同信息用空格分隔。 选题二(起评分85分) 《C语言课程设计与学习指导》第4章题目或第5章题目任选其一 成绩评定方式 平时考勤:20% 考试(即程序考核及检查):40% 实习报告:40% 违规违纪处理 出现以下6种情况中的任何一种,整个课程设计的成绩直接认定为不及格: 1.考勤抽查出现3次(含)不在的情况; 2.上机从事玩游戏、看电影等活动被抓住2次(含)的情况; 3.程序检查被认定为抄袭的情况; 4.实习报告被认定抄袭或雷同的情况; 5.不参加考试(即程序考核及检查)的情况 6.不交实习报告的情况。 C语言课程设计报告撰写要求 1 内容要求 整个报告由六个部分构成: ①课设题目 ②题目分析 ③设计思路 ④实现结果 ⑤课设总结 ⑥附录(源代码) 2 篇幅要求 ①-⑤合计不低于8页,⑥不低于8页。 篇幅没有上限要求,但原则上要求不超过25页。 标题字体字号格式:宋体,三号,加黑,单倍行距。 正文字体字号格式:宋体或Times New Roman,五号,单倍行距。 3 撰写要求 严谨出现抄袭。 严谨出现雷同。 报告出现抄袭或雷同的,整个课程设计成绩一律按不及格论处。 4 其它 封面格式附后。 #include void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小 void main()//主函数{int j; chushihua();//系统初始化判断是否存在原始数据文件 printf("欢迎使用飞机订票系统\n");//打印出系统主界面 do{printf("============================================================= =================== "); printf(" 1.增加航班信息\n" "\t 2.浏览航班信息\n" "\t\t 3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n" "\t\t\t 4.航班排序(按航班号)\n" "\t\t\t\t 5.订票业务\n" "\to(︶︿︶)o\t\t\t #i n c l u d e c语言课程设计源代码标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N] 学校运动会管理系统问题描述: (1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数; (2) 各项目名次取法有如下几种: 取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1; (3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。 (4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。 程序代码: #include<> #include<> #define N 3 #define M 3 #define W 3 char* n_number[3]={"1","院系2","院系3"}; char* m_number[3]={"1","男项2","男项3"};c语言课程设计机房机位预定系统绝对正确,附源代码
C语言课程设计报告——贪吃蛇源程序
C语言课程设计俄罗斯方块源代码
c语言课程设计报告学生成绩信息管理系统源代码
C语言课程设计---学生选课系统加源代码
中国地质大学C语言课程设计题目(附参考代码)
C语言课程设计――飞机订票系统源代码
c语言课程设计报告会员卡计费系统源代码
//编译预处理指令,引入头文件 #include c语言课程设计源代码