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