ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:18.35KB ,
资源ID:11886607      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11886607.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库2.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库2.docx

1、数据库2上一课,举了一个例子,主要实现了一个顺序表的相关操作,现在做个小小的实验,即实现一个小小的学生成绩管理系统。需求如下:用顺序表实现一个完成一个班级的一个学期的所有课程的管理:能够增加、删除、修改学生的成绩记录。假设学生有学号id,班级名class_name,学期term, 性别sex,姓名name,语文chinese,英语english,数学maths等字段。系统分析:系统有增加,删除,修改,查找等操作,都放在一个主界面选择进行。源码如下(实现是在VC+6.0下编译通过):/ student.cpp : Defines the entry point for the console a

2、pplication./* 说明:本程序主要实现学生成绩管理的相关操作,如添加,删除,修改,查询等*/#include stdafx.h#include iostream.h#include #include #include struct student char term10; / 学期 char class_name10; / 班级名 int id; / 学号id char name30; / 姓名 char sex2; / 性别 float chinese; / 语文 float english; / 英语 float maths; / 数学 ;typedef struct stude

3、nt DataType; / 指定struct student为DataTypestruct SeqListint MAXLENGTH; / 顺序表中最大元素的个数int count; / 存放线性表中元素的个数count = MAXLENGTHDataType* element; / element0, element1, ., elementn - 1存放线性表中的元素; typedef struct SeqList *MySeqList; / 初始化并创建空顺序表MySeqList initSeqList(int m);/ 判断线性表是否为空int isEmptySeqList(MySe

4、qList mySeqList);/ 在顺序表中求某元素的下标int locateSeqList(MySeqList mySeqList, int id);/ 在顺序表中修改值int updateSeqList(MySeqList mySeqList, int id);/ 顺序表的插入(元素p之前插入)int insertPreSeqList(MySeqList mySeqList, int p, DataType x);/ 顺序表的插入(元素p之后插入)int insertNextSeqList(MySeqList mySeqList, int p, DataType x);/ 顺序表的删除

5、(根据下标删除)int deleteSeqList(MySeqList mySeqList, int p);/ 顺序表的删除(根据元素值删除)int deleteSeqListByValue(MySeqList mySeqList, int id);/ 将顺序表表示的线性表逆置int reverseSeqList(MySeqList mySeqList);/* 删除线性表中所有值为x的值* 我给出的算法,在一个线性表中实现,设置了2个游标*/int deleteAllVSeqList(MySeqList mySeqList, DataType x);/ 求出下标为i的元素的前驱和后继int f

6、indPrePostSeqList(MySeqList mySeqList, int i, DataType &m, DataType &n);/ 顺序表实现部分:找出值为x的元素的前驱和后继的存储位置(即下标)int locatePrePostSeqList(MySeqList mySeqList, DataType x, int &i, int &j); / 输出线性表的元素值void printSeqList(MySeqList &mySeqList); / 根据学生id,输出线性表的元素值void printSeqListById(MySeqList &mySeqList,int id

7、);/ 在顺序表中修改值int updateSeqList(MySeqList mySeqList, int id)int iRc = locateSeqList(mySeqList, id);if (iRc = -1) printf(不存在指定下标!n); return (0); coutmySeqList-elementiRc.class_name; coutmySeqList-elementiRc.term;coutmySeqList-elementiRc.id;coutmySeqList-elementiRc.name;coutmySeqList-elementiRc.sex; cou

