版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、19课程设计报告课程设计题目: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-1234CruzACCWa
4、rder213-44-5649JohnstonMISMichaels321-88-7895TomFINBearskin基本要求能够完成对数据库的基本操作;包括创建数据库,实现对数据库里面的表的添加,删除;以及能够完成对表结构的修改(如添加或删除字段),以及对表中的记录进行添加和删除;能够完成对使用适当的查询语言从一个或多个表中查找相关信息。测试数据可以选取高校人员(教师、学生、职工等)数据库作为测试数据实现提示Database 类的公有接口包含如下数据成员: 创建一个表。 通过增加或删除字段修改表结构。 删除一个表。 在表中增加一个记录。 从表中删除记录。 用适当的查询语言从一个或多个表中查找
5、信息。代码如下:#include <iostream.h> #include <malloc.h> #include <string.h> #include <stdio.h> #include <stdlib.h> struct person /*个人信息*/ char name20; char num20; char Department20; char boss20; typedef struct linknode /定义节点的类型 struct person pe; /个人信息 bool flag; struct linkno
6、de* next;nodetype;class database nodetype* head;public: database(); database:database(); linknode* creatdatabase(int); /创建链表 int databaselen(); /返回链表长度 nodetype* findnode(int); /通过查找序号返回节点的指针 nodetype* find(char c); /通过查找姓名返回节点的指针 int find2(char c); /通过查找姓名返回节点的序号 nodetype* insnode(int); /插入节点 void
7、delnode(int); /删除节点 nodetype* load(); /初始化:从外部读入数据 void readstr(FILE *f,char *string); /读行函数 bool check(char *a, char *b); /对比两个字符串是否相等 void help(); /显示帮助菜单 void editperson(nodetype*); /编辑个人说明 void dispname(); /显示所有学生姓名 void dispperson(nodetype*); /显示一个学生的个人说明;/-class Operater database L1;public: vo
8、id Loop(); /主循环 void display(); /显示菜单 ;/-database:database() head = NULL;/-bool database:check(char *a, char *b) /对比两个字符串是否相等 int i; int j=strlen(b); for(i=0; i<j; 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(
9、int j=0; j<n; j+) if(i=1) /创建第一个节点 h=(nodetype*)malloc(sizeof(nodetype); h->next=NULL; t=h; else /创建其余节点 s=(nodetype*)malloc(sizeof(nodetype); s->next=NULL; t->next=s; t=s; /t 始终指向生成的单链表的最后一个节点 i+; head=h; return h;/-void database:readstr(FILE *f,char *string) do fgets(string, 255, f); /
10、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")=NULL) cout<<"打开文件失败"<<endl; return 0; readstr(fp, c); sscanf
11、(c, "The Length Of Link: %d", &num); /获取链表长度 p=creatdatabase(num); /创建链表 for(int i=0; i<num; i+) readstr(fp, c); strcpy(p->, 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->nex
12、t; fclose(fp); return p;void database:dispname() /显示所有学生姓名 nodetype* p=head; cout<<"现有的学生: "<<endl; cout<<"="<<endl; if(p=NULL) cout<<"没有任何学生数据"<<endl; while(p!=NULL) cout<<"="<<endl; cout<<"tt学生的学号&qu
13、ot;<<"tt"<<p->pe.num<<"tt学生的姓名"<<"tt"<<p-><<"tt所属的学院" <<"tt"<<p->pe.Department<<"tt班主任姓名"<<"tt"<<p->pe.boss; p=p->next; int database:databasel
14、en() /返回链表长度 int i=0; nodetype* p=head; while(p!=NULL) p=p->next; i+; return i;/-nodetype* database:findnode (int i) /通过查找序号返回节点的指针 nodetype* p=head; int j=1; if( i>databaselen()|i<=0 ) / i 上溢或下溢 return NULL; else while( p!=NULL && j<i ) /查找第 i 个节点并由 p 指向该节点 j+; p=p->next; ret
15、urn p; /-nodetype* database:find(char c) /通过查找姓名返回节点的指针 nodetype* p=head; int j=1; strcat(c, "n"); /从外部读入的字符串末尾都带了一个换行符 while( p!=NULL && !(check(c, p->) /查找第 i 个节点并由 p 指向该节点 j+; p=p->next; return p;/-int database:find2(char c) /通过查找姓名返回节点的序号 nodetype* p=head; int j=1;
16、 strcat(c, "n"); /从外部读入的字符串末尾都带了一个换行符 while( p!=NULL && !(check(c, p->) /查找第 i 个节点并由 p 指向该节点 j+; p=p->next; return j;nodetype*database:insnode(int i) nodetype *h=head, *p, *s; s=(nodetype*)malloc(sizeof(nodetype); /创建节点 s s->next=NULL; if(i=0) /i=0 时 s 作为该单链表的第一个节点
17、s->next = h; h=s; /重新定义头节点 else p=findnode(i); /查找第 i 个节点,并由 p 指向该节点 if(p!=NULL) s->next=p->next; p->next=s; else cout<<"输入的 i 值不正确"<<endl; head=h; return s;void database:delnode(int i) /删除第 i 个节点 nodetype *h=head, *p=head, *s; int j=1; if(i=1) /删除第一个节点 h=h->next
18、; free(p); else p=findnode(i-1); /查找第 i-1 个节点,并由 p 指向这个节点 if(p!=NULL && p->next!=NULL) s=p->next; / s 指向要删除的节点 p->next=s->next; free(s); cout<<"学生"<<p-><<"信息已被删除" else cout<<"输入的 i 值不正确"<<endl; head=h;void data
19、base:editperson(nodetype* p) char c100; cout<<"请输入姓名: "<<endl; cin>>c; strcat(c, "n"); strcpy(p->, c); cout<<"请输入学号: "<<endl; cin>>c; strcat(c, "n"); strcpy(p->pe.num, c); cout<<"请输入专业: "<<
20、endl; cin>>c; strcat(c, "n"); strcpy(p->pe.Department, c); cout<<"班主任姓名: "<<endl; cin>>c; strcat(c, "n"); strcpy(p->pe.boss, c); cout<<"编辑个人信息完成!"<<endl; dispperson(p);void database:dispperson(nodetype* p) cout<<
21、"学生的姓名: "<<p->; cout<<"学生的学号: "<<p->pe.num; cout<<"学生的专业: "<<p->pe.Department; cout<<"班主任姓名: "<<p->pe.boss;/-database:database() nodetype *pa=head, *pb; if(pa!=NULL) pb=pa->next; if(pb=NULL) free(
22、pa); else while(pb!=NULL) free(pa); pa=pb; pb=pb->next; free(pa); void Operater:display() cout<<endl<<endl; cout<<" * 学生管理系统 *"<<endl; cout<<" "<<endl; cout<<" "<<endl; cout<<" 菜单选顶 "<<endl; cout&l
23、t;<" ="<<endl; cout<<" "<<endl; cout<<" 1.学生注册 2.删除信息 "<<endl; cout<<" 3.信息显示 4.查询信息 "<<endl; cout<<" 5.修改信息 6.帮助菜单 "<<endl; cout<<" 7.保存数据 0.退出系统 "<<endl; cout<<&qu
24、ot; "<<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) cout<<endl<<endl; cout<<"请输入选择(帮助选项-&g
25、t; 6 ): "<<endl; cin>>ch; system("cls"); if(L1.check(ch, "1") p=L1.insnode(0); head=p; system("cls"); cout<<endl; cout<<"= 学生信息注册 ="<<endl; cout<<"下面输入个人信息: "<<endl; L1.editperson(p); if(L1.check(ch, &qu
26、ot;2") system("cls"); cout<<endl; cout<<"= 删除学生信息 ="<<endl; L1.dispname(); cout<<"请输入学生姓名: "<<endl; cin>>ch; i=L1.find2(ch); L1.delnode(i); if(L1.check(ch, "3") system("cls"); cout<<endl; cout<<&qu
27、ot;=显示所有信息 ="<<endl; L1.dispname(); if(L1.check(ch, "4") system("cls"); cout<<endl; cout<<"= 学生信息查询 ="<<endl; L1.dispname(); cout<<"请输入学生姓名: "<<endl; cin>>ch; p=L1.find(ch); L1.dispperson(p); if(L1.check(ch, "
28、;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")
29、; fputs(t, fp); p=L1.findnode(1); /将链表头指针赋予 p for(i=0; i<L1.databaselen(); i+) fputs(p->pe.num, fp); /输出学号 fputs(p->, fp); /输出姓名 fputs(t, fp); p=p->next; p=head; fclose(fp); if(L1.check(ch, "5") char c20; system("cls"); cout<<endl; cout<<"=学生信息修改 ="<<endl; L1.dispname(); cout<<"请输入学生姓名: "<<endl; cin>>c; p=L1.find(c); system("cls"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆质押合同模板7篇
- 急救仪器管理试题及答案
- 学校卫生服务规范考核试题及答案
- 药品拆零管理制度试题及答案
- 2025年临床执业医师《基础医学》测试题
- 药品温湿度监控试题及答案
- 医疗废物转运处置规范考核试题及答案
- 吉师小教考研试题及答案
- 医疗器械经营企业温湿度管理规范培训试题及答案
- 市政道路雨水顶管施工方案模板
- 中国石油企业文化课件
- 电力工程建设资源投入计划
- 事故后如何进行合理赔偿谈判
- 生物批签发管理办法
- 《酒店法律与法规实务》全套教学课件
- 项目经理负责制与项目管理实施办法
- 新媒体技术应用 课件全套 曾琦 单元1-7 认知新媒体岗位及新媒体工具-拓展 AIGC概述 生成式人工智能
- 内蒙古机电职业技术学院单独招生(机电类)考试题(附答案)
- 城市公园景观设计教学课件
- 2025年哈尔滨铁道职业技术学院单招职业技能测试题库及答案一套
- 2024年常州机电职业技术学院高职单招语文历年参考题库含答案解析
评论
0/150
提交评论