




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计课程名称 : C语言课程设计 设计题目: 班级档案管理系统 学生姓名: 学 号: 专业班级: 指导老师: 数学与信息技术学院2011 年 11 月1日说 明1、设计目的1.复习巩固C语言的基础知识,进一步加深对C语言编程的理解和掌握。了解和掌握C语言面向对象程序设计的基本过程,熟习C语言的特点。2.利用所学知识,理论和实际结合,利用资源,采用模块化的结构,学会把整体规划成一个个小程序,再把各个部分合成一个完整系统,内心牢记模块化。使用模仿修改自主设计相结合的方法,锻炼自己综合分析解决实际问题的编程能力。3. 加深对C语言课程所学知识的理解,进一步巩固C语言讲法规则。学会编制结构清
2、晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,以及文件的读写操作等。4. 培养自己的耐心,遇到困难永不退缩。培养我们在项目开发中team合作精神、创新意识以及实战能力。2、设计题目设计题目:班级档案管理系统 对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。功能要求
3、:(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。(2)本系统显示这样的菜单:请选择系统功能项:a 学生基本信息录入b 学生基本信息显示c 学生基本信息保存d 学生基本信息删除e 学生基本信息修改(要求先输入密码)(1)修改某学生学号(2)修改某学生姓名(3)修改某学生性别(4)修改某学生年龄f 学生基本信息查询(1)按学号查询(2)按姓名查询(3)按性别查询(4)按年龄查询g. 退出系统(3)执行一个具体的功能之后,程序将重新显示菜单。(4)将学生基本信息保存到文件中。(5)进入系统之前要先输入密码。 3、设计要求和设计报告设计要求1.模块
4、设计合理、可行。2.界面美观大方,人机交互方便、简捷。3.代码精炼,可读性好。4.应用面向对象设计方法进行设计使用,数组、结构体、链表等作为数据结构。设计报告1.需求分析:涉及的知识基础(概述),解决问题的基本思路。2.总体设计:功能模块框图,流程图等。3.算法分析:算法描述、实现方法、详细流程图等。4.代码编写:主要模块的代码分析,要有详细的注释等。5.编程调试:调试过程与步骤,发现的问题,解决的办法等。1. 总体设计-62. 详细设计-73. 调试与测试-104. 源程序清单-115. 执行结果-206. 总结与体会-247. 参考文献-261.总体设计系统功能结构图年龄查询修改年龄修改性
5、别修改姓名修改学号性别查询姓名查询学号查询班级档案管理系统 学生基本信息录入学生基本信息显示学生基本信息保存学生基本信息删除学生基本信息修改验证系统密码学生基本信息查询 按年龄查询函数调用关系图main ( )void print()bool Check()void Get()void Display()void Save()void Modify()void Delete()void Deletevoid Deletevoid Deletevoid Search()2.详细设计1.需求分析 对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作管理
6、。 本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。 班级档案管理系统有8个功能,把这8个功能做成8个子函数,最后在main函数里进行对这8个子函数实现,来实现整个系统的操作。2.设计思路 结构体数组: struct student /*定义结构体数组*/ char name100; /*姓名*/ char num100; /*学号*/ char sex; /*性别*/ int age; /*年龄*/ char note100; /*备注*/; 程序的模块组成:bool Check(char pas6) /密码验证,读取c:1.txtvoid Ge
7、t(struct student *arr , int n) /学生基本信息录入void Display(struct student* arr , int n)/学生基本信息显示void Save(struct student* arr , int n)/学生基本信息保存,保存在c:student.txtvoid Modify(struct student* arr , int n)/学生基本信息修改1-修改学号2-修改姓名3-修改性别4-修改年龄void Delete(struct student* arr , int n)/学生基本信息删除void Search(struct stude
8、nt* arr , int n)/学生基本信息查询1-学号查询2-姓名查询3-性别查询4-年龄查询 各函数的主要功能 密码验证函数:进入系统需验证正确的密码,修改学生信息时也需要验证密码 录入函数:随时输入学生信息 显示函数:显示所有学生信息 删除函数:删除某学生的信息 修改函数:修改学生基本信息 查找函数:方便查找某个学生的信息 保存函数:保存好学生信息,以免丢失3.调试与测试问题1:输入密码验证 起初构想的时候打算用if函数的,事先用数组存好密码,用if函数来匹配,如果匹配则进入系统,不然进不去提示密码错误,但是那个方法貌似效率不高。 解决办法:于是通过资料搜索采用bool Check(c
9、har pas6)函数,此函数通过fopen读取事先存储在C盘里的1.txt文本,再加上strcmp字符串比较函数和键盘输入的密码匹配,如果匹配则进入系统,不然则显示密码错误。问题2:删除模块 用void Delete(struct student* arr,int n)函数实现,如何使已经录入的学生数据删除。解决办法:通过查阅书籍用到了strcmp字符串比较函数,如果两个学号匹配,则用strcpy字符串复制函数,用空字符串复制到原有信息,删除功能就实现了。4.源程序清单#include <stdio.h> #include <stdlib.h> #include &l
10、t;string.h>#include <conio.h> #define N 3struct student char name100; char num100; char sex; int age; char note100;void print()/打印基本信息printf("|*欢迎进入学生档案管理系统*|n");printf("|-主菜单-|n");printf("|-1-学生基本信息录入*2-学生基本信息显示-|n"); printf("|-3-学生基本信息保存*4-学生基本信息删除-|n&qu
11、ot;); printf("|-5-学生基本信息修改*6-学生基本信息查询-|n"); printf("|-7-退出学生信息系统* -|n"); printf("|-|n"); bool Check(char pas6)/密码验证 FILE *fp; char ch; char a7=" " int i = 0; if (fp=fopen("c:1.txt","r")=NULL)/读取密码 printf("打开文件失败!n"); exit(0); ch=f
12、getc(fp); while (ch!=EOF&&i<6) ai = ch; ch=fgetc(fp); i+; a6 = '0' if (!strcmp(pas,a) return true; else printf("密码错误n"); return false; fclose(fp);void Get(struct student *arr,int n)/学生基本信息录入 int i; for (i = 0;i<n;i+) printf("输入学生的基本信息:姓名 学号 性别(m/w) 年龄 备注n");
13、 scanf("%s %s %c %d %s",,arri.num,&arri.sex,&arri.age,arri.note); void Display(struct student* arr,int n)/学生基本信息显示 int i; printf("学生信息:姓名 学号 性别 年龄 备注n"); for (i = 0;i<n;i+) printf("%15s%15s%15c%15d%15sn",,arri.num,arri.sex,arri.age,arri.note
14、); void Save(struct student* arr,int n)/学生基本信息保存,保存在c:student.txt FILE * fp; fp= fopen("c:student.txt","w+"); if (fp = NULL) printf("文件不存在!n"); exit(0); fwrite(arr,sizeof(struct student)*n,n,fp); fclose(fp);void Modfiy(struct student* arr,int n)/学生基本信息修改 char number10;
15、int temp; bool flag=false; char pass6; 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); s
16、witch(temp) case 1:/修改学号 printf("修改学生信息:n"); printf("请输入学号:n"); scanf("%s",number); for (int i =0;i<n;i+) if (!strcmp(number,arri.num) printf("学生信息:姓名 学号 性别 年龄 备注 n"); printf("%4s%4s%4c%4d%4sn",,arri.num,arri.sex,arri.age,arri.note); prin
17、tf("重新输入该学生的学号:n"); scanf("%s",arri.num); Save(arr,n); flag = true; if (flag = false) printf("该学生不存在!:n"); break; case 2:/修改姓名 printf("修改学生信息:n"); printf("请输入学号:n"); scanf("%s",number); for (int i =0;i<n;i+) if (!strcmp(number,arri.num)
18、printf("学生信息:姓名 学号 性别 年龄 备注 n"); printf("%4s%4s%4c%4d%4sn",,arri.num,arri.sex,arri.age,arri.note); printf("重新输入该学生的姓名:n"); scanf("%s",); Save(arr,n); flag = true; if (flag = false) printf("该学生不存在!:n"); break; case 3:/修改性别 printf(&qu
19、ot;修改学生信息:n"); printf("请输入学号:n"); scanf("%s",number); for (int i =0;i<n;i+) if (!strcmp(number,arri.num) printf("学生信息:姓名 学号 性别 年龄 备注 n"); printf("%4s%4s%4c%4d%4sn",,arri.num,arri.sex,arri.age,arri.note); printf("重新输入该学生的性别:n"); scanf
20、("%c",&arri.sex); Save(arr,n); flag = true; if (flag = false) printf("该学生不存在!:n"); break; case 4:/修改年龄 printf("修改学生信息:n"); printf("请输入学号:n"); scanf("%s",number); for (int i =0;i<n;i+) if (!strcmp(number,arri.num) printf("学生信息:姓名 学号 性别 年龄
21、备注 n"); printf("%4s%4s%4c%4d%4sn",,arri.num,arri.sex,arri.age,arri.note); printf("重新输入该学生的年龄:n"); scanf("%d",&arri.age); Save(arr,n); flag = true; if (flag = false) printf("该学生不存在!:n"); break; default: break; void Delete(struct student* arr,i
22、nt n)/学生基本信息删除 int i; char number10; bool flag=false; printf("删除学生信息:n"); printf("请输入学号:n"); scanf("%s",number); for (i =0;i<n;i+) if (!strcmp(number,arri.num) strcpy(," "); strcpy(arri.num," "); strcpy(arri.note," "); arri.sex
23、= ' ' arri.age = 0; Save(arr,n); flag = true; if (flag = true) printf("该学生不存在!:n"); void Search(struct student* arr,int n)/学生基本信息查询 int temp,i; bool flag=false; printf("-1-学号查询-n"); printf("-2-姓名查询-n"); printf("-3-性别查询-n"); printf("-4-年龄查询-n"
24、); printf("-5-退出 -n"); scanf("%d",&temp); switch (temp) case 1:/按照学号查询 char num10; printf("请输入学号:n"); scanf("%s",num); for ( i =0;i<n;i+) if (!strcmp(num,arri.num) printf("%12s%12s%12c%12d%12sn",,arri.num, arri.sex,arri.age,arri.note)
25、; flag = true; if (!flag) printf("该学生不存在.n"); break; case 2:/按照名字查询 char num10; printf("please input name:n"); scanf("%s",num); for ( i =0;i<n;i+) if (!strcmp(num,) printf("%12s%12s%12c%12d%12s",,arri.num, arri.sex,arri.age,arri.note); fla
26、g = true; if (!flag) printf("该学生不存在.n"); break; case 3:/按照性别查询 char ch; printf("请输入性别:n"); /scanf("%c",&ch); ch = getch(); for ( i =0;i<n;i+) if (ch = arri.sex) printf("%12s%12s%12c%12d%12sn",,arri.num, arri.sex,arri.age,arri.note); flag = true
27、; if (!flag) printf("该学生不存在:n"); break; case 4:/按照年龄查询 char num_age; printf("请输入年龄:n"); scanf("%d",&num_age); for ( i =0;i<n;i+) if (num_age = arri.age) printf("%12s%12s%12c%12d%12sn",,arri.num, arri.sex,arri.age,arri.note); flag = true; if (!f
28、lag) printf("该学生不存在.n"); break; default: break; void main() struct student arrN; char ps6; bool flag =false; printf("请输入密码:n"); scanf("%s",ps); flag = Check(ps); if (flag) int select; print(); scanf("%d",&select); while (0<select && select <7
29、 ) switch (select) case 1: Get(arr,N); print(); break; case 2: Display(arr,N); print(); break; case 3: Save(arr,N); print(); break; case 4: Delete(arr,N); print(); break; case 5: Modify(arr,N); print(); break; case 6: Search(arr,N); print(); break; default: break; printf("请选择:n"); scanf("%d",&select); 5.执行结果测试的时候要用两个版本测试:Debug版本:用于调试程序Release版本:用于发布程序Debug:进入系统时请输入密码 Release:6.总结与体会当我拿到这个程序设计题目的时候,我就意识到要把整个系统按照模块化来处理,整个系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《颈椎病课件》课件
- 我会排队-幼儿园托班安全教育
- 安全教育体系标准化建设
- 2025年1月工业分析与检验试题+参考答案解析
- 2024年1+x智能网联模考试题+答案(附解析)
- 1+x网店推广模考试题含答案(附解析)
- 《深入解读安全生产禁令》课件
- 电机远程控制考核试卷
- 腈纶纤维在汽车内饰中的应用考核试卷
- 猪肉食品安全管理制度
- 酒馆入股合同协议书
- 品质主管面试题及答案
- 基于核心素养下的高中数学情境教学研究
- 《阿里巴巴招聘案例》课件
- 福建省三明市2025年普通高中高三毕业班五月质量检测语文(三明四检)
- 中国精神课件
- 2025年福建福州市电子信息集团有限公司招聘笔试参考题库附带答案详解
- 2024年甘南州临潭县卫生健康系统引进紧缺卫生专业技术人才真题
- 成都市公共交通集团有限公司招聘笔试真题2024
- 天津市和平区二十中学2025届学业水平考试化学试题模拟卷(九)含解析
- 2025高中英语电子版单选题100道及答案
评论
0/150
提交评论