8、tmySeqList-elementiRc.english; coutmySeqList-elementiRc.chinese; coutmySeqList-elementiRc.maths; return 1;/ 功能: 创建空顺序表MySeqList initSeqList(int m)MySeqList mySeqList = (MySeqList)malloc(sizeof(struct SeqList); / 分配内存空间if (mySeqList != NULL) mySeqList-element = (DataType*)malloc(sizeof(DataType) * m)

9、; / 为里面的元素分配m个DataType大小的内存空间,相当于初始化了一个长度为m的数组 if (mySeqList-element) mySeqList-MAXLENGTH = m; / 如果创建了元素,MAXLENGTH为最大元素的个数 mySeqList-count = 0; / 空表长度为0 return (mySeqList); else free(mySeqList); / 记得要手动释放空间,否则很容易产生内存泄漏printf(内存空间不足,请关闭一些程序,然后再试!n); / 存储分配失败,提示空间不足return NULL; / 功能: 判断线性表是否为空int isEm

10、ptySeqList(MySeqList mySeqList)return (mySeqList-count =0); / 功能:在顺序表中求某元素的下标,没有查找到,则返回-1int locateSeqList(MySeqList mySeqList, int id) for (int i = 0; i count; +i) if (mySeqList-elementi.id = id) / 传入一个元素x,查找到后返回下标i return (i);return (-1); / 功能:顺序表的pos下标前面插入,插入成功返回1,失败返回0int insertPreSeqList(MySeqL

11、ist mySeqList, int pos, DataType x)+mySeqList-count;if (mySeqList-count mySeqList-MAXLENGTH) / 溢出 -mySeqList-count; printf(表产生了溢出!n); return (0);if (pos = mySeqList-count) / 不存在下标为pos的元素 -mySeqList-count; printf(不存在指定下标!n); return (0); for (int i = mySeqList-count - 1; i != pos; -i) mySeqList-elemen

12、ti = mySeqList-elementi - 1; / 插入位置及之后的元素均后移一个位置mySeqList-elementi = x; / 插入元素xreturn (1); / 功能:顺序表的pos下标后面插入,插入成功返回1,失败返回0int insertNextSeqList(MySeqList mySeqList, int pos, DataType x)if (pos = mySeqList-count) printf(不存在指定下标!n); return (0);+mySeqList-count;if (mySeqList-count = mySeqList-MAXLENGT

13、H) -mySeqList-count; printf(表产生了溢出!n); return (0);for (int i = mySeqList-count - 1; i != pos + 1; -i) mySeqList-elementi = mySeqList-elementi - 1; / 同样地,把pos+1插入位置及之后的元素均后移一个位置mySeqList-elementi = x; / 插入元素xreturn (1); / 功能:顺序表的删除(根据下标删除)int deleteSeqList(MySeqList mySeqList, int pos)if (pos = mySeq

14、List-count) / 不存在下标为pos的元素,注意下标范围是从0到count-1 printf(不存在指定下标!n); return (0);for (int i = pos; i count - 1; +i) mySeqList-elementi = mySeqList-elementi + 1; / 被删除元素之后的元素均前移一个位置-mySeqList-count; / 元素个数减1return (1); / 功能:根据元素值删除,实现顺序表的删除int deleteSeqListByValue(MySeqList mySeqList, int id)int pos = loca

15、teSeqList(mySeqList, id);if (pos = -1) printf(不存在指定下标!n); return (0);deleteSeqList(mySeqList, pos);return (1); /* 功能:删除线性表中所有学生ID为x的值*/int deleteAllSeqListByValue(MySeqList mySeqList, int x)if (mySeqList-count = 0) printf(该表为空!n); return (0);for (int i = 0; i != mySeqList-count; +i) if (mySeqList-el

16、ementi.id = x ) deleteSeqListByValue(mySeqList,x); / 删除x,删除后要将下标减少1 i-; return (1);/* 功能:删除线性表中所有值为x的值的另一种算法* */int deleteAllVSeqList(MySeqList mySeqList, int x)if (mySeqList-count = 0) printf(该表为空!n); return (0);int p = 0, q = 0;while (mySeqList-elementp.id != x & p != mySeqList-count - 1) / 跳过开始不是

17、x的元素 +p; +q;for (; p != mySeqList-count - 1; +p) / 遍历元素,不遍历最后一个元素(为了防止越界) while (mySeqList-elementp.id = x & p != mySeqList-count - 1) / 如果元素是x,则游标p后移(用while处理多个x连续的情况) +p; if (p != mySeqList-count - 1) mySeqList-elementq = mySeqList-elementp; +q; if (mySeqList-elementmySeqList-count - 1.id != x) my

18、SeqList-elementq = mySeqList-elementmySeqList-count - 1; +q;mySeqList-count = q;return (1); / 功能:找出值为x的元素的前驱和后继的存储位置(即下标)int locatePrePostSeqList(MySeqList mySeqList, int x, int &i, int &j)int k = locateSeqList(mySeqList, x);if (k = -1) return (0);if (k = 0) i = -1;else i = k - 1;if (k = mySeqList-c

19、ount - 1) j = -1;else j = k + 1;return (1); / 输出线性表的元素值void printSeqList(MySeqList &mySeqList) for (int i = 0; i count; +i) / 输出线性表的元素值 cout 学期: elementi.term ,班级名: elementi.class_name ; cout 学号: elementi.id ,姓名: elementi.name ,性别: elementi.sex ; cout 语文: elementi.chinese ,英语: elementi.english ,数学:

20、elementi.maths ; coutendl;cout endl;/ 根据学生id,输出线性表的元素值void printSeqListById(MySeqList &mySeqList,int id) for (int i = 0; i count; +i) / 输出线性表的元素值 if (id = mySeqList-elementi.id) cout 学期: elementi.term ,班级名: elementi.class_name; cout 学号: elementi.id ,姓名: elementi.name ,性别: elementi.sex ; cout 语文: ele

21、menti.chinese ,英语: elementi.english ,数学: elementi.maths ; coutendl; break; int main(int argc, char* argv)/*MySeqList mySeqList = initSeqList(20); / 初始化一个长20的表for (int i = 0; i count+; / 对表进行赋值 mySeqList-elementi = i; / 对表进行赋值 */MySeqList mySeqList = initSeqList(20); / 初始化一个长20的表L: system(cls); cout

22、*学生成绩管理系统*endl; cout *1.添加学生信息 2.查找学生信息*endl; cout *3.删除学生信息 4.修改学生信息*endl; cout *5.退出学生系统 *endl; int i; couti; if (i = 1) mySeqList-count = 1;int iRc = 0;while(true&mySeqList-count20) coutendl请输入要添加的学生成绩信息(输入*退出添加):endl; coutmySeqList-elementiRc.class_name; if (strcmp(mySeqList-elementiRc.class_nam

23、e,*) = 0) mySeqList-count-; / 此处要减1,请思考为什么要减1哦。 goto L; coutmySeqList-elementiRc.term; coutmySeqList-elementiRc.id; coutmySeqList-elementiRc.name; coutmySeqList-elementiRc.sex; coutmySeqList-elementiRc.english; coutmySeqList-elementiRc.chinese; coutmySeqList-elementiRc.maths; cout 添加学生成绩信息成绩ok.count+; iRc+; else if (i = 2) L4: cout请输入要查找的学生ID:endl;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1