数据库中怎么创建一个函数实现根据学号得到姓名则发布会,若学号不存在则返回‘学号不存在’代码~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中怎么创建一个函数实现根据学号得到姓名则发布会,若学号不存在则返回‘学号不存在’代码~相关的知识,希望对你有一定的参考价值。

急着 用,,跪求大神的帮助
发现题目打错了,木有“则发布会”这几个字

参考技术A create or replace function ge_name(name in varchar2) return varchar2 is
v_var varchar2; --学号
count number;--数量
begin
select count(1) into count from 学号表 where 名字 = name;

if cont >0 then
select 学号 into v_var from 学号表 where 名字 = name;
else
v_var := '学号不存在';
end if;
return(v_var);
end ge_name;

线性表-链表的实现--基于学生信息管理

链表:

要求:

定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能:

(1) 根据指定学生个数,逐个输入学生信息;

(2) 逐个显示学生表中所有学生的相关信息;

(3) 根据姓名进行查找,返回此学生的学号和成绩;

(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);

(5) 给定一个学生信息,插入到表中指定的位置;

(6) 删除指定位置的学生记录;

(7) 统计表中学生个数。

typedef struct {
    char no[8];   //8位学号
    char name[20]; //姓名
    int  score;     //成绩
}Student;
1 typedef struct LNode{
2      Student   data;       //数据域
3      struct LNode  *next;   //指针域
4 }LNode,*LinkList; 

完整代码:

  1 /*
  2  * 一个简单的学生信息处理程序
  3  */
  4 
  5 #include <iostream>
  6 #include <cstdio>
  7 #include <fstream>
  8 #include <unistd.h>
  9 #include <cstdlib>
 10 #include <cstddef>
 11 #include <string>
 12 using std::cin;
 13 using std::cout;
 14 using std::endl;
 15 using std::ofstream;
 16 using std::string;
 17 
 18 struct StuData            //学生信息
 19 {
 20     string stuID;        //学生学号
 21     string stuName;        //学生姓名
 22     double stuScore;    //学生成绩
 23 };
 24 
 25 class LinkList
 26 {
 27 public:
 28     LinkList( )  { }    //构造函数,对成员变量初始化
 29     LinkList(StuData info, LinkList *previous, LinkList *next)
 30         : stuInfo(info), previousLink(previous), nextLink(next)
 31     {    }
 32     LinkList *getPreviousLink( )    //取值
 33     {
 34         return previousLink;
 35     }
 36     LinkList *getNextLink( )
 37     {
 38         return nextLink;
 39     }
 40     StuData &getData( )
 41     {
 42         return stuInfo;
 43     }
 44     void setPreviousLink(LinkList *pointer)        //赋值
 45     {
 46         previousLink = pointer;
 47     }
 48     void setNextLink(LinkList *pointer)
 49     {
 50         nextLink = pointer;
 51     }
 52 private:
 53     StuData stuInfo;        //学生信息 
 54     LinkList *previousLink;        //指向前节点 
 55     LinkList *nextLink;        //指向后节点 
 56 };
 57 typedef LinkList* linkPtr;
 58 
 59 void welcome(unsigned &choose);
 60 /* 功能:在控制台输出欢迎界面
 61  * 参数:choose的引用
 62  * 返回值:无
 63  */
 64 
 65 void headInsert(linkPtr &head, StuData &info);
 66 /*
 67  * 功能:在链表头部插入节点
 68  * 参数:head:链表头节点的引用  info:需要插入学生信息
 69  * 返回值:无
 70  */
 71 
 72 void insert(linkPtr &head, StuData &info, int order);
 73 /*
 74  * 功能:在指定的位置插入学生信息
 75  * 参数:head:链表头节点的引用   info:需要插入的学生信息   order: 插入到链表中的位置】
 76  * 返回值: 无
 77  */
 78 
 79 void add(linkPtr &head, StuData &info);
 80 /* 
 81  * 功能:(在尾部)增加学生信息
 82  * 参数:head:链表头节点的引用  info: 需要增加的学生信息
 83  * 返回值: 无
 84  */
 85 
 86 linkPtr search(linkPtr &head, string &target);
 87 /*
 88  * 功能:对于输入的ID/Name, 遍历查找各数据元素中是否存在相应的数据项
 89  * 参数:head:链表头节点的引用    target: 需要查找的ID/Name
 90  * 返回值:如果存在对应的匹配,返回其所在的节点指针,否则返回NULL
 91  */
 92 
 93 bool isContain(const linkPtr &head, const string &target);
 94 /*
 95  * 功能:判断输入的ID是否已经存在,增强健壮性
 96  * 参数:head:链表头节点的指针的引用   target:输入的学号
 97  * 返回值:若已经存在相应的学号,返回true, 否则返回false
 98  */
 99 void deleteNode(linkPtr &head, linkPtr &discard);
