c语言课程设计-汽车会员管理系统(转载).doc
C语言程序设计 课 程 设 计题 目 汽车会员管理系统系 (部) 信息工程系班 级 姓 名 学 号 指导教师 2015年 月 日至 月 日 共 周 年 月 日C语言程序设计 课程设计任务书一、设计题目、内容及要求 题目:汽车会员管理系统程序设计内容:设计一个汽车会员管理系统程序。基本信息包括:会员编号、会员名称、会员身份证号码、所购车型、车辆金额、联系电话、备注等。该程序具有以下功能:(1)信息的添加;(2)信息的删除;(3)信息的查询;(4)信息的修改;(5)提供一些统计各类信息的功能等。 要求:程序结构合理、算法准确、语法正确,并生成可执行文件。二、要求的设计成果(课程设计说明书、设计实物、图纸等) 1. 课程设计说明书:课程设计说明书1份,不少于2000字。说明书中要包含需求分析、总体设计、详细设计以及主要的算法描述等内容。 2. 源代码:程序清单,实现应用程序的功能。注重编码质量,代码要有适当的注释。三、进程安排3.2-3.3:查找资料。3.4-3.6:完成程序主体功能的设计。3.9-3.10:程序调试无误,生成可执行文件。3.11-3.12:撰写课程设计说明书初稿。3.13:提交课程设计说明书、程序和数据。四、主要参考资料1 谭浩强,张基温C语言程序设计教程(第3版)M北京:高等教育出版社,20062 吕凤煮C语言基础教程基础理论与案例M北京:清华大学出版社,20053 黄明、梁旭、万洪莉C语言课程设计M北京:电子工业出版社,20064 郭宁,郑小玲管理信息系统M北京:人民邮电出版社,20065 赵池龙,杨林,陈伟实用软件工程M北京:电子工业出版社,2006指导教师(签名):教研室主任(签名): 课程设计成绩评定表出勤情况出勤天数 缺勤天数成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)设计成果(60分)总成绩(100分)提问(答辩)问题情况综合评定 指导教师签名: 年 月 日1引言1.1 设计要求21世纪,我们已经进入了信息时代,计算机的使用大大方便了我们的日常生活,手工的会员信息管理已经不能满足我们的需求,查询困难等缺点是人工的会员信息管理所不能克服的。在此情况下,就需要一个程序化的自动的会员信息管理系统来满足人们的需求。在C语言的平台下实现,用户可以方便的进行各项操作。C语言是一种程序设计语言,早在20世纪90年代,C语言表现出了强劲的生命力,C语言是一种结构化语言。1它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。2它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。3它还可以直接访问内存的物理地址,进行位(bit)一级的操作。4由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体,既可用于系统软件的开发,也适合于应用软件的开发。5此外,C语言还具有效率高,可移植性强等特点。因此可以广泛地移植到了各类型计算机上,从而形成了多种版本的C语言。采用结构体数组和文件的方式,完成了对数组的录入、显示、排序、查找、删除、修改、插入、保存等功能。1.2 系统概述汽车公司的会员管理系统是一个对会员信息进行录入、删除、修改、浏览、查询和存盘等操作的管理应用软件,用户可以对文件中存储的会员进行查找和浏览,了解会员的名称、所购车型、联系电话等信息。该软件提供了一个简单的人机界面,管理员可以根据提示输入操作项并进行一系列对会员名称和联系方式的管理操作。1.3开发与设计的总体思想 本系统主要应用结构化的设计思想实现汽车会员信息的增、删、改和查等典型管理功能。各主要模块的数据均存储在文件中,因此包含对文件的读、写等基本操作。在软件开发过程中应用了高级语言程序设计中的基本控制结构,如选择、循环、顺序结构。系统的设计方法是结构化设计方法,采用C语言进行开发。 2.总体设计2.1功能需求汽车公司急需一款程序化的的会员管理系统,这种需求确定了系统的主要功能,该软件提供了一个对会员信息进行管理和查看的平台,给用户提供了一个简单友好的用户接口。2.2 系统功能结构图会员信息管理录入会员信息删除会员信息修改会员信息浏览会员信息查询会员信息保存会员信息 图1 系统结构功能图 3 详细设计3.1系统化分析 将程序整体进行模块化处理,使程序编译思路更加清晰,降低了编译程序的难度。会员信息中包含编号、名称、身份证号码、所购车型、车辆金额、联系电话、备注等基本信息,程序具有信息录入、删除、修改、浏览、查询和存盘等功能。3.2密码登陆模块 进入前需输入密码,防止非本公司人员泄露会员的隐私。其代码如下:int a; char s110="112233"char s210;do printf(" *n"); printf("n");printf(" 请 输 入 密 码 :n");printf("n");printf(" *n");gets(s2);if(strcmp(s1,s2)=0) a=1;elsea=0;if(a=1) /*比较输入的密码str1和设定的密码str2, 输出"密码正确"。*/printf("密码输入正确n");else if(a=0)printf("对不起密码输入错误,请从新输入n");while(a=0);system("cls");3.2主函数及主界面函数,就有了程序的框架,有了主调用函数和主菜单,从主界面可以选择所要求的操作,使操作方便,易于进行查找、添加、修改、删除等功能。其代码如下:int i; printf(" 欢迎进入汽车会员信息管理系统 n");printf("=n");printf("=n"); printf(" n"); printf(" 1、会员信息录入 n"); printf(" 2、会员信息查询 n");printf(" 3、会员信息修改 n");printf(" 4、删除会员信息 n");printf(" 5、插入会员信息 n");printf(" 6、保存会员信息 n");printf(" 7、退出系统 n");printf(" *请您输入(1-7)数字键* n");doscanf("%d",&i); if(i>7&&i<1) printf("请您输入有效数字!");while(i>7&&i<1); 3.3插入模块系统管理员通过此模块可以在原有记录的基础上随意的添加其他会员信息,通过系统的提醒依次的录入所要记录的会员的所有信息,可以添加多个会员信息,并且不需重新回到主界面,直接在系统的提示下进行再次输入。void charu() int i,m;FILE *fp;char ch; printf("请输入要插入的会员的个数:"); scanf("%d",&m);if(fp=fopen("d:filepath","w")=NULL) printf("n保存失败!"); exit(0);for(i=0;i<m;i+)printf("请输入第%d个会员的信息:n",i+1);printf("编号:");scanf("%s",&memi.num);printf("n");printf("名称:");scanf("%s",&memi.name);printf("n");printf("身份证号码:");scanf("%s",&memi.id);printf("n");printf("所购车型:");scanf("%s",&memi.type);printf("n");printf("联系电话:");scanf("%s",&memi.phone);printf("n");printf("车辆金额");scanf("%s",&memi.money);printf("n");printf("备注");scanf("%s",&memi.remark);printf("n");fclose(fp); printf(" 按0返回主菜单 n"); ch=getch(); if(ch='0') system("cls");zonghanshu(); 3.4删除模块管理员通过这块模块可以对不需要的信息进行删除,使用方便,只需要输入所要删除的会员信息编号即可,系统会自动搜索,确定删除后此信息消失。其代码如下:void shanchu() int i,j,flag=0; char s130; char ch; printf("请输入要删除会员的编号:n"); scanf("%s",s1); for(i=0;i<M;i+) if(strcmp(memi.num,s1)=0) flag=1; for(j=i;j<M-1;j+) memj=memj+1; if(flag=0) printf("该编号不存在!n"); if(flag=1) for(i=0;i<M;i+)printf("名称");printf("%sn",memi.name); printf("编号");printf("%sn",memi.num); printf("身份证号码");printf("%sn",memi.id); printf("所购车型");printf("%sn",memi.type); printf("联系电话");printf("%sn",memi.phone); printf("车辆金额");printf("%sn",memi.money); printf("备注");printf("%sn",memi.remark);printf("删除成功n"); printf(" 按0返回主菜单 n"); ch=getch(); if(ch='0') system("cls");zonghanshu(); 3.5修改模块考虑到有些信息可能会发生变动,该系统设置了修改模块,如果某个编号的信息发生变动,管理员可以通过此模块对该编号下的其他信息进行修改。其代码如下:void xiugai() int i,item,j;int m=1; char s120,s220; printf("修改前的信息:n");for(i=0;i<M;i+)printf("名称");printf("%sn",memi.name);printf("编号");printf("%sn",memi.num);printf("身份证号码");printf("%sn",memi.id);printf("所购车型");printf("%sn",memi.type);printf("联系电话");printf("%sn",memi.phone);printf("车辆金额");printf("%sn",memi.money);printf("备注");printf("%sn",memi.remark);printf("n"); printf("请输入要要修改的会员的编号:n"); scanf("%s",s1); for(i=0;i<M;i+) if(strcmp(memi.num,s1)=0) /*比较字符串是否相等*/ j=i; printf("-n"); printf("1.修改名称n"); printf("2.修改编号n"); printf("3.修改身份证号码n"); printf("4.修改所购车型n"); printf("5.修改联系电话n"); printf("6.修改车辆金额n"); printf("7.修改备注n"); printf("8.退出本菜单n"); printf("-n"); while(m=1) printf("请选择子菜单编号:"); scanf("%d",&item); switch(item) case 1: printf("请输入新的名称:n"); scanf("%s",s2); strcpy(memj.name,s2); break; case 2: printf("请输入新的编号:n"); scanf("%s",s2); strcpy(memj.num,s2); break; case 3: printf("请输入新的身份证号码:n"); scanf("%s",s2); strcpy(memj.id,s2); break; case 4: printf("请输入新的所购车型:n"); scanf("%s",s2); strcpy(memj.type,s2); break; case 5: printf("请输入新的联系电话:n"); scanf("%s",s2); strcpy(memj.phone,s2); break; case 6: printf("请输入新的车辆金额:n"); scanf("%s",s2); strcpy(memj.money,s2); break; case 7: printf("请输入新的备注:n"); scanf("%s",s2); strcpy(memj.remark,s2); break; case 8:m=0; printf("修改之后的数据:"); for(i=0;i<M;i+) printf("名称");printf("%sn",memi.name); printf("编号");printf("%sn",memi.num); printf("身份证号码");printf("%sn",memi.id); printf("所购车型");printf("%sn",memi.type); printf("联系电话");printf("%sn",memi.phone); printf("车辆金额");printf("%sn",memi.money); printf("备注");printf("%sn",memi.remark); printf("n");/*/void shanchu() /*删除函数*/ int i,j,flag=0; char s130; char ch; printf("请输入要删除会员的编号:n"); scanf("%s",s1); for(i=0;i<M;i+) if(strcmp(memi.num,s1)=0) flag=1; for(j=i;j<M-1;j+) memj=memj+1; if(flag=0) printf("该编号不存在!n"); if(flag=1) for(i=0;i<M;i+)printf("名称");printf("%sn",memi.name); printf("编号");printf("%sn",memi.num); printf("身份证号码");printf("%sn",memi.id); printf("所购车型");printf("%sn",memi.type); printf("联系电话");printf("%sn",memi.phone); printf("车辆金额");printf("%sn",memi.money); printf("备注");printf("%sn",memi.remark);printf("删除成功n"); printf(" 按0返回主菜单 n"); ch=getch(); if(ch='0') system("cls");zonghanshu(); 3.6查询模块亦称检索模块。如果信息太多查找起来很不方便,对此我们系统设计了查找模块,使用户可以很方便的找到自己需要的信息。本模块可通过输入会员的编号或者名称进行查找,之后系统会显示其所有的信息。输入信息不存在则退出本次查询。其代码如下:void mingcheng() int i;char Name30,ch;doprintf("请输入您所要查询的会员名称:"); scanf("%s",Name);for(i=0;i<M;i+)if(strcmp(memi.name,Name)=0)printf("名称");printf("%sn",memi.name);printf("编号");printf("%sn",memi.num);printf("身份证号码");printf("%sn",memi.id);printf("所购车型");printf("%sn",memi.type);printf("联系电话");printf("%sn",memi.phone);printf("车辆金额");printf("%sn",memi.money); printf("备注");printf("%sn",memi.remark);break;if(strcmp(memi.name,Name)!=0)printf("对不起您所要查询的会员不存在。");while(strcmp(memi.name,Name)!=0);printf(" 按0返回主菜单 n"); ch=getch(); if(ch='0') system("cls");zonghanshu();/*/void bianhao() int i; char num15,ch;doprintf("请输入您所要查询的编号:"); scanf("%s",num);for(i=0;i<M;i+)if(strcmp(memi.num,num)=0)printf("名称");printf("%sn",memi.name);printf("编号");printf("%sn",memi.num);printf("身份证号码");printf("%sn",memi.id);printf("所购车型");printf("%sn",memi.type);printf("联系电话");printf("%sn",memi.phone);printf("车辆金额");printf("%sn",memi.money); printf("备注");printf("%sn",memi.remark);break;if(strcmp(memi.num,num)!=0)printf("对不起您所要查询的会员不存在。");while(strcmp(memi.num,num)!=0);printf(" 按0返回主菜单 n"); ch=getch(); if(ch='0') system("cls");zonghanshu();3.9保存模块该模块的作用是保存管理员所存信息,以便用户查找。其代码如下:void save() FILE *fp; int i; char filepath20,ch; printf("输入要保存的文件路径:"); scanf("%s",&filepath); if(fp=fopen("d:filepath","w")=NULL)printf("n保存失败!");exit(0);for(i=0;i<M;i+)fprintf(fp,"%10s%10s%10s%10s%10s%10s%10s%",memi.name,memi.num,memi.id,memi.type,memi.money,memi.phone,memi.remark);fclose(fp);printf(" 按0返回主菜单 n");ch=getch();if(ch='0')system("cls");zonghanshu();3.10退出系统当对系统操作完成以后,想退出此操作只需在界面中选择退出系统模块的代号,系统就自动退出此次运行程序。其核心代码如下:system("cls"); 4.调试与测试4.1密码函数图2 密码函数图4.2主界面模块图3 主函数图4.3会员信息录入模块图4 会员信息录入图4.4会员信息查询模块图5 会员信息查询图4.5修改模块图6 修改图4.6删除模块图7 删除图4.7插入模块图8 插入图4.8存储模块图9 存储图遇到的问题:1.有的选项没有返回上一层的功能;2.密码没有用*代替,直接显示数字,不太安全;3.系统有些生硬,只能按部就班,较为繁琐。 5 总结这次的C语言程序设计实习有效的培养了学生独立思考的能力,提高了学生的动手操作水平。在具体操作中,巩固了这学期所学的C语言的理论知识,这也是实习的基本目的。通过实际操作,学会了C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。培养了学生独立思考问题的能力,提高了实际操作水平。通过这次对汽车会员管理系统的编译,我们了解了C语言程序设计的思想,我们的程序很实用,但它依然有许多不足之处,我所编译的程序容量有限,而且每次操作都要回到主界面,在这方面该系统还有待于进一步优化。C语言是一种基础的计算机高级语言,具有功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,通过这次的C语言程序设计更加深刻的了解了C语言的好处和其可用性。在这次课程设计中我也知道了自己的动手能力不强,有待于进一步提高。在设计过程中不能够灵活得把书本上的知识与实际相结合,在调试过程中一次次出错,差点是我放弃,但是在同组同学的帮助、鼓励和配合下,最终我完成了此次课程设计的任务。这也使我重新树立了自信心,相信自己可以做好,但是要扎实掌握理论知识,灵活运用。总之,通过这次实习我认识到了自己许多不足之处,在今后的学习生活中,一定要勤于思考,扎实掌握理论知识,灵活运用课上所学。参考文献1 谭浩强,张基温C语言程序设计教程(第3版)M北京:高等教育出版社,20062 吕凤煮C语言基础教程基础理论与案例M北京:清华大学出版社,20053 黄明、梁旭、万洪莉C语言课程设计M北京:电子工业出版社,20064 郭宁,郑小玲管理信息系统M北京:人民邮电出版社,20065 赵池龙,杨林,陈伟实用软件工程M北京:电子工业出版社,2006附录程序清单:#include<stdio.h>#include<string.h>#include <stdlib.h>#include<conio.h>#define M 300void zonghanshu();struct memberchar num10;char name15;char id20;char type20;char money20;char phone20;char remark25;memM;void pass()int a; /*密码函数*/ char s110="112233"char s210;do printf(" *n"); printf("n");printf(" 请 输 入 密 码 :n");printf("n");printf(" *n");gets(s2);if(strcmp(s1,s2)=0) a=1;elsea=0;if(a=1) /*比较输入的密码str1和设定的密码str2 是否相同*/ printf("密码输入正确n");else if(a=0)printf("对不起密码输入错误,请从新输入n");while(a=0);system("cls");/*/void fun1()int i=0;char ch;int flag;do /*输入会员信息函数*/printf("请输入第%d个会员的信息:n",i+1);printf("编号:");scanf("%s",&memi.num);printf("n");printf("名称:");scanf("%s",&memi.name);printf("n");printf("身份证号码:");scanf("%s",&memi.id);printf("n");printf("所购车型:");scanf("%s",&memi.type);printf("n");printf("联系