1. 首页 > 科技

asp.net mvc 中怎么给普通方法定义特性获取返回值并处理?(問問中 第一次设置擅长领域可以增加經驗還是職分)

asp mvc 中怎么给普通方法定义特性获取返回值并处理?(問問中 第一次设置擅长领域可以增加經驗還是職分)

問問中 第一次设置擅长领域可以增加經驗還是職分

20!

设学生信息含学号、姓名和成绩3个数据,请按如下要求编程处理某教学

// 商品信息管理.cpp : 定义控制台应用程序的入口点。

//

// 小型商品信息管理系统.cpp : 定义控制台应用程序的入口点。

//编译环境VS2008

//#include "stdafx.h"

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

//定义结构体

typedef struct goods{

string name;//商品名

string number;//商品编号

string area_of_producting;//出产地

string the_date_of_purchase;//进货日期

string sales_man;//进货商

int price;//商品单价

int stocks;//库存量

struct goods *next;

int i;//记录商品原始节点位置

goods() {//构造函数

name="\0";

number="\0";

area_of_producting="\0";

the_date_of_purchase="\0";

sales_man="\0";

price=0;

i=0;

next=NULL;

}

}Goods;

//函数声明

Goods* Search_the_massage_of_Goods(Goods* );

Goods* Delete_link_node(Goods *);

Goods* Insert_link_node(Goods*);

Goods* Create_link_node(Goods* );

Goods* Create_head();

void Input_the_massage_of_Goods(Goods *);

Goods* Sort_link_node(Goods *);

void Write_the_massage_of_one_Good_to_file(Goods *);

Goods* Read_the_massage_of_Goods_from_system();

int exist(char *file) ;

//主函数