100 /*
101  * 功能:删除指定的数据项
102  * 参数:head:链表头节点指针的引用  discard: 需要删除的数据项的指针的引用
103  * 返回值:无
104  */
105 
106 void print(linkPtr p, char type=o);
107 /*
108  * 功能:打印单个或所有信息
109  * 参数:p: 指向某个数据项   type: 打印类型,默认输出一个数据元素,为‘a‘时
110  *        表示输出p后所有数据项
111  */
112 void save(linkPtr &head, ofstream &allStuData);
113 /*
114  * 功能:将输入的所有数据项保存到文件中
115  * 参数:head: 链表头节点指针的引用    allStuData: 文件输出流,保存到其指向的文件
116  * 返回值:无
117  */
118 
119 int main(void)
120 {
121     linkPtr head = NULL;
122     StuData info;
123     unsigned choose;
124     
125     while (true)
126     {
127         fflush(stdin);
128         system("color 2F"); 
129         char ans = y;
130         welcome(choose);
131         switch (choose)
132         {
133             case 1:
134             {
135                 system("color 8F");
136                 while (ans == y)
137                 {
138                     printf("Please enter data:\n");
139                     printf("ID: ");
140                     cin >> info.stuID;
141                     printf("Name: ");
142                     getchar();
143                     getline(cin, info.stuName);
144                     printf("Score: ");
145                     cin >> info.stuScore;
146                     add(head, info);
147                     fflush(stdin);
148                     printf("Continue![y]: ");
149                     ans = getchar( );
150                     if (ans==\n)
151                     {
152                         ans = y;
153                     }
154                     system("cls");
155                 }
156                 
157                 break;
158             }
159             case 2:
160             {
161                 system("color 6F");
162                 string ID_Name;
163                 linkPtr locate;
164                 while (ans == y)
165                 {
166                     printf("Please give the stu‘s ID/Name: ");
167                     getchar();
168                     getline(cin, ID_Name);
169                     locate = search(head, ID_Name);
170                     if (locate != NULL)
171                     {
172                         putchar(\n);
173                         print(locate, o);
174                     }
175                     else
176                     {
177                         printf("\nWarning: You entered information is not exist!\n");
178                     }
179                     putchar(\n);
180                     fflush(stdin);
181                     printf("Continue![y]: ");
182                     scanf("%c", &ans);
183                     if (ans==\n)
184                     {
185                         ans = y;
186                     }
187                     system("cls");
188                 }
189                 break;
190             }
191             case 3:
192             {
193                 system("color B4");
194                 linkPtr discard;
195                 string litter;
196                 printf("Please input the ID/Name of the student you want to delete: ");
197                 fflush(stdin);
198                 getline(cin, litter);
199                 discard = search(head, litter);
200                 if (discard != NULL)
201                 {
202                     deleteNode(head, discard);
203                     printf("\aDelete succeed!\n");
204                 }
205                 getchar( );
206                 system("cls");
207                 
208                 break;
209             }
210             case 4:
211             {
212                 system("color DF");
213                 print(head, a);
214                 system("cls");
215                 break;
216             }
217             case 5:
218             {
219                 ofstream allStuData;
220                 allStuData.open("stuInformation.dat");
221                 save(head, allStuData);
222                 allStuData.close();
223                 system("cls");
224                 break;
225             }
226             case 6:
227             {
228                 printf("\a\n\n\t\tBye Bye!\n");
229                 sleep(1);
230                 system("color 0F");
231                 exit(0);
232                 break;
233             }
234             
235             default :
236             {
237                 printf("\a\n\tSorry! I haven‘t been creat this operation!\n");
238                 sleep(2);
239                 system("cls");
240                 break;
241             }
242         }
243     }
244 
245     return 0;
246 }
247 
248 
249 void welcome(unsigned &choose)
250 {
251     printf("\n\n\n\n\n                       WELCOME\n");
252     string reticule  = "-------------------------------------------------------\n";
253     string prompt1   = "--                 1.增加或建立学生信息\n";
254     string prompt2   = "--                 2.根据姓名或学号找人\n";
255     string prompt3   = "--                 3.删除不必要学生信息\n";
256     string prompt4   = "--                 4.显示所有的学生信息\n";
257     string prompt5     = "--                 5.保存\n";
258     string prompt6   = "--                 6.退出\n\n";
259     unsigned sleepTime = 900;
260 
261     cout << reticule << endl;
262     for (unsigned i=0; i<prompt1.length(); i++)
263     {
264         usleep(sleepTime);
265         putchar(prompt1[i]);
266         fflush(stdout);
267     }
268     for (unsigned i=0; i<prompt2.length(); i++)
269     {
270         usleep(sleepTime);
271         putchar(prompt2[i]);
272         fflush(stdout);
273     }
274     for (unsigned i=0; i<prompt3.length(); i++)
275     {
276         usleep(sleepTime);
277         putchar(prompt3[i]);
278         fflush(stdout);
279     }
280     for (unsigned i=0; i<prompt4.length(); i++)
281     {
282         usleep(sleepTime);
283         putchar(prompt4[i]);
284         fflush(stdout);
285     }
286     for (unsigned i=0; i<prompt5.length(); i++)
287     {
288         usleep(sleepTime);
289         putchar(prompt5[i]);
290         fflush(stdout);
291     }
292     for (unsigned i=0; i<prompt6.length(); i++)
293     {
294         usleep(sleepTime);
295         putchar(prompt6[i]);
296         fflush(stdout);
297     }
298     cout << reticule << endl;
299     printf("你想进行什么操作: ");
300     scanf("%u", &choose);
301     system("cls");
302 }
303 
304 void headInsert(linkPtr &head, StuData &info)
305 {
306     linkPtr newHead = new LinkList(info, NULL, head);
307     newHead->setPreviousLink(newHead);
308     head = newHead;
309 }
310 
311 void insert(linkPtr &head, StuData &info, int order)
312 {
313     linkPtr p = head;
314     for (int i=0; i<order; i++)
315     {
316         p = p->getNextLink( );
317     }
318     linkPtr next = p->getNextLink( );
319     p->setNextLink(new LinkList(info, p, p->getNextLink( )));
320     p = p->getNextLink( );
321     next->setPreviousLink(p);
322 }
323 
324 void add(linkPtr &head, StuData &info)
325 {
326     static unsigned int count = 0;
327     if (isContain(head, info.stuID))
328     {
329         printf("\a\n\n\t\t!!!Warning: This stu‘s ID have already exist!!!‘\n");
330         return;
331     }
332     else
333     {
334         if (head == NULL)
335         {
336             head = new LinkList(info, NULL, NULL);
337         }
338         else
339         {
340             static linkPtr point = head;
341             while (point->getNextLink() != NULL)
342             {
343                 point = point->getNextLink( );
344             }
345             point->setNextLink(new LinkList(info, point, NULL));
346             point = point->getNextLink( );
347         }
348         count++;
349         printf("\nAdd succeed!\t\t\tstu‘s num %u\n", count);
350     }
351     
352 }
353 
354 linkPtr search(linkPtr &head, string &target)
355 {
356     linkPtr here = head;
357     if (here == NULL)
358     {
359         printf("\a\n\t\t!!! Warning: NO data exist !!!\n\n");
360         return NULL;
361     }
362     else
363     {
364         while (here != NULL)
365         {
366             StuData ans = here->getData( );
367             if (ans.stuID == target || ans.stuName == target)
368             {
369                 return here;
370             }
371             here = here->getNextLink( );
372         }
373         return NULL;
374     }
375 }
376 
377 bool isContain(const linkPtr &head, const string &target)
378 {
379     linkPtr here = head;
380     while (here != NULL)
381     {
382         StuData ans = here->getData( );
383         if (ans.stuID == target || ans.stuName == target)
384         {
385             return true;
386         }
387         else
388         {
389             here = here->getNextLink( );
390         }
391     }
392     return false;
393 }
394 
395 void deleteNode(linkPtr &head, linkPtr &discard)
396 {
397     if (head == discard)
398     {
399         head = head->getNextLink( );
400         if (head != NULL)
401         {
402             head->setPreviousLink(NULL);
403         }
404         
405     }
406     else
407     {
408         linkPtr prev = discard->getPreviousLink( );
409         linkPtr next = discard->getNextLink( );
410         prev->setNextLink(next);
411         if (next != NULL)
412         {
413             next->setPreviousLink(prev);
414         }
415     }
416     
417     delete discard;
418 }
419 
420 void print(linkPtr p, char type)
421 {
422     switch (type)
423     {
424         case o:
425         {
426             StuData ans = p->getData( );
427             cout << "-  ";
428             cout << ans.stuID;
429             cout << "\t\t";
430             cout << ans.stuName;
431             cout << "\t\t";
432             cout << ans.stuScore;
433             cout << endl;
434             break;
435         }
436         case a:
437         {
438             linkPtr point = p;
439             printf("All of the students are:\n");
440             printf("      ID                 Name                   Score\n");
441             printf("    -------------------------------------------------\n");
442             if (p == NULL)
443             {
444                 printf("\n\tError: No data exist!\n");
445             }
446             else
447             {
448                 unsigned count=0;
449                 while (point != NULL)
450                 {
451                     printf("%3d- ", ++count);
452                     StuData ans = point->getData( );
453                     cout << ans.stuID;
454                     cout << "\t\t";
455                     cout << ans.stuName;
456                     cout << "\t\t\t";
457                     cout << ans.stuScore;
458                     cout << endl;
459                     point = point->getNextLink( );
460                 }
461             }
462             printf("\n    -------------------------------------------------\n");
463             getchar();
464             getchar();
465             break;
466         }
467     }    
468 }
469 
470 void save(linkPtr &head, ofstream &allStuData)
471 {
472     linkPtr point = head;
473     allStuData << "All of the students are:\n";
474     allStuData << "      ID                  Name               Score\n";
475     allStuData << "    ----------------------------------------------\n";
476     if (point == NULL)
477     {
478         allStuData << "\n\tError: No data exist!\n";
479     }
480     else
481     {
482         int count=0;
483         while (point != NULL)
484         {
485             StuData ans = point->getData( );
486             allStuData << "";
487             allStuData << (++count) << " - ";
488             allStuData << ans.stuID;
489             allStuData << "\t\t";
490             allStuData << ans.stuName;
491             allStuData << "\t\t";
492             allStuData << ans.stuScore;
493             allStuData << endl;
494             point = point->getNextLink( );
495         }
496     }
497     allStuData << "\a\n    ---------------------------------------------\n";
498     printf("\a\n\n\t\tSaving successfully!\n");
499     sleep(1);
500 }

 

以上是关于数据库中怎么创建一个函数实现根据学号得到姓名则发布会,若学号不存在则返回‘学号不存在’代码~的主要内容,如果未能解决你的问题,请参考以下文章

建立一个存储过程student_info,要求根据班级查询学生的学号、姓名、课程号和分数(表结构如表2,表3)

java学习3创建学生属性:学号姓名电话 完全实现对象集合的增删改查。(控制台来做)

创建一个存储过程,给定某学生学号,要求查询出该学生的姓名,所选课程名和成绩.(SQL SERVER)

sql动态实现行列转换

创建一个对象数组,数组的元素是学生对象,学生的信息包括学号,姓名,和成绩,在main

excel 中怎样讲每页都弄出学号 姓名 科目。。。急救