永发信息网

C++学生管理系统

答案:3  悬赏:30  手机版
解决时间 2021-05-03 04:28

1、学生信息管理系统

基本功能要求:学生信息包括:学号、姓名、性别、班级、联系电话。

要求能够:

(1) 添加学生记录

(2) 浏览所有学生信息

(3) 按学号或姓名查找学生信息

(4) 修改学生记录

扩展功能要求:(1) 删除学生记录

(2) 按学号对学生信息进行排序浏览

(3) 实现可视化界面

提示:定义一个学生结构(或学生类),其中包含学生的各项信息。然后定义该学生结构的结构数组(或学生类的类对象数组)存放所有学生信息。

最佳答案

你是要完整的代码,编译过的复制上去能直接运行的,还是要思路或者是伪代码

全部回答

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h>

#define SIZE 100

struct product { char name[40]; int cost; int retail; int on_hand; int lead_time; }invtry[SIZE];

void display();//显示函数 void enter();//添加函数 void init();//初始化函数 void input(int i);//写入函数 void update();//更新函数 void query();//查询函数 void remove();//删除函数

int main() { char c;

init();

fflush(stdin); do{ printf("欢迎使用本库存系统\n"); printf("\n"); printf("添加产品信息请按 E \n"); printf("显示产品信息请按 D \n"); printf("更新产品信息请按 U \n"); printf("查询产品信息请按 Q \n"); printf("删除产品信息请按 R \n"); printf("退出程序菜单请按 C \n"); scanf("%c",&c); fflush(stdin); if(c=='e' || c=='E') enter(); else if(c=='d' || c=='D') display(); else if(c=='u' || c=='U') update(); else if(c=='q' || c=='Q') query(); else if(c=='r' || c=='R') remove(); else if(c=='c' || c=='R') return 0; else printf("你的输入有误\n"); }while(c!='C'); }

void init() { int i; for(i=0;i<SIZE;i++) { *invtry[i].name='\0';//所有产品名称进行清空 } printf("初始化完成\n"); }

void enter() { int i; for(i=0;i<SIZE;i++) { if(*invtry[i].name=='\0') { break; } } if(i==SIZE) { printf("库存信息已满,无法继续增加!"); return; } input(i); }

void input(int i) { printf("输入产品名称\n"); scanf("%s",invtry[i].name); printf("输入产品成本\n"); scanf("%d",&invtry[i].cost); printf("输入产品价格\n"); scanf("%d",&invtry[i].retail); printf("输入产品库存量\n"); scanf("%d",&invtry[i].on_hand); printf("输入产品进货周期\n"); scanf("%d",&invtry[i].lead_time); }

void update() { int i; char temp[40]; printf("输入要修改的产品名\n"); scanf("%s",temp); fflush(stdin); for(i=0;i<SIZE;i++) { if(!strcmp(temp,invtry[i].name)) break; } if(i==SIZE) { printf("没有找到你输入的产品"); return; } printf("请输入新的产品信息"); input(i); }

void display() { int i; for(i=0;i<SIZE;i++) { if(*invtry[i].name) { printf("产品名称%s\n",invtry[i].name); printf("产品成本%d\n",invtry[i].cost); printf("产品价格%d\n",invtry[i].retail); printf("产品库存%d\n",invtry[i].on_hand); printf("产品进货周期%d\n",invtry[i].lead_time); } } }

void query() { int i; char temp[40]; printf("输入要查询的产品名\n"); scanf("%s",temp); fflush(stdin); for(i=0;i<SIZE;i++) { if(!strcmp(temp,invtry[i].name)) break; } if(i==SIZE) { printf("没有找到你输入的产品"); return; } printf("产品名称%s\n",invtry[i].name); printf("产品成本%d\n",invtry[i].cost); printf("产品价格%d\n",invtry[i].retail); printf("产品库存%d\n",invtry[i].on_hand); printf("产品进货周期%d\n",invtry[i].lead_time); }

void remove() { int i; char temp[40]; printf("输入要删除的产品名\n"); scanf("%s",temp); fflush(stdin); for(i=0;i<SIZE;i++) { if(!strcmp(temp,invtry[i].name)) break; } if(i==SIZE) { printf("没有找到你输入的产品"); return; } for(i;i<SIZE;i++) { invtry[i]=invtry[i+1]; } printf("删除操作成功\n"); } 看看对你有帮助吗,你参考一下吧

#include "SequentialList.h"

#ifndef _STUDENT_MANAGER_ #define _STUDENT_MANAGER_

// 输出菜单 void printMenu();

// 用户选择 int select();

// 学号录入,用户欲再输入返回1,中止输入返回0 int inputNum( char* ch );

// 姓名录入 void inputName( char* ch );

// 信息录入,用户中止输入返回0,否则返回1 int input( Student& tmp );

// 增加学生信息 void addStudent( SeqList &L );

// 删除学生信息 void delStudent( SeqList &L );

// 查找学生信息(内部),找不到返回0,用户停止查找返回-1,否则返回元素位置 int findStu( SeqList &L );

// 查找学生信息 void findStudent( SeqList &L );

// 输出学生信息 void printAllStu( SeqList &L );

#endif #ifndef _SEQUENTIALLIST_ #define _SEQUENTIALLIST_

// 线性表的最大长度 #define MAXSIZE 1000

// 学生信息数组长度 #define INFOSIZE 30

// 学生类 struct Student { char number[ INFOSIZE ]; char name[ INFOSIZE ]; };

typedef Student DataType;

// 线性表类 struct SeqList { DataType data[ MAXSIZE ]; int length; // 表长 };

// 初始化线性表 void init( SeqList &L );

// 判断表是否为空,返回1表示为空,返回0表示非空 int isEmpty( const SeqList &L );

// 判断表是否已满,返回1表示已满,返回0表示未满 int isFull( const SeqList &L );

// 在表尾插入数据元素x,返回1表示插入成功,返回0表示插入失败 int insert( SeqList &L, DataType x );

// 在线性表L中检索值为x的数据元素,找得到返回元素序号,找不到返回0 int find( const SeqList &L, char* x );

// 删除第i个元素,返回1表示删除成功,返回0表示删除失败 int deleteElem( SeqList &L, int i );

// 输出指定位置的数据 void print( const SeqList &L, int i );

// 输出线性表的所有数据 void print( const SeqList &L );

#endif #include <cstring> #include <iostream> using namespace std;

#include "SequentialList.h"

// 初始化线性表 void init( SeqList &L ) { L.length = 0; }

// 判断表是否为空,返回1表示为空,返回0表示非空 int isEmpty( const SeqList &L ) { return L.length == 0; }

// 判断表是否已满,返回1表示已满,返回0表示未满 int isFull( const SeqList &L ) { return L.length == MAXSIZE; }

// 在表尾插入数据元素x,返回1表示插入成功,返回0表示插入失败 int insert( SeqList &L, DataType x ) { // 如果表空间已满,不能插入 if( isFull( L ) ) return 0;

L.data[ L.length ] = x ; // 新元素插入 L.length++; // 表长加1

return 1; }

// 在线性表L中检索值为X的数据元素,找得到返回元素序号,找不到返回0 int find( const SeqList &L, char* x ) { int i; for( i=0; i<L.length; i++ ) if( strcmp( L.data[i].number, x ) == 0 ) return i+1;

cout << "查无此人" << endl; return 0; }

// 删除第i个元素,返回1表示删除成功,返回0表示删除失败 int deleteElem( SeqList &L, int i ) { if( isEmpty( L ) ) { cout << "删除失败" << endl; return 0; }

// 判断删除位置的合法性 if( i<1 || i>L.length ) { cout << "删除失败" << endl; return 0; }

int j; for( j=i; j<L.length; j++ ) L.data[ j-1 ] = L.data[ j ];

L.length--; return 1; }

// 输出指定位置的数据 void print( const SeqList &L, int i ) { cout << L.data[ i-1 ].number << "\t" << L.data[ i-1 ].name << endl; }

// 输出线性表的所有数据 void print( const SeqList &L ) { int i; for( i=1; i<=L.length; i++ ) print( L, i ); } #include <iostream> using namespace std;

#include "StudentManager.h"

// 输出菜单 void printMenu() { cout <<"\n---------------班级学生信息管理---------------" << endl << "-- --" << endl << "-- 1. 增加学生信息 --" << endl << "-- 2. 删除学生信息 --" << endl << "-- 3. 查找学生信息 --" << endl << "-- 4. 输出学生信息 --" << endl << "-- 5. 退出 --" << endl << "-- --" << endl << "----------------------------------------------" << endl << "请选择:"; }

// 用户选择 int select() { // 清空输入缓冲区 cin.clear(); cin.sync();

int sel; cin >> sel; return sel; }

// 学号录入,用户欲再输入返回1,中止输入返回0 int inputNum( char* ch ) { cout << "\n提示:返回主菜单请在学号处输入 Q \n";

cout << "\n学号: "; cin >> ch; return stricmp( ch, "Q" ) != 0; }

// 姓名录入 void inputName( char* ch ) { cout << "姓名: "; cin >> ch; }

// 信息录入,用户欲再输入返回1,中止输入返回0 int input( Student& tmp ) { if( ! inputNum( tmp.number ) ) return 0;

inputName( tmp.name );

return 1; }

// 增加学生信息 void addStudent( SeqList &L ) { Student stu;

// 循环插入至用户中止输入 while( input( stu ) ) if( insert( L, stu ) ) cout << "----插入成功----\n"; else cout << "----插入失败----\n"; }

// 删除学生信息 void delStudent( SeqList &L ) { int index;

do { index = findStu( L );

if( index > 0 ) { deleteElem( L, index ); cout << "----删除成功----\n"; } } while( index != -1 ); // 循环删除至用户中止输入 }

// 查找学生信息(内部),找不到返回0,用户停止查找返回-1,否则返回元素位置 int findStu( SeqList &L ) { char tmp[INFOSIZE];

if( ! inputNum( tmp ) ) return -1;

int index = find( L, tmp );

if( index > 0 ) { cout << "\n学号\t姓名\n"; print( L, index ); }

return index; }

// 查找学生信息 void findStudent( SeqList &L ) { // 循环查找至用户中止输入 while( findStu( L ) != -1 ) ; }

// 输出学生信息 void printAllStu( SeqList &L ) { if( isEmpty( L ) ) cout << "\n没有学生\n"; else { cout << "\n学号\t姓名\n"; print( L ); } } #include <cstdlib>

#include "StudentManager.h"

int main(void) { // 定义并初始化顺序表 SeqList L; init( L );

while( 1 ) { // 输出菜单 printMenu();

// 用户选择 switch( select() ) { case 1: addStudent( L ); break; // 增加学生信息 case 2: delStudent( L ); break; // 删除学生信息 case 3: findStudent( L ); break; // 查找学生信息 case 4: printAllStu( L ); break; // 输出学生信息 default: exit(0); // 退出 } }

return 0; }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
自信 源于什么?
19860727农历
dnf装备挂在哪下载
牧羊犬40多天打的是什么针啊?
刚买的N79通话问题
喜相逢小食府在哪里啊,我有事要去这个地方
DNF为什么会接受频道失败
喝咖啡会变老么
如何避免电脑对人体的辐射又保证正常使用电脑
QQ游戏里的新中国象棋为什么对方会不动
如何看自己属于北斗七星中的哪个命格?比如破
雷记八珍粉我想知道这个在什么地方
全州有几个乡镇?
怎么区分保暖内衣的好坏?那个牌子的保暖?
大清後宮之還君明珠安雪塵吹的蕭曲叫什麼名字
推荐资讯
合天空套大约需要多少钱?
哪里有紫色蒲公英?
洗热水澡会减少月经量吗?
莪的QQ拼音怎么不曾加速过。一直是会员在加速
YY黄马怎么修改父频道的名字?!
下列一组按某种规律排列的数:1,-2,4,-8,
皇宫的皇帝能开红杀么
DNF46级圣骑士 去哪里升级较好??
谁有s60 V3手机QQ2009破解版下载地址?
求AutoCAD 2010注册机下载地址(要16位数的)
绅士是怎么塑造出来的~?
想学FLASH,但好像不容易学,是不是很难啊
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?