建立一个顺序表,表中元素为学生,每个学生信息包含姓名、学号和成绩三部分,对该表实现输出、插入、删除、
利用顺序表完成一个学生成绩管理系统

利⽤顺序表完成⼀个学⽣成绩管理系统 1//利⽤顺序表完成⼀个学⽣成绩管理系统2package classwork_5;34public class student {5private String name;//名字6private int id;//学号7private String state;//是否在籍8private double gpa;//在校绩点成绩9public student() {1011 }12public student(String name, int id, String state, double gpa) { = name;14this.id = id;15this.state = state;16this.gpa = gpa;17 }18public String getName() {19return name;20 }21public void setName(String name) { = name;23 }24public int getId() {25return id;26 }27public void setId(int id) {28this.id = id;29 }30public String getState() {31return state;32 }33public void setState(String state) {34this.state = state;35 }36public double getGpa() {37return gpa;38 }39public void setGpa(double d) {40this.gpa = d;41 }42 @Override43public String toString() {44return "" + name + "\t\t" + id + "\t\t" + state + "\t\t" + gpa;45 }4647}484950package classwork9;5152import java.util.ArrayList;53import java.util.List;54import java.util.Scanner;5556import classwork_5.student;5758public class stumanager {59private Scanner in = new Scanner(System.in);60private List<student> stu = new ArrayList<student>();6162// 初始化,先往学⽣管理系统⾥⾯存⼊⼀些学⽣信息63public void init() {64 student s1 = new student("⼩明", 2019216588, "在籍", 4.4);65 student s2 = new student("⼩红", 2019219888, "在籍", 1.2);66 student s3 = new student("⼩刚", 2019212188, "在籍", 3.4);67 stu.add(s1);68 stu.add(s2);69 stu.add(s3);70 }7172public void menu() {73 System.out.println("*******欢迎使⽤学⽣管理系统*******");74 System.out.println("请根据提⽰选择");75 System.out.println("1.添加学⽣信息");76 System.out.println("2.删除学⽣信息");77 System.out.println("3.修改学⽣信息");78 System.out.println("4.查询学⽣并输出");79 System.out.println("5.所有学⽣信息");8081int choice = in.nextInt();82switch (choice) {83case 1:84 addstu();85break;86case 2:87 delstu();88break;89case 3:90 amendstu();91break;92case 4:93 findstu();94break;95case 5:96 show();97break;98default:99 }100 }101102public void iscontinuemenu() {103 System.out.println("是否返回到主菜单(y/n)");104 String iscon = in.next();105if ("y".equals(iscon)) {106 menu();107 }108 }109110private void addstu() {111 System.out.println("增加学⽣信息");112 System.out.println("请输⼊学⽣名");113 String name = in.next();114 System.out.println("请输⼊学⽣学号");115int id = in.nextInt();116 System.out.println("请输⼊学⽣的⼊学年份");117int year = in.nextInt();118 String y = "";119if (year <= 2020 && year >= 2017) {120 y = "在籍";121 } else {122 y = "不在籍";123 }124 System.out.println("请输⼊学⽣绩点");125double gpa = in.nextDouble();126 student st = new student(name, id, y, gpa);127 stu.add(st);128 System.out.println("已添加完毕请返回主菜单查看"); 129 iscontinuemenu();130 }131132// 删除学⽣信息,根据学号删除133private void delstu() {134 System.out.println("请输⼊要删除的学号");135int a = in.nextInt();136for (int loop = 0; loop < stu.size(); loop++) {137if (((student) stu.get(loop)).getId() == a) {138 stu.remove(loop);139 System.out.println("删除成功!");140break;141 }142 }143144 System.out.println("已删除完毕请返回主菜单查看");145 iscontinuemenu();146 }147148// 修改学⽣信息amend149150private void amendstu() {151 System.out.println("请输⼊要修改学⽣信息的学号");152int a = in.nextInt();153int loop;154for (loop = 0; loop < stu.size(); loop++) {155if (((student) stu.get(loop)).getId() == a) {156break;157 }158 }159160 System.out.println("请输⼊新名字,学号,绩点");161 String name1 = in.next();162int id = in.nextInt();163double gpa = in.nextDouble();164 ((student) stu.get(loop)).setName(name1);165 ((student) stu.get(loop)).setId(id);166 ((student) stu.get(loop)).setGpa(gpa);167 System.out.println("已修改完毕请返回主菜单查看");168 iscontinuemenu();169 }170171// 查询学⽣信息,根据学号查询172private void findstu() {173 System.out.println("请输⼊要查询学⽣的学号");174175int a = in.nextInt();176int loop;177for (loop = 0; loop < stu.size(); loop++) {178if (((student) stu.get(loop)).getId() == a) {179 System.out.println(((student) stu.get(loop)));180break;181 }182 }183 iscontinuemenu();184185 }186187// 查看所有学⽣信息188private void show() {189 System.out.println("姓名\t\t学号\t\t\t在籍状态\t\t在校成绩"); 190191for (student x : stu) {192 System.out.print(x + " ");193 System.out.println();194 }195 iscontinuemenu();196 }197198}199200package classwork9;201202public class stuman_test {203204public static void main(String[] args) {205 stumanager a=new stumanager();206 a.init();207 a.menu();208209 }210211 }。
最新Linux及C考试题附答案