int main(){

while(1){

char ch='0';

Goods *p,*pr;

Goods *head=Read_the_massage_of_Goods_from_system();

system("color A9");

cout<<"_____________________________________________\n";

cout<<(char)2<<"输入相应数字执行相应操作."<<(char)2<<"\n";

cout<<"1.录入商品信息"<<(char)2<<"\n";

cout<<"2.删除商品信息"<<(char)2<<"\n";

cout<<"3.查询商品信息"<<(char)2<<"\n";

cout<<"4.修改商品信息"<<(char)2<<"\n";

cout<<"5.插入商品信息"<<(char)2<<"\n";

cout<<"6.排序"<<(char)2<<"\n";

cout<<"7.退出"<<(char)2<<"\n";

cout<<"_____________________________________________\n";

for(;ch>'7'|| ch<'1';ch=_getch());

system("cls");

switch(ch){

case '1':

p=Create_link_node(head);

cout<<"是否立即写入商品信息 Y/N\n";

char ch;

for(;ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n';ch=_getch());

if(ch=='y'||ch=='Y') Input_the_massage_of_Goods(p);

Write_the_massage_of_one_Good_to_file(p);//将信息写入文件

break;

case '2':

Delete_link_node(head);

break;

case '3':

Search_the_massage_of_Goods(head);

break;

case '4':

cout<<"查询要修改的商品\n";

pr=Search_the_massage_of_Goods(head);

Input_the_massage_of_Goods(pr);

break;

case '5':

Insert_link_node(head);

break;

case '6':

Sort_link_node(head);

break;

case '7':

exit(1);

break;

}

}

return 0;

}

Goods* Delete_link_node(Goods *head){

Goods *p,*pr;

cout<<"查询要删除的节点\n";

p=Search_the_massage_of_Goods(head);

if(p==head){

p=head;

head=p->next;

free(p);

}

else if(p->next=NULL){

for(pr=head;pr->next!=p;pr=pr->next);

free(pr);

pr=NULL;

p=NULL;

}

else{

for(pr=head;pr->next!=p;pr=pr->next);

pr->next=p->next;

free(p);

p=NULL;

}

return head;

}

//创建头节点,返回头节点的指针

Goods* Create_head(){

Goods *head;

head=new Goods();

head->i=1;

head->next=NULL;

return head;

}

//新建节点,传入头指针,如果头指针为空,将新建节作为头节点,否则将新建节

//插入至链表末尾,返回头指针

Goods* Create_link_node(Goods* head){

Goods *p,*pr;

p=new Goods();

(p->i)++;

if(head==NULL){

head=p;

}

else{

for(pr=head;pr->next!=NULL;pr=pr->next);

pr->next=p;

}

return head;

}

//新建节点,传入头指针,调用查询函数,插入节点至查询到的函数的前一节点

Goods* Insert_link_node(Goods*head){

Goods *pr,*p,*temp;

p=new Goods();

if(p==NULL)

{

cout<<"No enough mrmory!\n";

exit(0);

}

p->next=NULL;

if(head==NULL)

head=p;

else

{

cout<<"插入节点至查询到的函数的前一节点\n";

pr=Search_the_massage_of_Goods(head);

if(pr==head)

{

p->next=head;

head=p;

}

else

{

for(temp=head;temp->next==pr;temp=temp->next);

p=temp->next;

pr=p->next;

}

}

return head;

}

//传入头指针,调用查询函数,查询相应要删除的节点,返回头指针

Goods* Search_the_massage_of_Goods(Goods* head){

Goods *p=NULL,*q;

while(1){

cout<<"__________________________________________\n";

cout<<"输入相应数字执行相应查询操作 \n";

cout<<"1.按商品名查询\n";

cout<<"2.按商品编号查询\n";

cout<<"按其余任意键退出\n";

cout<<"__________________________________________\n";

string s;

char ch='0';

for(;ch!='1'&&ch!='2';ch=_getch());

switch(ch){

case '1':

cout<<"请输入要查询的商品名";

cin>>s;

for(p=head,q=NULL;p->next!=NULL;p=p->next){

if(s!=p->number) q=p;

}

if(q==NULL) {

cout<<"未查找到,请确认是否录入该商品\n";

break;

}

else

cout<<"\n商品名:"<name<<"\n商品编号:"<number<<"\n出产地:"<area_of_producting<<"\n进货商:"<sales_man<<"\n库存量:"<stocks<<"\n进货日期:"<the_date_of_purchase;

break;

case '2':

cout<<"请输入要查询的商品编号";

cin>>s;

for(p=head,q=NULL;p->next!=NULL;p=p->next){

if(s!=p->number) q=p;

}

if(q==NULL) {

cout<<"未查找到,请确认是否录入该商品\n";

break;

}

else

cout<<"商品名"<name<<"商品编号"<number<<"出产地"<area_of_producting<<"进货商"<sales_man<<"库存量"<<"进货日期"<stocks<the_date_of_purchase;

break;

default:

goto a;

break;

}

p->next=NULL;

}

a:;

return p;

}

void Input_the_massage_of_Goods(Goods *p){

cout<<"请输入商品编号";

getline(cin,p->number);

cout<<"请输入商品名称";

getline(cin,p->name);

cout<<"请输入商品出产地";

getline(cin,p->area_of_producting);

cout<<"请输入商品进货日期,中间用‘-’隔开";

getline(cin,p->the_date_of_purchase);

cout<<"请输入商品进货商";

getline(cin,p->sales_man);

cout<<"请输入商品库存量";

cin>>p->stocks;

cout<<"请输入商品单价";

cin>>p->price;

system("cls");

}

//输入函数,将商品信息存储到文件中,便于下次文件的初始化读写,传入新建节点的指针,将其内容写入文件末尾

void Write_the_massage_of_one_Good_to_file(Goods *p){

if(exist("the_massage_of_Goods.txt")==0) {

ofstream rfile("the_massage_of_Goods.txt",ios::out);

rfile.close();

} //如果文件不存在,则重新创建一个文件

ofstream file("the_massage_of_Goods.txt",ios::ate|ios::in);

//)用 ate 方式打开一个已存在的文件,文件指针自动移到文件末尾,数据可以写入到其中。

//用 in 方式打开文件只能用于输入数据,而且该文件必须已经存在

if(!file){//如果文件不存在

cout<< "不可以打开文件"<<endl;

exit(1);

}

//写文件

file<i<<' '<name<<' '<number<<' '<sales_man<<' '<stocks<<' '<area_of_producting<<' '<price<<' '<stocks<<'\n';

p->next=NULL;

//关闭文件

file.close();

}

//在程序打开时将信息从文件读入,初始化信息

Goods* Read_the_massage_of_Goods_from_system(){

if(exist("the_massage_of_Goods.txt")==0) {

ofstream rfile("the_massage_of_Goods.txt",ios::out);

rfile.close();

} //如果文件不存在,则重新创建一个文件

Goods *p,*head=Create_head();

ifstream rfile("the_massage_of_Goods.txt",ios::in); //in 方式打开文件只能用于输入数据,而且该文件必须已经存在

if(!rfile){

cout<< "不可以打开文件"<<endl;

exit(1);

}

string str;

for(p=head;getline(rfile,str);p->next=NULL){

istringstream sin(str);

sin>>p->i>>p->name>>p->number>>p->sales_man>>p->stocks>>p->area_of_producting>>p->price;

p=p->next;

p=new Goods();

}

rfile.close();

return head;

}

//判断文件是否存在

int exist(char *file) //传入想要判断的路径字符串指针

{

FILE *fp;

fp=fopen(file,"r"); //fopen是一个C库函数,用于打开文件,"r"是只读模式,在这种模式下,如果文件存在,则能成功以只读模式打开,fopen返回一个非0的文件描述符,如果文件不存在,则fopen返回NULL(NULL意思是空)。正好可以利用这一点来判断文件是否存在

if(fp==NULL)

return 0; //不存在返回0

else

{

fclose(fp); //存在的话,要先把之前打开的文件关掉

return 1; //然后返回1

}

}

//排序函数,传入节点头指针,该函数要实现按商品单价排序和按商品库存量排序返回头指针

Goods* Sort_link_node(Goods *head)

{

cout<<"========================================"<<endl;

cout<<"输入相应数字执行操作:"<<endl;

cout<<"1:按价格进行排序;"<<endl;

cout<<"2:按库存量进行排序。"<<endl;

cout<<"========================================"<<endl;

Goods *p,*pr,*temp;

char a;

for(;a'2';a=_getch());

if(a=='1')

{

cout<<"输入1:按价格升序排序;"<<endl;

cout<<"输入2:按价格降序排序。"<<endl;

char b;

b=_getch();

if(b=='1')

{

for(p=head;p!=NULL;p=p->next)

{

for(pr=p->next;pr!=NULL;pr=pr->next)

{

if(p->price>pr->price)

{

temp=p;

p=pr;

pr=temp;

}

}

}

}

else if(b=='2')

{

for(p=head;p!=NULL;p=p->next)

{

for(pr=p->next;pr!=NULL;pr=pr->next)

{

if(pr->price>p->price)

{

temp=p;

p=pr;

pr=temp;

}

}

}

}

}

else if(a=='2')

{

cout<<"输入1:按库存量升序排序;"<<endl;

cout<<"输入2:按库存量降序排序。"<<endl;

char b;

for(;b'2';b=_getch());

if(b=='1')

{

for(p=head;p!=NULL;p=p->next)

{

for(pr=p->next;pr!=NULL;pr=pr->next)

{

if(p->stocks>pr->stocks)

{

temp=p;

p=pr;

pr=temp;

}

}

}

}

else if(b=='2')

{

for(p=head;p!=NULL;p=p->next)

{

for(pr=p->next;pr!=NULL;pr=pr->next)

{

if(pr->stocks>p->stocks)

{

temp=p;

p=pr;

pr=temp;

}

}

}

}

}

return head;

}

补充:

这是前段时间写的一个商品信息管理的,你看着改改吧,如果用微信的话扫描二维码关注我订阅号啊然后再加我qq2466557844,有问题再问我吧

设学生信息含学号、姓名和成绩3个数据,请按如下要求编程处理某教学班(例如30人)学生的数据。

1。 struct Student { char name[];//char *name; …… } struct Student st[3]; 2。 static int i; char *s; for(i=0;i<3;i++) { scanf("%s",st[i].name); scanf("%s",st[i].其他属性); …… } 3。排序调用一个方法(调用之前先定义) void render() { s=st[0]; for(i=0;i<3;i++) { if(strcmp(st[i],st[i+1])>0) { s=*st[i]; st[i]=st[i+1]; st[i+1]=s; } } } (后面返回到那个文件不太清楚。还有如果出现问题,可能标点符号中英文有点不清)

如何获取类或属性的自定义特性

1. 定义一个以Attribute结尾的特性类, 特性类继承自System.Attribute, 如下所示.

[AttributeUsage(AttributeTargets.Property, AllowMultiple=false)]

public class PrimaryKeyAttribute : System.Attribute

{

.............

其中AttributeTargets是一个枚举的值, 可以是: Assembly | Module | Class | Struct | Enum | Constructor | Method | Property | Field | Event | Interface | Parameter | Delegate

2. 在需要使用的地方使用PrimaryKey自定义特性标签, 如下所示.

[PrimaryKey(Column = "CustomerID", IsIdentity=false)]

public int ID

{

.............

3. 为了获取自定义特性的信息, 需要反射的方式获取其数据, 首先我们定义一个类来存储这些信息, 如下所示

public class PrimaryKeyModel

{

private readonly PropertyInfo propertyInfo;//外键的属性字段信息

private readonly PrimaryKeyAttribute primaryKeyAtt;//外键的特性信息

................

public static PrimaryKeyModel GetPrimaryKey(Type type)

{

PropertyInfo[] properties = type.GetProperties();

foreach (PropertyInfo p in properties)

{

object[] keys = p.GetCustomAttributes(typeof(PrimaryKeyAttribute), true);

if (keys.Length == 1)

{

return new PrimaryKeyModel(p, keys[0] as PrimaryKeyAttribute);

}

}

return null;

}

4. 在Customer类中获取其特性的信息代码如下

string strReturn = string.Empty;

//Get PrimaryKey Name

PrimaryKeyModel attribute= PrimaryKeyModel.GetPrimaryKey(this.GetType());

if(attribute != null)

{

strReturn += string.Format("PrimaryKey Name:{0} IsIdentity:{1} Column:{2}\r\n",

attribute.Property.Name, attribute.PrimaryKeyAtt.IsIdentity, attribute.PrimaryKeyAtt.Column);

}