C语言程序设计.docx
- 文档编号:9545044
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:29
- 大小:384.95KB
C语言程序设计.docx
《C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计.docx(29页珍藏版)》请在冰豆网上搜索。
C语言程序设计
C语言程序设计
课程名称:
C语言课程设计
设计题目:
班级档案管理系统
学生姓名:
学号:
专业班级:
指导老师:
数学与信息技术学院
2011年11月1日
说明
1、设计目的
1.复习巩固C语言的基础知识,进一步加深对C语言编程的理解和掌握。
了解和掌握C语言面向对象程序设计的基本过程,熟习C语言的特点。
2.利用所学知识,理论和实际结合,利用资源,采用模块化的结构,学会把整体规划成一个个小程序,再把各个部分合成一个完整系统,内心牢记模块化。
使用模仿修改自主设计相结合的方法,锻炼自己综合分析解决实际问题的编程能力。
3.加深对C语言课程所学知识的理解,进一步巩固C语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
在熟练掌握C语言的基本知识:
数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,以及文件的读写操作等。
4.培养自己的耐心,遇到困难永不退缩。
培养我们在项目开发中team合作精神、创新意识以及实战能力。
2、设计题目
设计题目:
班级档案管理系统
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
功能要求:
(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
学号、姓名、性别、年龄、备注。
(2)本系统显示这样的菜单:
请选择系统功能项:
a学生基本信息录入
b学生基本信息显示
c学生基本信息保存
d学生基本信息删除
e学生基本信息修改(要求先输入密码)
(1)修改某学生学号
(2)修改某学生姓名
(3)修改某学生性别
(4)修改某学生年龄
f学生基本信息查询
(1)按学号查询
(2)按姓名查询
(3)按性别查询
(4)按年龄查询
g.退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生基本信息保存到文件中。
(5)进入系统之前要先输入密码。
3、设计要求和设计报告
设计要求
1.模块设计合理、可行。
2.界面美观大方,人机交互方便、简捷。
3.代码精炼,可读性好。
4.应用面向对象设计方法进行设计使用,数组、结构体、链表等作为数据结构。
设计报告
1.需求分析:
涉及的知识基础(概述),解决问题的基本思路。
2.总体设计:
功能模块框图,流程图等。
3.算法分析:
算法描述、实现方法、详细流程图等。
4.代码编写:
主要模块的代码分析,要有详细的注释等。
5.编程调试:
调试过程与步骤,发现的问题,解决的办法等。
1.总体设计---------------------------6
2.详细设计---------------------------7
3.调试与测试------------------------10
4.源程序清单------------------------11
5.执行结果---------------------------20
6.总结与体会------------------------24
7.参考文献---------------------------26
1.总体设计
系统功能结构图
修改年龄
函数调用关系图
2.详细设计
1.需求分析
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作管理。
本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
学号、姓名、性别、年龄、备注。
班级档案管理系统有8个功能,把这8个功能做成8个子函数,最后在main函数里进行对这8个子函数实现,来实现整个系统的操作。
2.设计思路
结构体数组:
structstudent/*定义结构体数组*/
{
charname[100];/*姓名*/
charnum[100];/*学号*/
charsex;/*性别*/
intage;/*年龄*/
charnote[100];/*备注*/
};
程序的模块组成:
boolCheck(charpas[6])//密码验证,读取c:
\\1.txt
voidGet(structstudent*arr,intn)//学生基本信息录入
voidDisplay(structstudent*arr,intn)//学生基本信息显示
voidSave(structstudent*arr,intn)//学生基本信息保存,保存在c:
\\student.txt
voidModify(structstudent*arr,intn)//学生基本信息修改
{
1-修改学号
2-修改姓名
3-修改性别
4-修改年龄
}
voidDelete(structstudent*arr,intn)//学生基本信息删除
voidSearch(structstudent*arr,intn)//学生基本信息查询
{
1-学号查询
2-姓名查询
3-性别查询
4-年龄查询
}
各函数的主要功能
密码验证函数:
进入系统需验证正确的密码,修改学生信息时也需要验证密码
录入函数:
随时输入学生信息
显示函数:
显示所有学生信息
删除函数:
删除某学生的信息
修改函数:
修改学生基本信息
查找函数:
方便查找某个学生的信息
保存函数:
保存好学生信息,以免丢失
3.调试与测试
问题1:
输入密码验证
起初构想的时候打算用if函数的,事先用数组存好密码,用if函数来匹配,如果匹配则进入系统,不然进不去提示密码错误,但是那个方法貌似效率不高。
解决办法:
于是通过资料搜索采用boolCheck(charpas[6])函数,此函数通过fopen读取事先存储在C盘里的1.txt文本,再加上strcmp字符串比较函数和键盘输入的密码匹配,如果匹配则进入系统,不然则显示密码错误。
问题2:
删除模块
用voidDelete(structstudent*arr,intn)函数实现,如何使已经录入的学生数据删除。
解决办法:
通过查阅书籍用到了strcmp字符串比较函数,如果两个学号匹配,则用strcpy字符串复制函数,用空字符串复制到原有信息,删除功能就实现了。
4.源程序清单
#include
#include
#include
#include
#defineN3
structstudent
{
charname[100];
charnum[100];
charsex;
intage;
charnote[100];
};
voidprint()//打印基本信息
{
printf("|************欢迎进入学生档案管理系统*******************|\n");
printf("|----------------------------------主菜单---------------------------------------|\n");
printf("|-----------1-学生基本信息录入*2-学生基本信息显示----------------|\n");
printf("|-----------3-学生基本信息保存*4-学生基本信息删除-----------------|\n");
printf("|-----------5-学生基本信息修改*6-学生基本信息查询-----------------|\n");
printf("|-----------7-退出学生信息系统*-------------------------------------------|\n");
printf("|-----------------------------------------------------------------------------------|\n");
}
boolCheck(charpas[6])//密码验证
{
FILE*fp;
charch;
chara[7]={""};
inti=0;
if((fp=fopen("c:
\\1.txt","r"))==NULL)//读取密码
{
printf("打开文件失败!
\n");
exit(0);
}
ch=fgetc(fp);
while(ch!
=EOF&&i<6)
{
a[i]=ch;
ch=fgetc(fp);
i++;
}
a[6]='\0';
if(!
strcmp(pas,a))
{
returntrue;
}
else
{
printf("密码错误\n");
returnfalse;
}
fclose(fp);
}
voidGet(structstudent*arr,intn)//学生基本信息录入
{
inti;
for(i=0;i { printf("输入学生的基本信息: 姓名学号性别(m/w)年龄备注\n"); scanf("%s%s%c%d%s",arr[i].name,arr[i].num,&arr[i].sex,&arr[i].age,arr[i].note); } } voidDisplay(structstudent*arr,intn)//学生基本信息显示 { inti; printf("学生信息: 姓名学号性别年龄备注\n"); for(i=0;i { printf("%15s%15s%15c%15d%15s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note); } } voidSave(structstudent*arr,intn)//学生基本信息保存,保存在c: \\student.txt { FILE*fp; fp=fopen("c: \\student.txt","w+"); if(fp==NULL) { printf("文件不存在! \n"); exit(0); } fwrite(arr,sizeof(structstudent)*n,n,fp); fclose(fp); } voidModfiy(structstudent*arr,intn)//学生基本信息修改 { charnumber[10]; inttemp; boolflag=false; charpass[6]; printf("请输入密码: \n"); scanf("%s",pass); if(Check(pass)) { printf("---------------1-修改学号-----------\n"); printf("---------------2-修改姓名-----------\n"); printf("---------------3-修改性别-----------\n"); printf("---------------4-修改年龄-----------\n"); printf("---------------5-退出---------\n"); scanf("%d",&temp); switch(temp) { case1: //修改学号 { printf("修改学生信息: \n"); printf("请输入学号: \n"); scanf("%s",number); for(inti=0;i { if(! strcmp(number,arr[i].num)) { printf("学生信息: 姓名学号性别年龄备注\n"); printf("%4s%4s%4c%4d%4s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note); printf("重新输入该学生的学号: \n"); scanf("%s",arr[i].num); Save(arr,n); flag=true; if(flag==false) { printf("该学生不存在! : \n"); } } } } break; case2: //修改姓名 { printf("修改学生信息: \n"); printf("请输入学号: \n"); scanf("%s",number); for(inti=0;i { if(! strcmp(number,arr[i].num)) { printf("学生信息: 姓名学号性别年龄备注\n"); printf("%4s%4s%4c%4d%4s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note); printf("重新输入该学生的姓名: \n"); scanf("%s",arr[i].name); Save(arr,n); flag=true; if(flag==false) { printf("该学生不存在! : \n"); } } } } break; case3: //修改性别 { printf("修改学生信息: \n"); printf("请输入学号: \n"); scanf("%s",number); for(inti=0;i { if(! strcmp(number,arr[i].num)) { printf("学生信息: 姓名学号性别年龄备注\n"); printf("%4s%4s%4c%4d%4s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note); printf("重新输入该学生的性别: \n"); scanf("%c",&arr[i].sex); Save(arr,n); flag=true; if(flag==false) { printf("该学生不存在! : \n"); } } } } break; case4: //修改年龄 { printf("修改学生信息: \n"); printf("请输入学号: \n"); scanf("%s",number); for(inti=0;i { if(! strcmp(number,arr[i].num)) { printf("学生信息: 姓名学号性别年龄备注\n"); printf("%4s%4s%4c%4d%4s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note); printf("重新输入该学生的年龄: \n"); scanf("%d",&arr[i].age); Save(arr,n); flag=true; if(flag==false) { printf("该学生不存在! : \n"); } } } } break; default: break; } } } voidDelete(structstudent*arr,intn)//学生基本信息删除 { inti; charnumber[10]; boolflag=false; printf("删除学生信息: \n"); printf("请输入学号: \n"); scanf("%s",number); for(i=0;i { if(! strcmp(number,arr[i].num)) { strcpy(arr[i].name,""); strcpy(arr[i].num,""); strcpy(arr[i].note,""); arr[i].sex=''; arr[i].age=0; Save(arr,n); flag=true; } } if(flag==true) { printf("该学生不存在! : \n"); } } voidSearch(structstudent*arr,intn)//学生基本信息查询 { inttemp,i; boolflag=false; printf("---------------1-学号查询-----------\n"); printf("---------------2-姓名查询-----------\n"); printf("---------------3-性别查询-----------\n"); printf("---------------4-年龄查询-----------\n"); printf("---------------5-退出---------\n"); scanf("%d",&temp); switch(temp) { case1: //按照学号查询 { charnum[10]; printf("请输入学号: \n"); scanf("%s",num); for(i=0;i { if(! strcmp(num,arr[i].num)) { printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].num, arr[i].sex,arr[i].age,arr[i].note); flag=true; } } if(! flag) { printf("该学生不存在.\n"); } } break; case2: //按照名字查询 { charnum[10]; printf("pleaseinputname: \n"); scanf("%s",num); for(i=0;i { if(! strcmp(num,arr[i].name)) { printf("%12s%12s%12c%12d%12s",arr[i].name,arr[i].num, arr[i].sex,arr[i].age,arr[i].note); flag=true; } } if(! flag) { printf("该学生不存在.\n"); } } break; case3: //按照性别查询 { charch; printf("请输入性别: \n"); //scanf("%c",&ch); ch=getch(); for(i=0;i { if(ch==arr[i].sex) { printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].num, arr[i].sex,arr[i].age,arr[i].note); flag=true; } } if(! flag) { printf("该学生不存在: \n"); } } break; case4: //按照年龄查询 { charnum_age; printf("请输入年龄: \n"); scanf("%d",&num_age); for(i=0;i { if(num_age==arr[i].age) { printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].num, arr[i].sex,arr[i].age,arr[i].note); flag=true; } } if(! flag) { printf("该学生不存在.\n"); } } break; default: break; } } voidmain() { structstudentarr[N]; charps[6]; boolflag=false; printf("请输入密码: \n"); scanf("%s",ps); flag=Check(ps); if(flag) { intselect; print(); scanf("%d",&select); while(0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)