华清远见嵌入式学院《Linux及C》考试题(A卷)1-5 CBCDB6-10 DBADD11-15 CCCAA16-20 C ADD C D A21-23 DBA一、选择题(23题,每空2分,共46分)1.常见的Linux发行版本有很多,下面不是Linux发行版本的是( C)。
[A] Red Hat Linux [B] Ubuntu Linux [C] unix [D] 红旗2.下面不是对Linux操作系统特点描述的是( B )。
[A] 良好的可移植性[B] 稳定性低[C] 多用户[D] 多任务3.嵌套创建目录的命令可以使用( C )。
[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir4.假设目录中存在若干文件file_num.txt(num表示文件编号,1~8),使用以下( D )通配符可以挑选出其中的编号为1、2、3、5、6、7的文件。
[A] file_*.txt [B] flie_?.txt [C] file_[1-7].txt [D] file_[^48].txt5.文件权限r-x-w-r--对应的八进制表示形式为( B )[A] 0536 [B] 0524 [C] 0656 [D] 05346.目前流行的两种软件包管理机制,Debian使用( D )软件包。
[A] zip [B] rpm [C] tar [D] deb7.下述程序第二次的输出结果为( B )。
int main(void){extern int a;int b=0;static int c;a+=3;other();b+=3;other();}int a=5;other(){int b=3;static int c=2;a+=5; b+=5; c+=5;printf("%d,%d,%d\n",a,b,c);c=b;}[A] 13,0,13[B] 18,8,13 [C] 13,8,13[D] 18,8,08.C语言程序的三种基本程序是( A )。
使用access建立学生信息管理数据库系统设计与开发

使用access建立学生信息管理数据库系统设计与开发1. 引言1.1 概述:学生信息管理在现代教育领域中起着至关重要的作用。
随着教育数据量的不断增加,传统的手工管理方式已无法满足快速准确的信息处理需求。
因此,利用计算机技术来构建学生信息管理数据库系统成为了一种更加高效和可靠的管理方式。
本文将介绍如何使用Access软件进行学生信息管理数据库系统设计与开发。
1.2 文章结构:本文共分为五个部分,具体内容如下:第一部分是引言部分,首先对整篇文章进行概述,并介绍文章的结构和目标。
第二部分是学生信息管理数据库系统设计与开发部分。
这一部分主要介绍了关于数据库系统的基本知识和原则,并详细讲解了数据表的设计以及表之间关系和连接的设计。
第三部分是关于Access数据库的使用及配置。
在这一部分中,我们将会简要介绍Access软件,并演示如何创建新数据库以及设置数据表和字段属性。
第四部分是关于学生信息管理功能实现与开发。
这一部分将详细说明如何通过编程实现添加、查询、修改和删除学生信息等功能。
最后,第五部分是结论与展望。
我们将总结全文内容,并探讨学生信息管理数据库系统的可拓展性分析和未来发展方向。
1.3 目的:本文章旨在帮助读者了解学生信息管理数据库系统的设计与开发过程。
通过使用Access软件,我们可以实现高效、准确地管理和处理大量教育数据,提高教育行政工作的效率。
读者将能够学习到如何进行数据库系统设计以及利用编程实现各项功能。
希望本文对相关领域的研究人员、教育工作者和开发人员有所启发,为他们在学生信息管理方面提供一定的参考和指导。
2. 学生信息管理数据库系统设计与开发2.1 数据库系统介绍在学生信息管理中,使用数据库系统可以方便地存储和管理大量的学生数据。
数据库系统能够提供高效的数据检索和更新功能,同时也具备安全性和可靠性。
2.2 数据表设计在设计学生信息管理数据库系统时,需要考虑到各种学生相关的信息,例如学号、姓名、班级、性别、出生日期等等。
建立一个顺序表,表中元素为学生,每个学生信息包含姓名、学号和成绩三部分,对该表实现输出、插入、删除、

云南大学物理实验教学中心实验报告课程名称:计算机软件技术基础实验项目:实验二、线性表(顺序存储)及其应用学生姓名:学号:学院系级专业成绩指导教师:实验时间:年日时分至时分实验地点:实验类型:教学(演示□验证□综合█设计□)学生科研□课外开放□测试□其它□一、实验目的:掌握顺序表的建立及基本操作。
二、问题:建立一个顺序表,表中元素为学生,每个学生信息包含姓名、学号和成绩三部分,对该表实现:①输出、②插入、③删除、④查找功能,并计算出平均成绩和总成绩。
三、程序的编写与调试1、原程序:#include <iostream>using namespace std;typedef struct{ long double num; char name[10]; int score; } STUDENT; class sq_LList{ private:int mm;int nn;STUDENT *v;public:sq_LList(int);void prt_sq_LList();void ins_sq_LList(int, STUDENT);void del_sq_LList(int);void sea_num_sq_LList(int);voidvoid cal_sq_LList(int);};/*输出*/sq_LList ::sq_LList(int m){ mm=m;v=new STUDENT [mm];v[0].num=970156; strcpy(v[0].name,"张小明"); v[0].score=87; v[1].num=970157; strcpy(v[1].name,"李小青"); v[1].score=96;v[2].num=970158; strcpy(v[2].name,"刘华");v[2].score=85; v[3].num=970159; strcpy(v[3].name,"王伟");v[3].score=93; v[4].num=970160; strcpy(v[4].name,"李启明"); v[4].score=88;nn=5;}void sq_LList ::prt_sq_LList(){ int i;for(i=0; i<nn; i++){ cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<" "<<"分数: "<<v[i].score<<endl;}}/*插入*/void sq_LList ::ins_sq_LList(int i, STUDENT b){ int k;if(nn==mm){cout<<"overflow"; return ;}if(i>nn) i=nn+1;if(i<1) i=1;for(k=nn; k>=i; k--)v[k]=v[k-1];v[i-1]=b; nn=nn+1;}/*删除*/void sq_LList ::del_sq_LList(int i){ int k;if(nn==0){cout<<"underflow"<<endl; return ;}if((i<1)||(i>nn)){cout<<"Not this element in the list!"<<endl; return ;}for(k=i; k<nn; k++)v[k-1]=v[k];nn=nn-1;}/*按学号查找*/void sq_LList ::sea_num_sq_LList(int i){ int k,t ;____t=0;for(i=0;i<nn;i++){ if(v[i].num==k){ t=t+1;cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<" "<<"分数: "<<v[i].score<<endl;}}if(t==0)cout<<"No this student in the list!"<<endl;}/*按姓名查找*/void sq_LList ::sea_name_sq_LList(int i, char y[]){ int t;____t=0;for(i=0;i<nn;i++){ if(strcmp(y,v[i].name)=0){t=t+1cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<" "<<"分数: "<<v[i].score<<endl;}}if(t==0) cout<<"No this student in the list!"<<endl }/*计算*/void sq_LList ::cal_sq_LList(int m){ int i;float sum,avr;{ sum=0;for(i=0;i<nn;i++){sum=sum+v[i].score;avr=sum/(i+1);}}cout<<"总分:"<<sum<<endl;cout<<"平均分:"<<avr<<endl;}int main(){ int mx; sq_LList s1(100);while (1){ cout<<"1.输出 2.插入 3.删除 4.查找 5.计算 0.退出\n";cout<<"输入0-5:";cin>>mx;switch(mx){ case 1: s1.prt_sq_LList(); break;case 2: int i; STUDENT b;cout<<"输入插入点位置和插入元素值:";cin>>i>>b.num>>>>b.score;s1.ins_sq_LList(i,b); s1.prt_sq_LList(); break; case 3: cout<<"请输入删除学生的位置:";cin>>i;s1.del_sq_LList(i);s1.prt_sq_LList(); break; case 4: int main(){ int mx;while (1){cout<<"1.按学号查找 2.按姓名查找 0.返"<<endl;cout<<"输入0-2:";cin>>mx;switch (mx){casecout<<"请输入要查找学生的学号:";s1.sea_num_sq_LList(i); break;casecout<<"请输入要查找学生的姓名:";s1.sea_name_sq_LList(); break;case 0: cout<<"返回"<<endl; return ;}}return 0;} break;case 5: s1.cal_sq_LList(); break;case 0: cout<<"程序结束"<<endl; return 0;}}return 0;2、正确程序:#include <iostream>using namespace std;typedef struct{ long double num; char name[10]; int score; } STUDENT; class sq_LList{ private:int mm;int nn;STUDENT *v;public:sq_LList(int);void prt_sq_LList();void ins_sq_LList(int, STUDENT);void del_sq_LList(int);void sea_num_sq_LList(int);void sea_name_sq_LList();void cal_sq_LList(int);/*输出*/sq_LList ::sq_LList(int m){ mm=m;v=new STUDENT [mm];v[0].num=970156; strcpy(v[0].name,"张小明"); v[0].score=87; v[1].num=970157; strcpy(v[1].name,"李小青"); v[1].score=96;v[2].num=970158; strcpy(v[2].name,"刘华");v[2].score=85; v[3].num=970159; strcpy(v[3].name,"王伟");v[3].score=93; v[4].num=970160; strcpy(v[4].name,"李启明"); v[4].score=88;nn=5;}void sq_LList ::prt_sq_LList(){ int i;for(i=0; i<nn; i++){ cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<" "<<"分数: "<<v[i].score<<endl;}}/*插入*/void sq_LList ::ins_sq_LList(int i, STUDENT b){ int k;if(nn==mm){cout<<"overflow"; return ;}if(i>nn) i=nn+1;if(i<1) i=1;for(k=nn; k>=i; k--)v[k]=v[k-1];v[i-1]=b; nn=nn+1;}/*删除*/void sq_LList ::del_sq_LList(int i){ int k;if(nn==0){cout<<"underflow"<<endl; return ;}if((i<1)||(i>nn)){cout<<"Not this element in the list!"<<endl; return ;}for(k=i; k<nn; k++)v[k-1]=v[k];nn=nn-1;}/*按学号查找*/void sq_LList ::sea_num_sq_LList(int i){ int k,t ;cin>>k;t=0;for(i=0;i<nn;i++){ if(v[i].num==k){ t=t+1;cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<" "<<"分数: "<<v[i].score<<endl;}}if(t==0)cout<<"No this student in the list!"<<endl;}/*按姓名查找*/void sq_LList ::sea_name_sq_LList(){ char y[10]; int i,t;cin>>y;t=0;for(i=0;i<nn;i++){ if(strcmp(y,v[i].name)==0){t=t+1;cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<" "<<"分数: "<<v[i].score<<endl;}}if(t==0) cout<<"No this student in the list!"<<endl; }/*计算*/void sq_LList ::cal_sq_LList(int m){ int i;float sum,avr;{ sum=0;for(i=0;i<nn;i++){sum=sum+v[i].score;avr=sum/(i+1);}}cout<<"总分:"<<sum<<endl;cout<<"平均分:"<<avr<<endl;}int main(){ int mx; sq_LList s1(100);while (1){ cout<<"1.输出 2.插入 3.删除 4.查找 5.计算 0.退出\n";cout<<"输入0-5:";cin>>mx;switch(mx){ case 1: s1.prt_sq_LList(); break;case 2: int i; STUDENT b;cout<<"输入插入点位置和插入元素值:";cin>>i>>b.num>>>>b.score;s1.ins_sq_LList(i,b); s1.prt_sq_LList(); break; case 3: cout<<"请输入删除学生的位置:";cin>>i;s1.del_sq_LList(i);s1.prt_sq_LList(); break; case 4:{ int mx;while (1){cout<<"1.按学号查找 2.按姓名查找 0.返"<<endl;cout<<"输入0-2:";cin>>mx;switch (mx){case 1: cout<<"请输入要查找学生的学号:";s1.sea_num_sq_LList(i); break;case 2: cout<<"请输入要查找学生的姓名:";s1.sea_name_sq_LList(); break;case 0: cout<<"返回"<<endl; return 0;}}return 0;} break;case 5: s1.cal_sq_LList(i); break;case 0: cout<<"程序结束"<<endl; return 0;}}return 0;}四、实验总结通过此次试验,我对线性表(顺序存储)有了全面的认识,知道了什么是线性表,以及线性表有什么作用;并学会了如何根据要求建立一个实际的线性表,包括线性表的输出、插入、删除、查。
单链表应用示例

学生成绩管理以单链表作为存储结构,设计和实现某班某门课程成绩管理的完整程序。
程序要求完成如下功能:(1)创建成绩链表,学生数据包含学生的学号、姓名和成绩。
(2)可以在指定学号学生前插入学生成绩数据。
(3)可以删除指定学号的学生数据。
(4)可以计算学生的总数。
(5)可以按学号和姓名查找学生。
(6)可以显示所有学生的成绩。
(7)可以把学生成绩按从高到低的顺序排列。
此处的设计思想基本与顺序表相同,只是对保存学生成绩的线性表采用不同的存储结构实现。
本例中用到的学生数据也是程序运行时由用户从键盘输入,保存到一个单链表中。
学生结构体类型的定义与顺序表应用举例处的定义相同,用C语言描述如下:typedef struct Student /*学生类型定义*/{ int score; /*成绩*/char sno[5],sname[8]; /*学号,姓名*/}Student;当学生的学号为“#”时,也是表示数据输入的结束。
单链表中保存的数据元素均为学生Student类型,则单链表定义如下:typedef struct Node /*结点类型定义*/{ Student studentInfo; /*学生信息*/struct Node *next; /*指向后继元素的指针域*/}LinkList;对学生的成绩按从高到低排序时,使用的也是直接插入排序思想。
此外,为了排序后还能在原单链表上继续进行操作,这里是把单链表中的内容复制到一个新单链表中,对新单链表排序,原单链表不变。
下面是以单链表作为存储结构实现的学生某门课程成绩管理的完整C语言程序。
#include<string.h>#include<malloc.h>#include <stdlib.h>#include <stdio.h>typedef struct Student /*学生类型定义*/{ int score; /*成绩*/char sno[5],sname[8]; /*学号,姓名*/}Student;typedef struct Node /*结点类型定义*/{ Student studentInfo; /*学生信息*/struct Node *next; /*指向后继元素的指针域*/}LinkList;void display(LinkList *p) /*在屏幕上显示一个学生的成绩信息*/{ printf("\n\n\nno\t\tname\t\tscore: ");printf("\n%s",p->studentInfo.sno); /*打印学号*/printf("\t\t ");printf("%s",p->studentInfo.sname); /*打印姓名*/printf("\t\t ");printf("%-4d\n",p->studentInfo.score); /*打印成绩*/}void displayAll(LinkList *L) /*在屏幕上显示所有学生的成绩信息*/ { LinkList *p;p=L->next;printf("\n\n\nno\t\tname\t\tscore: ");while(p){ printf("\n%s",p->studentInfo.sno); /*打印学号*/printf("\t\t ");printf("%s",p->studentInfo.sname); /*打印姓名*/printf("\t\t ");printf("%-4d\n",p->studentInfo.score);/*打印成绩*/p=p->next;}}LinkList *inputdata( ) /*输入学生信息*/{ LinkList *s=NULL ; /*s是指向新建结点的指针*/ char sno[5]; /*存储学号的数组*/printf("\n ");printf(" no: ");scanf("%s",sno); /*输入学号*/if(sno[0]=='#') /*#结束输入*/return s;s=( LinkList *)malloc(sizeof(LinkList));strcpy(s->studentInfo.sno,sno);if(strlen(sno)>4) /*如果sno字符个数大于等于5,因为字符串没有'\0'结束标志,在读数据时将把姓名字符一起读到sno数组,因此做了如下处理*/ s->studentInfo.sno[4]='\0';printf(" name: ");scanf("%s",s->studentInfo.sname); /*输入姓名*/printf("score: ");scanf("%d",&s->studentInfo.score);/*输入成绩*/return s;}LinkList *createTailList( ) /*以尾插法建立带头结点的学生信息单链表*/{ LinkList *L,*s, *r; /*L头指针,r尾指针,s是指向新建结点的指针*/ L=( LinkList *)malloc(sizeof (LinkList)); /*建立头结点,申请结点存储空间*/r=L; /*尾指针指向头结点*/printf("\请输入学生成绩,当学号no为\"#\"时结束:\n\n ");while (1) /*逐个输入学生的成绩*/{ s=inputdata( );if(!s) break; /*s为空时结束输入*/r->next=s; /*把新结点插入到尾指针后*/r=s; /*r 指向新的尾结点*/ }r->next=NULL; /*尾指针的指针域为空*/displayAll(L); /*显示所有学生信息*/return L;}Void locateElemByno(LinkList *L, char ch[5]) /*按学号查找学生的算法*/{ LinkList *p=L->next; /*从第一个结点开始查找*/ while ( p && (strcmp(p->studentInfo.sno,ch)!=0))/*p不空且输入学号与链表中学号不等*/ p = p ->next;if (!p){ printf("\n\n\tDon't find the student!\n" );}else{ display(p); /*显示查找到的学生信息*/}}void locateElemByname(LinkList *L, char sname[8])/*按姓名查找学生的算法*/{ LinkList *p=L->next; /*从第一个结点开始查找*/ while ( p&& (strcmp(p->studentInfo.sname,sname)!=0)) /*p不空且输入姓名与链表中姓名不等*/ p = p ->next;if (!p){ printf("\n\n\tDon't find the student!\n" ); }else{display(p); /*显示查找到的学生信息*/}}int lengthList (LinkList *L) /*求学生总人数的算法*/{ LinkList * p=L->next; /* p指向第一个结点*/int j=0;while (p){ p=p->next; j++ ;} /* p所指的是第j 个结点*/return j;}void insertElem ( LinkList *L, char ch[5]) /*在带头结点的单链表L中指定学号前插入学生*/ { LinkList *p,*s;p=L; /*从头结点开始查找学号为ch的结点的前趋结点p */while ((p->next) && (strcmp(p->next->studentInfo.sno,ch)!=0))p = p ->next;s=inputdata(); /*输入欲插入学生信息*/s->next=p->next;p->next=s;}void deleteElem (LinkList *L, char ch[5]) /*删除给定学号的学生信息的算法*/{ LinkList *p,*q;p=L;while ( (p->next)&&(strcmp(p->next->studentInfo.sno,ch)!=0 )){ p=p->next; /*从头结点开始查找学号为ch的结点的前趋结点p*/}if (!p->next) /* 已经扫描到表尾也没找到*/{ printf("\n\n\tDon't find the student!\n" );}else{ q=p->next; /*q指向学号为ch的结点*/printf("\n\ndeleted student's information:");display(q);p->next=q->next; /*改变指针*/free(q); /*释放q占用空间*/printf("\n\nall student's information :");displayAll(L);}}void insertSort(LinkList *L) /*用直接插入排序思想把学生的成绩按从高到低排序,结果保存在新有序链表中,原链表不变*/{ L inkList *L1,*p; /*L1有序链表的表头,p插入位置前结点*/ LinkList *q,*s; /*q欲插入L1中的结点*/int len;len=lengthList (L) ;L1=( LinkList *)malloc(sizeof (LinkList)); /*建立头结点,申请结点存储空间*/if (L->next) /*链表L非空*/{ /*生成有序链表的第一个结点*/s=( LinkList *)malloc(sizeof (LinkList)); /*建立结点,申请结点存储空间*/strcpy(s->studentInfo .sno ,L->next->studentInfo.sno);strcpy(s->studentInfo .sname,L->next->studentInfo.sname);s->studentInfo .score =L->next->studentInfo.score;s->next =NULL;L1->next=s; /*只有原单链表的第一个结点的有序链表L1*/q=L->next->next; /*原单链表的第二个结点,q即要插入有序链表L1中的结点*/ }else{ printf("\nthe student link list is empty\n");return;}while(q) /*链表L中有结点*/{ p=L1 ; /*从链表L1的第一个结点开始比较*/while((p->next) && (p->next->studentInfo.score>=q->studentInfo.score))p=p->next ; /*查找插入位置前结点*//*生成欲插入有序链表中的结点*/s=( LinkList *)malloc(sizeof (LinkList));/*建立结点,申请结点存储空间*/strcpy(s->studentInfo .sno ,q->studentInfo.sno);strcpy(s->studentInfo .sname ,q->studentInfo.sname);s->studentInfo .score =q->studentInfo.score;if(!p->next) /*p是有序链表的最后一个结点*/{ s->next =NULL ;p->next =s;}else{ s->next =p->next ;p->next =s;}q=q->next; /*下一个欲插入有序链表的结点*/ }/*while(!q)*/displayAll(L1); /*显示生成的有序链表*/}void main(){ printf("=============================================\n\n");printf(" 带头结点的学生成绩管理程序\n\n");printf("=============================================\n\n");LinkList *L;char ch[5],sname[8];int b=1;while(b){ int a;printf("\n\n");printf(" <1>创建(带头尾插)<2>指定学号前插入<3>按学号删除\n ");printf("<4>计算学生总数<5> 按学号查找<6> 按姓名查找\n");printf(" <7>显示所有学生<8>成绩排序<9> 退出\n");printf("\n请输入功能选项:");scanf("%d",&a);switch(a){case 1:L=CreateTailList();break;case 2:printf("\n输入欲在哪个学号前插入数据:");scanf("%s",ch);insertElem(L, ch) ;break;case 3:printf("\n输入欲删除学生的学号:");scanf("%s",ch);deleteElem(L, ch) ;break;case 4:printf(" \n学生总数为:%d \n",lengthList (L) );break;case 5:printf("\n输入欲查找学生的学号:");scanf("%s",ch);locateElemByno(L, ch) ;break;case 6:printf("\n输入欲查找学生的姓名:");scanf("%s",sname);locateElemByname(L, sname );break;case 7:displayAll(L);break;case 8:insertSort(L);break;case 9:printf("\n已退出\n");b=0;break;};}}上机运行程序后,程序执行结果如图2.31(a)~(i)所示。
顺序表的基本操作与应用实验报告

实验报告课程名称数据结构实验名称顺序表基本操作与应用姓名专业班级学号试验日期试验地点E3-502指导老师邹汉斌成绩一、实验目的1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。
2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。
3.掌握对多函数程序的输入、编辑、调试和运行过程。
二、实验要求1.预习C语言中结构体的定义与基本操作方法。
2.对顺序表的每个基本操作用单独的函数实现。
3.编写完整程序完成下面的实验内容并上机运行。
4.整理并上交实验报告。
三、实验内容:1.编写程序实现顺序表的下列基本操作:(1) 初始化顺序表La;(2) 将La置为空表;(3) 销毁La (4) 在La中插入一个新的元素;(5) 删除La中的某一元素;(6) 在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0 ;(7) 打印输出La中的元素值。
2.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能:(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 根据姓名进行查找,返回此学生的学号和成绩;(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);(5) 给定一个学生信息,插入到表中指定的位置;(6) 删除指定位置的学生记录;(7) 统计表中学生个数。
实验提示:第2题可在第1题的基础上将数据结构的定义修改成下面形式后,程序适当修改即可。
学生信息的定义:typedef struct {char no[8]; //8位学号char name[20]; //姓名int score; //成绩}Student;typedef Student ElemType;顺序表的定义typedef struct {ElemType *elem; //指向数据元素的基地址int length; //线性表的当前长度}SqList;四、思考与提高1.编写程序完成下面的操作:(每位同学必做)(1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列;(2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列;(3)假设两个顺序线性表La和Lb 分别表示两个集合A和B,利用union_Sq操作实现A=A∪B。
顺序表实现学生信息管理

实验1 利用顺序表实现学生信息管理1.实验目的·掌握顺序表结构的实现方式;·掌握顺序表常用算法的实现;·熟悉利用顺序表解决问题的一般思路;领会顺序表结构的优点与不足。
2.实验内容与要求以学生信息为数据元素建立顺序表。
一个学生的信息包括学号、姓名、性别、班级和联系电话。
程序用户可通过数字键选择信息浏览、插入信息、删除信息等功能。
对程序的具体要求如下:(1)程序启动后,显示下列选项信息:1—信息浏览2—插入信息3—删除信息4-修改信息0—退出程序(2)输入数字“1”显示所有学生信息列表。
(3)输入数字“2”进入插入信息功能模块。
程序依次提示并由用户输入学号、姓名、性别、班级和联系电话,最终实现在线性表头部插入一个学生信息。
(4)输入数字“3”进入删除信息功能模块。
程序提示并由用户输入学号,最终实现按照学号删除某个学生信息。
(5)输入数字“4”进入修改信息功能模块。
程序提示并由用户输入学号,最终实现按照学号修改某个学生信息。
(6)通过输入数字“0”使得程序结束。
(7)当用户执行浏览、插入、删除功能后,程序应继续提示用户通过数字键选择相应功能,直到用户输入数字“0”程序才结束。
3.实验编程指导(1)可仿照本章顺序表的定义形式,建立学生信息结点数据,并进一步建立一个长度为5的顺序表。
(2)参考本章中顺序表的算法描述和算法的实现,在本程序中增加顺序表的插入、删除等算法实现函数。
(3)编写主函数,可通过在while循环结构中嵌入switch分支结构实现操作选择功能。
(4)完善插入、删除功能。
实现插入信息的录入、删除记录的定位等细节。
(5)完善用户操作界面,给出详细的操作提示。
4.实验报告要求实验报告要求以word文件形式发到老师邮箱。
内容包括:(1)报告封面包括实验名称、班级、姓名、学号以及实验完成日期。
(2)各程序模块名称及功能说明。
并绘制出主要功能函数的程序流程图。
(3)个人小结。
大学数据库期末复习资料-第六第七章补充复习题

20XX年复习资料复资料专业:_____________班级:_____________科目老师:__________第6章关系数据理论一.选择题1. 对关系模式进行规范化的主要目的是BA. 提高数据操作效率B.维护数据的一致性C.加强数据的安全性D.为用户提供更快捷的数据操作2. 关系模式中的插入异常是指DA. 插入的数据违反了实体完整性约束B. 插入的数据违反了用户定狡的完整性约束C. 插入了不该插入的数据D. 应该被插入的数据不能被插入3. 如果有函数依赖XTY,并且对X的任意真子集X',都有X' 宀Y,则称CA. X完全函数依赖于YB. X部分函数依赖于YC. Y完全函数依赖于XD. Y部分函数依赖于X4. 如果有函数依赖XTY,并且对X的某个真子集X',有X' TY成立,则称BA. Y完全函数依赖于XB. Y部分函数依赖于XC. X完全函数依赖于丫D. X部分函数依赖于Y5. 若XTY和YTZ在关系模式R上成立,则XTZ在R上也成立。
该推理规则称为CA. 自反规则B.增广规则C.传递规则D.伪传递规则6. 若关系模式R中属性A仅出现在函数依赖的左部,则A为AA. L类属性B. R类属性C. N类属性D. LR类属性7. 若关系模式R中属性A是N类属性,则A DA. 一定不包含在R任何候选码中B. 可能包含也可能不包含在R的候选码中C. 一定包含在R的某个候选码中D. 一定包含在R的任何候选码中& 设F是某关系模式的极小函数依赖集。
下列关于F的说法,错误的是BA. F中每个函数依赖的右部都必须是单个属性B. F中每个函数依赖的左部都必须是单个属性C. F中不能有冗余的函数依赖D. F中每个函数依赖的左部不能有冗余属性9.有关系模式:学生(学号,姓名,所在系,系主任),设一个系只有一个系主任,则该关系模式至少属于BA.第一范式B.第二范式C.第三范式D. BC范式20XXXX.设有关系模式R(X, Y, Z),其F二{YT乙YTX, X-4YZ),则该关系模式至少属于A. 第一范式 C.第三范式20XXXX.下列关于关系模式与范式的说法,错误的是DA. 任何一个只包含两个属性的关系模式一定属于3NFB. 任何一个只包含两个属性的关系模式一定属于BCNFC. 任何一个只包含两个属性的关系模式一定属于2NFD. 任何一个只包含三个属性的关系模式一定 属于3NF20XXXX.有关系模式:借书(书号,书名,库存量,读者号,借书日期,还书日期), 设一个读者可以多次借阅同一本书,但对一种书(用书号唯一标识)不能同时借多本。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
____ t=0;
for(i=0;i<nn;i++) { if(strcmp(y,v[i].name)=0)
{t=t+1 cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<" "<<"分数: "<<v[i].score<<endl;
} } if(t==0) cout<<"No this student in the list!"<<endl } /*计算*/ void sq_LList ::cal_sq_LList(int m) { int i; float sum,avr; { sum=0; for(i=0;i<nn;i++) {sum=sum+v[i].score; avr=sum/(i+1);
4
Commented [A1]: error C2065: 'k' : undeclared identifier 错误原因:变量 k 缺少定义和申明; sq_LList ::sea_num_sq_LList(int i)中缺少对变量 k 定义和申明,不能再 case 4 中的 case1 中定义和申明。 修改:在该处对变量 k 进行申明和定义,并把 case 4 中 的 case 1 中的定义和申明删除。
Commented [A2]: error C2511: 'sea_name_sq_LList' : overloaded member function 'void (int,char [])' not found in 'sq_LList' 原因:重载的成员函数“void(int,char [])在 sq_llist 没 有找到” 修改:将定义删除,包括 class 里的定义。
v[3].score=93; v[4].num=970160; strcpy(v[4].name,"李启明
"); v[4].score=88;
nn=5;
}
void sq_LList ::prt_sq_LList()
{ int i;
for(i=0; i<nn; i++)
{ cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<"
if(nn==0) {cout<<"underflow"<<endl; return ;}
if((i<1)||(i>nn)) {cout<<"Not this element in the list!"<<endl;
return ; }
3
for(k=i; k<nn; k++) v[k-1]=v[k]; nn=nn-1;
v[0].score=87;
v[1].num=970157; strcpy(v[1].name,"李
小青"); v[1].score=96;
v[2].num=970158; strcpy(v[2].name,"刘 华");
v[2].score=85;
v[3].num=970159; strcpy(v[3].name,"王 伟");
"<<"分数: "<<v[i].score<<endl;
2
} } /*插入*/ void sq_LList ::ins_sq_LList(int i, STUDENT b) { int k;
if(nn==mm) {cout<<"overflow"; return ;}
if(i>nn) i=nn+1; if(i<1) i=1; for(k=nn; k>=i; k--) v[k]=v[k-1]; v[i-1]=b; nn=nn+1; } /*删除*/ void sq_LList ::del_sq_LList(int i) { int k;
} /*按学号查找*/ void sq_LList ::sea_num_sq_LList(int i) { int k,t ; ____
t=0; for(i=0;i<nn;i++)
{ if(v[i].num==k) { t=t+1; cout<<"学号: "<<v[i].num<<" 姓名: "<<v[i].name<<"
"<<"分数: "<<v[i].score<<endl; }
} if(t==0) cout<<"No this student in the list!"<<endl;
} /*按姓名查找*/ void sq_LList ::sea_name_sq_LList(int i, char y[]) { int t;
1
void sea_name_sq_LList(int ,char 批注[A2]);
void cal_sq_LList(int);ห้องสมุดไป่ตู้
};
/*输出*/
sq_LList ::sq_LList(int m)
{ mm=m;
v=new STUDENT [mm];
v[0].num=970156; strcpy(v[0].name,"张小明");
云南大学物理实验教学中心
实验报告
课程名称: 计算机软件技术基础
实验项目: 实验二、线性表(顺序存储)及其应用
学生姓名:
学号:
学院
系
级
专业
成绩
指导教师:
实验时间: 实验地点:
年 日 时 分至 时
分
实验类型:教学(演示□ 验证□ 综合█ 设计□) 学生科研□
课外开放□
测试□
其它□
一、实验目的:掌握顺序表的建立及基本操作。 二、问题:建立一个顺序表,表中元素为学生,每个学生信息包
含姓名、学号和成绩三部分,对该表实现:① 输出、② 插入、③ 删除、④ 查找功能,并计算出平均成绩和总 成绩。
三、程序的编写与调试
1、原程序: #include <iostream> using namespace std; typedef struct { long double num; char name[10]; int score; } STUDENT; class sq_LList { private: