




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程设计题目:database类设计 (学生信息管理) 学生姓名 学 号 专 业 班 级 指导教师 二一一 年 十一月 二十四 日目录目录i1.概述11.1程序的基本功能21.2扩展功能22.课程设计的目的与要求2.1教学要求32.3教学目的33. 课程设计的内容与安排3.1 详细说明44.课程设计代码55.程序运行截图16参考文献191 概述本课程设计是面向对象程序设计课程的后继教学环节,学好C+语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C+实际应用程序。此次课程设计的题目及要求:实现一个简单的学生信息管理系统。1.1程序的基本功能系统的主要功
2、能是注册学生信息,对学生信息的增加修改,查询等功能。1.2扩展功能 各种信息都将存入student.txt文件中。 2、课程设计的目的与要求2.1 教学目的在面向对象程序设计课程教学的基础上,根据软件工程的方法与流程,在相对集中的实训教学时间内,通过一个功能较完整的小型应用系统的设计与开发,深入复习并进一步掌握面向对象的程序设计思想与方法。同时,作为整个实践教学体系一部分,系统培养学生采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。2.2 教学要求从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:1)根据实现的功能,划分出合理的对象类,明确对象类间的关系。2) 为
3、每个对象类设计正确的域和方法,为每个方法设计合理的方法体。同时,为对象类及内部的域和方法运用正确的修饰符,如访问控制符等。3)编程简练,程序功能齐全,能正确运行。4)说明书、流程图要清楚,规范(必须采用UML格式)5)课题完成后必须按要求提交课程设计报告,格式规范,内容详实。3、课程设计的内容与安排 设计一个Database类问题描述设计一个Database类。Database类是一个表的集合,而表又由行和列组成。例如,下面的雇员信息表包含三个记录,每个记录有四个字段( Employee、Name、Department和Boss)。学号姓名学院班主任111-11-1234CruzACCWard
4、er213-44-5649JohnstonMISMichaels321-88-7895TomFINBearskin基本要求能够完成对数据库的基本操作;包括创建数据库,实现对数据库里面的表的添加,删除;以及能够完成对表结构的修改(如添加或删除字段),以及对表中的记录进行添加和删除;能够完成对使用适当的查询语言从一个或多个表中查找相关信息。测试数据可以选取高校人员(教师、学生、职工等)数据库作为测试数据实现提示Database 类的公有接口包含如下数据成员: 创建一个表。 通过增加或删除字段修改表结构。 删除一个表。 在表中增加一个记录。 从表中删除记录。 用适当的查询语言从一个或多个表中查找信息
5、。代码如下:#include #include #include #include #include struct person /*个人信息*/ char name20; char num20; char Department20; char boss20; typedef struct linknode /定义节点的类型 struct person pe; /个人信息 bool flag; struct linknode* next;nodetype;class database nodetype* head;public: database(); database:database();
6、 linknode* creatdatabase(int); /创建链表 int databaselen(); /返回链表长度 nodetype* findnode(int); /通过查找序号返回节点的指针 nodetype* find(char c); /通过查找姓名返回节点的指针 int find2(char c); /通过查找姓名返回节点的序号 nodetype* insnode(int); /插入节点 void delnode(int); /删除节点 nodetype* load(); /初始化:从外部读入数据 void readstr(FILE *f,char *string); /
7、读行函数 bool check(char *a, char *b); /对比两个字符串是否相等 void help(); /显示帮助菜单 void editperson(nodetype*); /编辑个人说明 void dispname(); /显示所有学生姓名 void dispperson(nodetype*); /显示一个学生的个人说明;/-class Operater database L1;public: void Loop(); /主循环 void display(); /显示菜单 ;/-database:database() head = NULL;/-bool database
8、:check(char *a, char *b) /对比两个字符串是否相等 int i; int j=strlen(b); for(i=0; ij; i+) if(*a=*b) a+; b+; else return 0; return 1;/-nodetype*database:creatdatabase (int n) /创建链表 nodetype *h=NULL, *s, *t; int i=1; for(int j=0; jnext=NULL; t=h; else /创建其余节点 s=(nodetype*)malloc(sizeof(nodetype); s-next=NULL; t-
9、next=s; t=s; /t 始终指向生成的单链表的最后一个节点 i+; head=h; return h;/-void database:readstr(FILE *f,char *string) do fgets(string, 255, f); /fgets(): 从文件 f 读入长度为 255-1 的字符串 while (string0 = /) | (string0 = n); return;/-nodetype*database:load() FILE *fp; nodetype *p; char c255; int num; if(fp=fopen(student.txt, r
10、)=NULL) cout打开文件失败endl; return 0; readstr(fp, c); sscanf(c, The Length Of Link: %d, &num); /获取链表长度 p=creatdatabase(num); /创建链表 for(int i=0; , c); readstr(fp, c); strcpy(p-pe.num, c); readstr(fp, c); strcpy(p-pe.Department , c); readstr(fp, c); strcpy(p-pe.boss , c); p=p-next; fclose(fp); ret
11、urn p;void database:dispname() /显示所有学生姓名 nodetype* p=head; cout现有的学生: endl; cout=endl; if(p=NULL) cout没有任何学生数据endl; while(p!=NULL) cout=endl; couttt学生的学号ttpe.numtt学生的姓名tt所属的学院 ttpe.Departmenttt班主任姓名ttpe.boss; p=p-next; int database:databaselen() /返回链表长度 int i=0; nodetype* p=head; while(p!=N
12、ULL) p=p-next; i+; return i;/-nodetype* database:findnode (int i) /通过查找序号返回节点的指针 nodetype* p=head; int j=1; if( idatabaselen()|i=0 ) / i 上溢或下溢 return NULL; else while( p!=NULL & jnext; return p; /-nodetype* database:find(char c) /通过查找姓名返回节点的指针 nodetype* p=head; int j=1; strcat(c, n); /从外部读入的字符串末尾都带了
13、一个换行符 while( p!=NULL & !(check(c, ) /查找第 i 个节点并由 p 指向该节点 j+; p=p-next; return p;/-int database:find2(char c) /通过查找姓名返回节点的序号 nodetype* p=head; int j=1; strcat(c, n); /从外部读入的字符串末尾都带了一个换行符 while( p!=NULL & !(check(c, ) /查找第 i 个节点并由 p 指向该节点 j+; p=p-next; return j;nodetype*database:insn
14、ode(int i) nodetype *h=head, *p, *s; s=(nodetype*)malloc(sizeof(nodetype); /创建节点 s s-next=NULL; if(i=0) /i=0 时 s 作为该单链表的第一个节点 s-next = h; h=s; /重新定义头节点 else p=findnode(i); /查找第 i 个节点,并由 p 指向该节点 if(p!=NULL) s-next=p-next; p-next=s; else cout输入的 i 值不正确next; free(p); else p=findnode(i-1); /查找第 i-1 个节点,
15、并由 p 指向这个节点 if(p!=NULL & p-next!=NULL) s=p-next; / s 指向要删除的节点 p-next=s-next; free(s); cout学生信息已被删除; else cout输入的 i 值不正确endl; head=h;void database:editperson(nodetype* p) char c100; cout请输入姓名: c; strcat(c, n); strcpy(, c); cout请输入学号: c; strcat(c, n); strcpy(p-pe.num, c); cout请输入专业: c;
16、 strcat(c, n); strcpy(p-pe.Department, c); cout班主任姓名: c; strcat(c, n); strcpy(p-pe.boss, c); cout编辑个人信息完成!endl; dispperson(p);void database:dispperson(nodetype* p) cout学生的姓名: ; cout学生的学号: pe.num; cout学生的专业: pe.Department; cout班主任姓名: pe.boss;/-database:database() nodetype *pa=head, *pb; if(pa!
17、=NULL) pb=pa-next; if(pb=NULL) free(pa); else while(pb!=NULL) free(pa); pa=pb; pb=pb-next; free(pa); void Operater:display() coutendlendl; cout * 学生管理系统 *endl; cout endl; cout endl; cout 菜单选顶 endl; cout =endl; cout endl; cout 1.学生注册 2.删除信息 endl; cout 3.信息显示 4.查询信息 endl; cout 5.修改信息 6.帮助菜单 endl; cout
18、 7.保存数据 0.退出系统 endl; cout endl; cout endl; cout endl;void Operater:Loop() database L1; char ch20; nodetype *p, *head; int i; /存放节点序号 p=L1.load(); /初始化:从外部读入数据创建链表 head=p; display(); while(1) coutendlendl; cout 6 ): ch; system(cls); if(L1.check(ch, 1) p=L1.insnode(0); head=p; system(cls); coutendl; c
19、out= 学生信息注册 =endl; cout下面输入个人信息: endl; L1.editperson(p); if(L1.check(ch, 2) system(cls); coutendl; cout= 删除学生信息 =endl; L1.dispname(); cout请输入学生姓名: ch; i=L1.find2(ch); L1.delnode(i); if(L1.check(ch, 3) system(cls); coutendl; cout=显示所有信息 =endl; L1.dispname(); if(L1.check(ch, 4) system(cls); coutendl;
20、cout= 学生信息查询 =endl; L1.dispname(); cout请输入学生姓名: ch; p=L1.find(ch); L1.dispperson(p); if(L1.check(ch, 6) display(); if(L1.check(ch, 7) /保存数据 FILE *fp; if(fp=fopen(student.txt, w)=NULL) cout打开文件失败endl; return; int i; char t255; sprintf(t, The Length Of Link: %dn, L1.databaselen(); fputs(t, fp); strcpy(t, n); fputs(t, fp); p=L1.findnode(1); /将链表头指针赋予 p for(i=0; ipe.num, fp); /输出学号 fputs(, fp); /输出姓名 fputs(t, fp); p=p-next; p=head; fclose(fp); if(L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海四小考试试题及答案
- 宠物关系测试题及答案
- 党史研究面试题及答案
- 党章考试题型及答案
- 财务管理高级应用试题及答案
- 答题演绎测试题及答案
- 2025年中级会计实务答题助手试题及答案
- 2025年财务管理考试经验积累试题及答案
- 提升职业技能的个人规划计划
- 小班同伴关系的建立与促进计划
- 河北经贸大学经济管理学院《大学英语》课件-Unit3The art of communication
- 国际经济学罗伯特凯伯答案
- 新部编版四年级下册道德与法治全册优秀教学课件(1-12课)
- 商业推理测评题库40题
- 半导体用湿式化学品的应用
- (PEP)人教版五年级下册英语《Unit 5 Part B Let's talk》教学设计
- 基于PLC控制的物料分拣系统设计
- 上期开特下期出特公式
- 案件进度管理规定表--执行
- 前部分拼音四声调
- 标准工程量清单细目编号公路工程
评论
0/150
提交评论