大一课设xxx管理系统, 简单修改即可食用 0.0
c-free 编译通过,其他的没试程序只有简单的增、删、查、改的功能,不符合条件的自行修改,代码已经最大化的注释和精简,放心食用
{:5_91:}
/*
* 作者:xiaoc
* 转载请注明出处
*/
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
#define BUFTONULL while(getchar() != '\n'); // 清空输入的多余非回车字符
#define CLEARSCREEN BUFTONULL system("cls"); // 清空当前屏幕,顺便清空输入的多余非回车字符
struct record // 这是一条包含 编号,姓名 的一条记录
{
string ID;
string name;
record *next;
};
record *myRecord = NULL; // 指向头节点的指针,(因为还没有记录)初始化为NULL
void increaseRecord(); //增加记录
void removeRecord(); //移除记录
void modifyRecord(); //修改记录
void lookupRecord(); //查找记录(按照ID查找)
void printAll(); // 该函数会遍历链表,并将所以记录进行打印
void printOne(const record); // 该函数将打印一条记录 参数是一个结构变量
record* findID(record *,string); //查找一条记录,返回指向该记录的指针,否则返回NULL 参数为要查找的ID ,和查找的初始指针 (不好解释,自己体会)
int main() // ******************************程序将从这里开始执行 **************************************
{
system("title xxx管理系统,转载请注明出处");
while(TRUE)
{
cout << " 请选择...\n"
<< " 1 .新 记 录\n"
<< " 2 .修改记录\n"
<< " 3 .删除记录\n"
<< " 4 .查询记录\n"
<< " 5 . 打印所有记录\n"
<< " 6 . 退出\n\n >> ";
switch(getchar())
{
case '1':{
increaseRecord();
}break;
case '2':{
modifyRecord();
}break;
case '3':{
removeRecord();
}break;
case '4':{
lookupRecord();
}break;
case '5':{
printAll();
}break;
case '6':{
return 0;
}
default: cout << "请重新选择 ..."; Sleep(500);
}
CLEARSCREEN
}
return 0;
}
void increaseRecord()
{
system("cls");
record *p = new record; // 此处可以用malloc ,为了简洁,本程序用new
cout << "请按照 编号 姓名 格式录入一条记录:\n >> ";
cin >> p->ID >> p->name;
p->next = myRecord; // 链表节点的添加
myRecord = p;
cout << "成功录入一条记录 ....";
Sleep(500); // 为了让用户看到上面的提示,延时500毫秒 也可以使用 getchar()
}
void removeRecord()
{
system("cls");
cout << "输入你要移除的记录的编号,如果找到记录,我们会将其从列表移除:\n >> ";
string ID;
cin >> ID;
record *p = findID(myRecord, ID);
if(p == NULL)
{
cout << "没有找到符合条件的记录 ...";
BUFTONULL
return;
}
else
{
record *rp = p -> next;
delete(p);
p = rp;
cout << "成功移除一条记录 ...";
Sleep(500); // windows.h 里面的延时函数,参数为毫秒
}
}
void modifyRecord()
{
system("cls");
cout << "输入你要修改的记录的编号:\n >> ";
string ID;
cin >> ID;
record *p = findID(myRecord,ID);
if(p != NULL)
{
cout << "找到该记录,请重新录入该条记录的信息:\n >> ";
cin >> p->ID >> p->name;
}
cout << "修改成功,回车键继续 ....";
BUFTONULL
}
void lookupRecord()
{
system("cls");
cout << "输入要查找的记录ID:\n >> ";
string ID;
cin >> ID;
record *p = findID(myRecord,ID); // 这里打印所有符合条件的记录信息
if(p != NULL)
{
cout << "找到记录 :";
printOne(*p);
}
else
{
cout << "没有找到记录";
}
cout << "\n按回车键继续 ....";
BUFTONULL
}
void printAll()
{
system("cls");
record *p = myRecord;
cout << "所有记录如下:\n\n";
while(p != NULL) // 遍历链表,打印所有记录
{
printOne(*p); // 打印一条记录 参数为指向该记录的结构
p = p->next;
}
cout << "按回车键记录 ....";
BUFTONULL
}
void printOne(const record red)
{
cout << "编号: " << red.ID << "\t姓名: " << red.name << "\n"; // 若记录结构发生改变,要打印请修改此处
}
record* findID(record *p,string ID)
{
while(p != NULL) // 同样,遍历链表,找到符合条件的记录并返回
{
if(p->ID.compare(ID) == 0) return p;
p = p->next;
}
return NULL; // 若上面没有返回,则没有找到记录,返回NULL
}
static/image/hrline/man.gif
作者:xiaoc
转载请注明出处
1
谁的高 谢谢
页:
[1]